本文介绍如何使用AI开源框架 LangGraph,集成调用DeepSeek大模型,实现AI对话功能,并给出Python示例代码。
一、LangGrap是什么
LangGrap:LangGrap是一个用于构建可控代理的低级编排框架。langchain 提供集成和可组合组件来简化 LLM 应用程序开发,而 LangGraph 库则支持代理编排,提供可定制的架构、长期内存和人机协同功能,以可靠地处理复杂任务。LangGraph 专为希望构建功能强大、适应性强的 AI 代理的开发人员而构建。虽然 LangGraph 可以独立使用,但它也可以与任何 LangChain 产品无缝集成,为开发人员提供一整套用于构建代理的工具。
二、前提条件
1、Python运行环境安装。建议使用Python3.10以上版本,本示例使用了 Python 3.12.9版本。
2、Python开发工具安装。本人是vue\Java\python多种语言开发,所以使用了 IntelliJ IDEA开发工具。读者可以根据个人习惯选择合适的Python开发工具,比如:PyCharm、VS Code。
3、注册DeepSeek,获得api_key。访问deepseek的AI开放平台完成注册:https://platform.deepseek.com。
三、代码实现
1、创建python工程
首先,通过开发工具创建一个python工程。这一步很简单,不再描述。
接着,激活虚拟环境。在项目根目录下,并通过以下命令创建并激活虚拟环境:
python -m venv venv #有的环境下命令是python3或者py
.\venv\Scripts\activate #windows下的激活命令
注意:如果是通过IDEA工具创建的Python工程,默认会创建并激活venv虚拟环境,就不再需要手动创建了。
2、pip安装依赖包
本示例使用LangGraph和DeepSeek,所以需要先安装这两个依赖包。
在虚拟环境命令窗口执行:
pip install -U langgraph
pip install -U langchain-deepseek
3、开发python代码
通过Python开发工具,创建一个python文件,命名为langgraph-deepseek.py。源代码如下:
from typing import Annotated
from langchain_deepseek import ChatDeepSeek
from typing_extensions import TypedDict
from langgraph.graph import StateGraph
from langgraph.graph.message import add_messages
class State(TypedDict):
messages: Annotated[list, add_messages]
# 初始化状态图
graph_builder = StateGraph(State)
# 初始化 DeepSeek 大模型客户端
llm = ChatDeepSeek(
model="deepseek-chat", # 指定 DeepSeek 的模型名称
api_key="sk-e508ba61639640848060a1a2c1ee7b17" # 替换为您自己的 DeepSeek API 密钥
)
def chatbot(state: State):
# 调用 DeepSeek 大模型生成回复
return {"messages": [llm.invoke(state["messages"])]}
# 添加节点到状态图
graph_builder.add_node("chatbot", chatbot)
graph_builder.set_entry_point("chatbot") # 设置入口点
graph_builder.set_finish_point("chatbot") # 设置结束点
# 编译状态图
graph = graph_builder.compile()
def stream_graph_updates(user_input: str):
# 构造对话历史,包含系统提示词和用户输入
messages = [
{"role": "system", "content": "你是一个有创意的助手,擅长根据用户问题提供有趣且相关的内容。输出内容长度不超过100个字。"},
{"role": "user", "content": user_input},
]
# 流式输出模型生成的回复
for event in graph.stream({"messages": messages}):
for value in event.values():
print("Assistant:", value["messages"][-1].content)
while True:
try:
# 获取用户输入
user_input = input("User: ")
if user_input.lower() in ["quit", "exit", "q"]:
print("Goodbye!")
break
# 调用流式更新函数
stream_graph_updates(user_input)
except Exception as e:
# 捕获异常并提供默认输入
print("发生错误,尝试默认问题...")
user_input = "What do you know about LangGraph?"
print("User: " + user_input)
stream_graph_updates(user_input)
break
四、测试运行
运行该python文件,进行AI对话: