AI agent案例汇总:基于 LangGraph 的智能对话 Agent 实现
实现了一个具备记忆功能和工具调用能力的智能对话 Agent,基于 LangChain 框架构建,可实现天气查询、数学运算两大核心功能,同时支持多轮对话记忆。代码中初始化了大模型并配置相关参数,通过装饰器定义工具函数,让 Agent 能够根据用户需求,自动调用对应工具完成天气查询和数学计算任务;同时引入对话历史存储机制,确保 Agent 能记住过往对话内容,实现自然、连贯的多轮交互,整体流程清晰,既保留了 AI 的对话能力,又通过工具调用拓展了实际应用场景,可满足用户多样化的查询需求。
# 导入大模型统一调用接口
from langchain_openai import ChatOpenAI
# 自定义工具的装饰器(@tool:把函数变为AI工具)
from langchain_core.tools import tool
# 提示词的模板 + 历史消息占位符(做记忆必须用)
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
# 对话历史存储器(有的是聊天记录)
from langchain_community.chat_message_histories import ChatMessageHistory
from langchain_core.runnables.history import RunnableWithMessageHistory
# 创建agent(会思考, 会调用工具)
from langgraph.prebuilt import create_react_agent
# 1:自定义工具
@tool
def get_weather(city:str) -> str:
"""
查询指定城市的天气
"""
return f'{city}今天天气很好,气温39.9度。'
@tool
def cal(expr:str) -> str:
"""
做数学运算, 传入的是表达式
"""
return f'{eval(expr)}'
# 2:初始化大模型
llm = ChatOpenAI(
api_key="嘿嘿嘿嘿嘿", # 身份凭证(密钥)
model="deepseek-chat", # 调用的 DeepSeek 模型名称
base_url="嘿嘿嘿" # DeepSeek 模型接口地址(网页解析失败不影响接口调用)
)
# 工具列表
tools = [get_weather, cal]
# 3:创建支持工具的agent
agent = create_react_agent(llm, tools)
# 4: 配置对话记忆
# 存储会话历史
chat_history = ChatMessageHistory()
# 5给agent加上记忆功能
agent_with_history = RunnableWithMessageHistory(
agent,
lambda session_id: chat_history,
input_messages_key = "messages"
)
# 6多轮问话测试
# 第一轮问天气+计算
res1 = agent_with_history.invoke(
{"messages":[{"role":"user","content":"榆次天气怎么样,帮我算一下3*5"}]},
config = {"configurable":{"session_id":"user01"}}
)
print('第一轮回答:')
print(res1["messages"][-1].content)
print('*'*20)
# 第二轮利用记忆,说城市,表达式
res2 = agent_with_history.invoke(
{"messages":[{"role":"user","content":"我刚才问了那两个问题"}]},
config = {"configurable":{"session_id":"user01"}}
)
print('第二轮回答(带记忆):')
print(res2["messages"][-1].content) 描述一下这是在干什么,生动形象
