可以是 EntrypointOptions 对象,或者是 entrypoint 的名称字符串
执行此 entrypoint 的函数
一个可以运行以执行工作流的 Pregel 实例
import { task, entrypoint } from "@langchain/langgraph";
import { MemorySaver } from "@langchain/langgraph-checkpoint";
import { interrupt, Command } from "@langchain/langgraph";
const composeEssay = task("compose", async (topic: string) => {
await new Promise(r => setTimeout(r, 1000)); // Simulate slow operation
return `An essay about ${topic}`;
});
const reviewWorkflow = entrypoint({
name: "review",
checkpointer: new MemorySaver()
}, async (topic: string) => {
const essay = await composeEssay(topic);
const humanReview = await interrupt({
question: "Please provide a review",
essay
});
return {
essay,
review: humanReview
};
});
// Example configuration for the workflow
const config = {
configurable: {
thread_id: "some_thread"
}
};
// Topic for the essay
const topic = "cats";
// Stream the workflow to generate the essay and await human review
for await (const result of reviewWorkflow.stream(topic, config)) {
console.log(result);
}
// Example human review provided after the interrupt
const humanReview = "This essay is great.";
// Resume the workflow with the provided human review
for await (const result of reviewWorkflow.stream(new Command({ resume: humanReview }), config)) {
console.log(result);
}
import { entrypoint, getPreviousState } from "@langchain/langgraph";
import { MemorySaver } from "@langchain/langgraph-checkpoint";
const accumulator = entrypoint({
name: "accumulator",
checkpointer: new MemorySaver()
}, async (input: string) => {
const previous = getPreviousState<number>();
return previous !== undefined ? `${previous } ${input}` : input;
});
const config = {
configurable: {
thread_id: "some_thread"
}
};
await accumulator.invoke("hello", config); // returns "hello"
await accumulator.invoke("world", config); // returns "hello world"
import { entrypoint, getPreviousState } from "@langchain/langgraph";
import { MemorySaver } from "@langchain/langgraph-checkpoint";
const myWorkflow = entrypoint({
name: "accumulator",
checkpointer: new MemorySaver()
}, async (num: number) => {
const previous = getPreviousState<number>();
// This will return the previous value to the caller, saving
// 2 * num to the checkpoint, which will be used in the next invocation
// for the `previous` parameter.
return entrypoint.final({
value: previous ?? 0,
save: 2 * num
});
});
const config = {
configurable: {
thread_id: "some_thread"
}
};
await myWorkflow.invoke(3, config); // 0 (previous was undefined)
await myWorkflow.invoke(1, config); // 6 (previous was 3 * 2 from the previous invocation)
使用
entrypoint
函数定义 LangGraph 工作流。函数签名
封装函数最多必须接受两个参数。第一个参数是函数的输入。第二个(可选)参数是 LangGraphRunnableConfig 对象。如果您希望向函数传递多个参数,可以将其作为对象传递。
辅助函数
流式传输
要将数据写入“自定义”流,请使用 getWriter 函数,或使用 LangGraphRunnableConfig.writer 属性。
状态管理
可以使用 getPreviousState 函数来访问在同一线程 ID 上上次调用 entrypoint 时返回的先前状态。
如果您希望保存除返回值以外的状态,可以使用 entrypoint.final 函数。