| title | useCopilotReadable |
|---|---|
| description | A hook for providing app-state & other information to the Copilot. |
{/* GENERATE-DOCS path=packages/react-core/src/hooks/use-copilot-readable.ts hook=useCopilotReadable */}
useCopilotReadable is a React hook that provides app-state and other information
to the Copilot. Optionally, the hook can also handle hierarchical state within your
application, passing these parent-child relationships to the Copilot.
const myAppState = ...; useCopilotReadable({ description: "The current state of the app", value: myAppState });
</RequestExample>
In its most basic usage, useCopilotReadable accepts a single string argument
representing any piece of app state, making it available for the Copilot to use
as context when responding to user input.
For example:
```jsx simple state example
import { useCopilotReadable } from "@copilotkit/react-core";
const userName = "Rust Cohle";
useCopilotReadable({
description: "The name of the user",
value: userName
});
You can also pass in an object representing your app state, for example:
import { useCopilotReadable } from "@copilotkit/react-core";
const myAppState = {
userName: "Rust Cohle",
userAddress: {
street: "4500 Old Spanish Trail",
city: "New Orleans",
state: "LA",
zip: "70129"
}
};
useCopilotReadable({
description: "The current state of the app",
value: myAppState
});Optionally, you can maintain the hierarchical structure of information by passing
parentId:
import { useCopilotReadable } from "@copilotkit/react-core";
function Employee(props: EmployeeProps) {
const { employeeName, workProfile, metadata } = props;
// propagate any information copilot
const employeeContextId = useCopilotReadable({
description: "Employee name",
value: employeeName
});
// Pass a parentID to maintain a hierarchical structure.
// Especially useful with child React components, list elements, etc.
useCopilotReadable({
description: "Work profile",
value: workProfile.description(),
parentId: employeeContextId
});
useCopilotReadable({
description: "Employee metadata",
value: metadata.description(),
parentId: employeeContextId
});
return (
// Render as usual...
);
}