从0到1基于LangChain和DeepSeek的Agent开发案例(可运行版本)
新建agent虚拟环境(python=3.12.12);建议使用清华镜像安装相关依赖。xxx代表某个库附上博主的版本。
·
一、环境安装
新建agent虚拟环境(python=3.12.12);建议使用清华镜像安装相关依赖。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple langchain-core langchain-community
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple xxx xxx
xxx代表某个库
附上博主的版本
Package Version
------------------------ -----------
accelerate 1.11.0
aiofiles 24.1.0
aiohappyeyeballs 2.6.1
aiohttp 3.13.2
aiosignal 1.4.0
annotated-doc 0.0.4
annotated-types 0.7.0
anyio 4.11.0
attrs 25.4.0
brotli 1.2.0
certifi 2025.11.12
charset-normalizer 3.4.4
click 8.3.1
colorama 0.4.6
dataclasses-json 0.6.7
diffusers 0.35.2
distro 1.9.0
fastapi 0.121.2
ffmpy 1.0.0
filelock 3.20.0
frozenlist 1.8.0
fsspec 2025.10.0
gradio 5.49.1
gradio_client 1.13.3
greenlet 3.2.4
groovy 0.1.2
h11 0.16.0
hf-xet 1.2.0
httpcore 1.0.9
httpx 0.28.1
httpx-sse 0.4.3
huggingface-hub 0.36.0
idna 3.11
importlib_metadata 8.7.0
Jinja2 3.1.6
jiter 0.12.0
jsonpatch 1.33
jsonpointer 3.0.0
langchain 1.0.7
langchain-classic 1.0.0
langchain-community 0.4.1
langchain-core 1.0.5
langchain-openai 1.0.3
langchain-text-splitters 1.0.0
langgraph 1.0.3
langgraph-checkpoint 3.0.1
langgraph-prebuilt 1.0.4
langgraph-sdk 0.2.9
langsmith 0.4.43
markdown-it-py 4.0.0
MarkupSafe 3.0.3
marshmallow 3.26.1
mdurl 0.1.2
mpmath 1.3.0
multidict 6.7.0
mypy_extensions 1.1.0
networkx 3.5
numpy 2.3.4
openai 2.8.0
orjson 3.11.4
ormsgpack 1.12.0
packaging 25.0
pandas 2.3.3
pillow 11.3.0
pip 25.3
propcache 0.4.1
psutil 7.1.3
pydantic 2.11.10
pydantic_core 2.33.2
pydantic-settings 2.12.0
pydub 0.25.1
Pygments 2.19.2
python-dateutil 2.9.0.post0
python-dotenv 1.2.1
python-multipart 0.0.20
pytz 2025.2
PyYAML 6.0.3
regex 2025.11.3
requests 2.32.5
requests-toolbelt 1.0.0
rich 14.2.0
ruff 0.14.5
safehttpx 0.1.7
safetensors 0.6.2
semantic-version 2.10.0
setuptools 80.9.0
shellingham 1.5.4
six 1.17.0
sniffio 1.3.1
SQLAlchemy 2.0.44
starlette 0.49.3
sympy 1.14.0
tenacity 9.1.2
tiktoken 0.12.0
tokenizers 0.22.1
tomlkit 0.13.3
torch 2.9.1
torchvision 0.24.1
tqdm 4.67.1
transformers 4.57.1
typer 0.20.0
typing_extensions 4.15.0
typing-inspect 0.9.0
typing-inspection 0.4.2
tzdata 2025.2
urllib3 2.5.0
uvicorn 0.38.0
websockets 15.0.1
wheel 0.45.1
xxhash 3.6.0
yarl 1.22.0
zipp 3.23.0
zstandard 0.25.0
二、获取deepseek秘钥
访问DeepSeek官网DEEPSEEK_API_KEY=sk-your-key-here,购买1元试用一下。
三、基础对话机器人开发
代码示例:
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
# 使用 DeepSeek API(兼容 OpenAI 格式)
llm = ChatOpenAI(
model="deepseek-chat", # DeepSeek 模型名称
api_key="sk-xxxxxx", # DeepSeek API Key (填你自己的API key)
base_url="https://api.deepseek.com/v1" # DeepSeek API 地址
)
# 创建提示模板
prompt = ChatPromptTemplate.from_template(
"你是一位{role}。请用{style}风格回答:{question}"
)
# 创建处理链
chain = prompt | llm
# 调用模型
response = chain.invoke({
"role": "历史学家",
"style": "幽默风趣",
"question": "秦始皇为什么统一六国?"
})
print(response.content)
输出示例:
哈哈,这个问题问得好!作为一位“兼职相声演员”的历史学家,我这就用说书的调调给你讲讲秦始皇的“创业故事”。
**1. 祖传KPI压力大**
嬴政同学可不是白手起家——他继承的秦国,经过商鞅变法已经像一家开了挂的科技公司:绩效考核(军功爵制)、标准化生产(统一度量衡)、996工作制(耕战体系)。其他六国还在用PPT画饼,秦国已经搞出“灭国级APP”了。嬴总心想:“祖宗六代卷成这样,我不打个总决赛合适吗?”
**2. 中二病晚期患者的梦想**
这位老兄十三岁上岗,看着战国天天上演“七国互啄真人秀”,估计每天拍着桌子吐槽:“周天子连WiFi密码都管不了,你们还天天抢热搜!不如我建个超级群聊!” 毕竟“皇帝”这个网名是他首创,管理员权限必须独占。
**3. 地理老师的灵魂呐喊**
当时七国文字像不同方言的emoji,货币比盲盒还难收集,车道宽度堪比科目二地狱难度。嬴政看着快递员跨国送个文件要办七种签证,终于暴走:“统统给我改成秦国标准!以后全国只准发一种朋友圈字体!”
**4. 终极强迫症发作**
想象一下,嬴政每天看着地图,六国边界线像被猫抓过的毛线球。某天他终于忍无可忍,抄起毛笔把整个地图涂成一个颜色,舒了口气:“这下顺眼多了。” 后来还觉得不过瘾,连马车轮距都要全国统一,堪称人类史上最早推行“车同轨”的交通部长。
**5. 神秘玄学加持**
史书记载秦国使者晚上路过华阴,碰见神仙拿着玉璧说:“今年祖龙死。”结果那块玉璧竟是秦始皇自己巡游时扔江里的。可见他连神仙的剧本都想改,更何况凡间六国?统一后立刻跑到泰山封禅,基本等于向天庭群发邮件:“这个片区以后归我管了。”
**严肃补充**:当然啦,统一本质是历史进程与个人野心的共振。秦国具备军事制度优势,而嬴政以雷霆手段终结了五百余年乱世,虽然操作略显暴躁,但确实给后世留下了“书同文车同轨”的硬核遗产。就是加班太狠,秦朝很快过劳死了…(悄悄补刀:所以朋友们,统一大业虽好,可别学他拼命压榨劳动力啊!)
要我说,秦始皇就像个连夜赶完小组作业的学霸,最后拍着竹简对六国同学说:“你们的PPT太烂,今晚全组由我嬴公子买单!”
四、添加记忆功能
代码示例:
from langchain_core.runnables import RunnableLambda
from langchain_classic.memory import ConversationBufferMemory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.runnables import RunnablePassthrough
from langchain_openai import ChatOpenAI
# 1) 模型
model = ChatOpenAI(
model="deepseek-chat",
api_key="sk-xxxxxxx", # DeepSeek API Key (填你自己的API key)
base_url="https://api.deepseek.com/v1"
)
# 2) 记忆(return_messages=True 以输出消息对象列表)
memory = ConversationBufferMemory(memory_key="history", return_messages=True)
# 3) 提示模板(含系统、历史占位符、用户输入)
prompt = ChatPromptTemplate.from_messages([
("system", "你是一个专业的技术顾问:回答简洁明确、必要时主动追问、使用Markdown。"),
MessagesPlaceholder(variable_name="history"),
("human", "{input}"),
])
# 4) 构建链:加载历史 -> 注入模板 -> 调用模型
chain = (
RunnablePassthrough.assign(
history=RunnableLambda(lambda x: memory.load_memory_variables(x)["history"])
# 或:RunnableLambda(memory.load_memory_variables) | itemgetter("history")
)
| prompt
| model
)
# 5) 交互循环(手动保存本轮上下文)
while True:
user_input = input("你:").strip()
if not user_input:
continue
if user_input.lower() in {"exit", "退出"}:
break
try:
# 调用链,输入为 {"input": "..."},历史由 assign 自动注入到模板
response = chain.invoke({"input": user_input})
# 打印回答
print(f"AI:{response.content}")
# 手动把本轮输入与输出写回记忆(关键!否则不会“记住”)
memory.save_context({"input": user_input}, {"output": response.content})
except Exception as e:
print(f"AI:本轮出现异常:{e}")
输出示例:
(1)手动输入:如何学习agent?
你:如何学习agent?
AI:学习智能体(Agent)技术需要理论与实践结合。以下是关键步骤:
## 1️⃣ **基础准备**
- **编程基础**:掌握Python(主流AI开发语言)
- **数学基础**:线性代数、概率论、微积分
- **机器学习**:了解基本概念和算法
## 2️⃣ **核心知识体系**
- **智能体架构**:反应式、基于模型、目标导向、学习型
- **关键技术**:
- 强化学习(Q-learning、深度强化学习)
- 多智能体系统
- 规划与决策算法
- 感知与推理技术
## 3️⃣ **实践路径**
理论学习 → 工具掌握 → 项目实践 → 深入专研
- **推荐工具**:OpenAI Gym、TensorFlow、PyTorch
- **入门项目**:迷宫导航、游戏AI、简单机器人控制
## 4️⃣ **学习资源**
- **经典教材**:《人工智能:现代方法》
- **在线课程**:Coursera的机器学习专项课程
- **开源项目**:GitHub上的智能体相关项目
**为了更好地帮你规划,可以告诉我:**
- 你目前的技术背景?
- 学习目标(理论研究/项目开发)?
- 对哪个应用领域最感兴趣?
(2)手动输入:对电商应用领域最感兴趣。
你:对电商应用领域最感兴趣。
AI:针对电商领域的智能体学习,我为你规划一条专项路径:
## 🛍️ **电商智能体技术栈**
### **核心应用方向**
- **推荐系统智能体**
- **客服聊天机器人**
- **定价优化代理**
- **库存管理代理**
- **反欺诈检测系统**
## 📚 **学习路线**
### **第一阶段:基础技能**
```python
# 电商数据典型处理
import pandas as pd
from sklearn.preprocessing import StandardScaler
# 用户行为数据分析
user_behavior = pd.read_csv('user_behavior.csv')
- 掌握电商数据集分析(用户行为、交易数据)
- 学习协同过滤、内容推荐基础算法
### **第二阶段:电商专用智能体**
**推荐系统代理**
- 深度Q学习用于动态推荐
- 多臂赌博机算法用于探索/利用权衡
**客服聊天机器人**
- 基于规则的对话系统
- 集成NLP的智能客服
## 🛠️ **实践项目推荐**
### **入门级**
1. **电影推荐系统**(MovieLens数据集)
2. **简单电商对话机器人**
### **进阶级**
1. **动态定价智能体**
- 根据需求、竞争价格自动调整
2. **个性化营销代理**
- 基于用户画像的优惠券发放策略
## 📖 **电商领域资源**
- **数据集**:Amazon Product Data, Taobao User Behavior
- **论文**:《Deep Neural Networks for YouTube Recommendations》
- **工具**:Redis(实时推荐)、Rasa(对话系统)
## 💡 **快速启动建议**
**如果你有编程基础,我建议:**
1. 先从简单的推荐系统开始
2. 使用现成的电商数据集
3. 逐步添加智能体决策逻辑
**需要我详细展开某个具体方向吗?比如推荐系统或客服机器人的具体实现步骤?**
(3)手动输入:exit
然后就可以结束进程了。
你:exit
进程已结束,退出代码为 0
总结:从上述的示例,可以看出对话确实具备记忆功能,可以连续多轮对话。
五、高级功能扩展
添加工具调用能力
代码示例:
from langchain_core.tools import tool
from langchain_classic.agents import create_tool_calling_agent
from langchain_classic.agents import AgentExecutor
from langchain_classic.memory import ConversationBufferMemory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_openai import ChatOpenAI
# 1) 模型
model = ChatOpenAI(
model="deepseek-chat",
api_key="sk-xxxxxxx", # DeepSeek API Key (填你自己的API key)变量
base_url="https://api.deepseek.com/v1"
)
# 2) 工具
@tool
def get_weather(city: str) -> str:
"""获取指定城市的实时天气"""
# 这里可以接入真实天气API
return f"{city}当前天气:30℃,晴"
tools = [get_weather]
# 3) 记忆
memory = ConversationBufferMemory(memory_key="history", return_messages=True)
# 4) 系统提示:强调“按需用工具”
system_prompt = """你是一个全能助手,请遵守以下规则:
1. 当且仅当涉及天气查询时,使用工具;否则直接回答。
2. 技术问题回答需包含示例代码。
3. 保持回答在3句话以内。"""
prompt = ChatPromptTemplate.from_messages([
("system", system_prompt),
MessagesPlaceholder(variable_name="history"),
("human", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
# 5) 创建“工具调用型”智能体
agent = create_tool_calling_agent(model, tools, prompt)
# 6) 包装为可执行器(自动处理工具调用/回写)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
memory=memory, # 自动读写 history
verbose=True,
handle_parsing_errors=True, # 解析失败时容错
max_iterations=3 # 防止无限循环
)
# 7) 交互循环
while True:
user_input = input("你:").strip()
if not user_input:
continue
if user_input.lower() in {"exit", "退出"}:
break
try:
response = agent_executor.invoke({"input": user_input})
print(f"AI:{response['output']}")
except Exception as e:
print(f"AI:本轮出现异常:{e}")
(1)手动输入:深圳下雨了不?
你:深圳下雨了不?
> Entering new AgentExecutor chain...
Invoking: `get_weather` with `{'city': '深圳'}`
responded: 我来帮您查询深圳的天气情况。
深圳当前天气:30℃,晴根据查询结果,深圳当前是30℃,晴天,没有下雨。
> Finished chain.
AI:根据查询结果,深圳当前是30℃,晴天,没有下雨。
从上面可以看出,能够识别下雨是在询问天气相关的,然后自己使用了天气的工具。
(2)手动输入:深圳哪里好玩?
上述的提问与天气无关,就正常回答,不调用工具。
你:深圳哪里好玩?
> Entering new AgentExecutor chain...
深圳有很多好玩的地方:欢乐谷主题公园、世界之窗微缩景观、东部华侨城度假区、深圳湾公园海滨长廊、大梅沙海滨浴场等都很受欢迎。
> Finished chain.
AI:深圳有很多好玩的地方:欢乐谷主题公园、世界之窗微缩景观、东部华侨城度假区、深圳湾公园海滨长廊、大梅沙海滨浴场等都很受欢迎。
(3)手动输入:exit
然后就可以结束进程了。
你:exit
进程已结束,退出代码为 0
六、部署应用
代码
from langchain_core.tools import tool
from langchain_classic.agents import create_tool_calling_agent
from langchain_classic.agents import AgentExecutor
from langchain_classic.memory import ConversationBufferMemory
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_openai import ChatOpenAI
# 1) 模型
model = ChatOpenAI(
model="deepseek-chat",
api_key="sk-xxxxxxx", # DeepSeek API Key (填你自己的API key)变量
base_url="https://api.deepseek.com/v1"
)
# 2) 工具
@tool
def get_weather(city: str) -> str:
"""获取指定城市的实时天气"""
# 这里可以接入真实天气API
return f"{city}当前天气:30℃,晴"
tools = [get_weather]
# 3) 记忆
memory = ConversationBufferMemory(memory_key="history", return_messages=True)
# 4) 系统提示:强调“按需用工具”
system_prompt = """你是一个全能助手,请遵守以下规则:
1. 当且仅当涉及天气查询时,使用工具;否则直接回答。
2. 技术问题回答需包含示例代码。
3. 保持回答在3句话以内。"""
prompt = ChatPromptTemplate.from_messages([
("system", system_prompt),
MessagesPlaceholder(variable_name="history"),
("human", "{input}"),
MessagesPlaceholder(variable_name="agent_scratchpad"),
])
# 5) 创建“工具调用型”智能体
agent = create_tool_calling_agent(model, tools, prompt)
# 6) 包装为可执行器(自动处理工具调用/回写)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
memory=memory, # 自动读写 history
verbose=True,
handle_parsing_errors=True, # 解析失败时容错
max_iterations=3 # 防止无限循环
)
############基于上述的基础上,添加下面的语句
import gradio as gr
def chat(message, history):
response = agent_executor.invoke({
"input": message,
"history": history
})
return response['output']
demo = gr.ChatInterface(
fn=chat,
title="DeepSeek AI助手",
description="体验智能对话"
)
if __name__ == "__main__":
demo.launch()
输出示例:
* Running on local URL: http://127.0.0.1:7860
* To create a public link, set `share=True` in `launch()`.
然后点击http://127.0.0.1:7860网址。

> Entering new AgentExecutor chain...
Agent(智能体)是指能够感知环境、自主决策并执行行动的智能系统。在AI领域,agent通常指能够理解用户需求、规划任务步骤并调用工具完成目标的智能程序。例如,一个天气查询agent可以接收用户位置信息,调用天气API获取数据并返回结果。
> Finished chain.
> Entering new AgentExecutor chain...
Agent的进阶学习包括强化学习、多智能体协作、元学习和迁移学习等技术。例如在强化学习中,agent通过与环境交互获得奖励信号来优化策略:
python
# 简单的Q-learning示例
q_table = {}
state = get_state()
action = select_action(q_table, state)
reward, next_state = environment.step(action)
update_q_table(q_table, state, action, reward, next_state)
这些技术让agent能够适应复杂环境并持续改进性能。
> Finished chain.
以上内容参考下面博客链接:
https://cloud.tencent.com/developer/article/2506334
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)