LangGraph-agent 系列之1 ——结合大模型
·
使用pycharm工具
1 在工程目录下,配置.env文件信息
DEEPSEEK_API_KEY=
LANGSMITH_TRACING=true
LANGSMITH_API_KEY=
LANGSMITH_PROJECT=agent
DASHSCOPE_API_KEY=
OPENWEATHER_API_KEY=
2. 加载头文件
python
运行
# 导入类型提示工具,用于定义状态结构(TypedDict)和列表类型(List)
from typing import TypedDict, List
# 导入LangChain的消息类型,用于封装人类输入的消息
from langchain_core.messages import HumanMessage
# 导入LangGraph组件,用于构建状态图和定义流程节点
from langgraph.graph import StateGraph, START, END
# 导入dotenv工具,用于从.env文件加载环境变量(如API密钥)
from dotenv import load_dotenv # 用来从.env文件中加载配置信息,比如API_KEY
# 导入LangChain的通用模型初始化工具,用于创建聊天模型实例
from langchain.chat_models import init_chat_model # LangChain中用于初始化聊天模型的导入语句,主要用于便捷地创建符合LangChain接口规范的大语言模型(LLM)或聊天模型实例
3. 加载大模型
# 加载.env文件中的环境变量(需确保文件中包含模型所需的API密钥等配置)
load_dotenv()
# 初始化DeepSeek聊天模型
llm = init_chat_model(
"deepseek-chat", # 模型名称(需与模型提供商的定义一致)
temperature=0.7 # 输出随机性参数(0-1,值越高回复越灵活)
) # 其他参数(如温度、最大tokens等)
4. 定义图状态类型,定义节点的处理函数,由大模型回复x['message']中的信息,得到response,打印response
# 定义状态结构(图中流转的数据载体)
class State(TypedDict):
message: List[HumanMessage] # 存储人类消息列表(用于在节点间传递对话内容)
def process(x: State) -> State:
"""处理节点:接收消息并调用模型生成回复"""
# 调用模型处理状态中的消息列表
response = llm.invoke(x['message'])
# 打印AI的回复内容
print(f'\nAI:{response.content}')
# 返回原始状态(未修改状态,仅处理消息)
return x
5. 定义图中的节点和边
# 创建状态图构建器,关联State结构(定义图中数据格式)
graph_builder = StateGraph(State)
# 添加处理节点:节点名为"a",绑定process函数
graph_builder.add_node("a", process)
# 定义流程路径:从系统内置的START节点→"a"节点
graph_builder.add_edge(START, "a")
# 定义流程终点:"a"节点→系统内置的END节点
graph_builder.add_edge("a", END)
6. 生成能执行的智能体,接收用户的输入,并给用户输出
# 编译图结构,生成可执行的智能体(agent)
agent = graph_builder.compile()
# 接收用户初始输入
user_input = input("Enter:")
# 对话循环:持续接收用户输入,直到输入"exit"退出
while user_input != 'exit':
# 调用智能体处理用户输入:将输入包装成HumanMessage列表,符合State结构要求
agent.invoke({"message": [HumanMessage(content=user_input)]})
# 提示用户输入下一条消息或退出
user_input = input("Enter: if you want to exit,please enter 'exit' ")
7. 代码核心说明
- 环境配置:通过
load_dotenv()加载.env文件中的 API 密钥等敏感信息,避免硬编码。 - 状态管理:使用
State(TypedDict)定义数据结构,存储对话消息列表,确保消息在流程中完整传递。 - 模型初始化:通过
init_chat_model创建 DeepSeek 聊天模型实例,配置随机性参数temperature。 - 流程设计:构建简单的线性状态图(
START→a节点→END),其中a节点负责调用模型处理消息并生成回复。 - 交互逻辑:通过
while循环实现与用户的持续对话,用户输入 "exit" 时终止程序。 - 引入大模型:在process函数中,用到了大模型来回复用户的信息
更多推荐

所有评论(0)