genkit
genkit copied to clipboard
Store arbitrary context in Flow AsyncLocalStorage
Because tools and flows are defined independently but are often interrelated in practice, it would be great to be able to set and retrieve arbitrary values from ALS. Something like:
import { setFlowContext, getFlowContext, defineFlow, defineTool, generate } from "genkit";
const findRestaurant = defineTool({
name: 'findRestaurant',
inputSchema: z.object({query: z.string()}),
async ({query}) => {
const userInfo = getFlowContext('userInfo');
return searchRestaurants(query, zipcode: userInfo.zipcode);
}
});
defineFlow({
name: 'chatbotFlow',
inputSchema: z.object({userInfo: UserInfoSchema}),
}, ({userInfo}) => {
setFlowContext('userInfo', userInfo);
generate({
// ...
tools: [findRestaurant],
});
});