Spaces:
Sleeping
Sleeping
| import operator | |
| from typing import Annotated, List | |
| from typing_extensions import TypedDict | |
| from langchain_core.messages import AnyMessage | |
| from langgraph.graph import StateGraph, END | |
| # 从我们的组件文件中导入模型补全节点 | |
| from comp import completion_node | |
| # --- 图状态定义 --- | |
| # 状态是我们图的内存或上下文。它是一个字典, | |
| # 保存了对话过程中交换的所有消息。 | |
| class GraphState(TypedDict): | |
| """ | |
| 表示我们图的状态。 | |
| Attributes: | |
| messages: 一个随时间自动累积的消息列表。 | |
| `operator.add` 注解告诉 LangGraph 将新消息附加到此列表, | |
| 而不是覆盖它。这就是图如何维护对话历史(上下文)的方式。 | |
| """ | |
| messages: Annotated[List[AnyMessage], operator.add] | |
| # --- 图工作流构建 --- | |
| # 使用我们定义的状态创建一个新的状态图 | |
| workflow = StateGraph(GraphState) | |
| # 将补全节点添加到图中。我们将其命名为 “llm”。 | |
| # 这个节点负责调用语言模型。 | |
| workflow.add_node("llm", completion_node) | |
| # 设置图的入口点。第一个被调用的节点是 “llm”。 | |
| workflow.set_entry_point("llm") | |
| # 从 “llm” 节点到 END 添加一条简单的边。 | |
| # 这意味着在调用 LLM 后,图的执行就完成了。 | |
| workflow.add_edge("llm", END) | |
| # 将工作流编译成一个可运行的应用。 | |
| app = workflow.compile() | |