import { StateGraph, MessagesZodState, START } from "@langchain/langgraph";
import { z } from "zod";
const SubgraphState = z.object({
// highlight-next-line
subgraphMessages: MessagesZodState.shape.messages,
});
// Subgraph
const subgraphBuilder = new StateGraph(SubgraphState)
// highlight-next-line
.addNode("callModelFromSubgraph", async (state) => {
const response = await model.invoke(state.subgraphMessages);
return { subgraphMessages: response };
})
.addEdge(START, "callModelFromSubgraph");
// ...
// highlight-next-line
const subgraph = subgraphBuilder.compile();
// Parent graph
const builder = new StateGraph(MessagesZodState)
// highlight-next-line
.addNode("subgraphNode", async (state) => {
const response = await subgraph.invoke({
subgraphMessages: state.messages,
});
return { messages: response.subgraphMessages };
})
.addEdge(START, "subgraphNode");
const graph = builder.compile();
// ...
await graph.invoke({ messages: [{ role: "user", content: "hi!" }] });