cafe3310's picture
refactor: 重构项目结构并优化模型加载方式
551e9e2
raw
history blame
1.43 kB
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()