📋 本文目录
一、前言
1.1 整合的价值
把5个工具整合起来:
-
工具链:按顺序执行,处理完整流程
-
Agent:智能选择工具,灵活应对
-
上下文持久化:记住用户情境
1.2 你将学到什么?
-
✅ 如何构建上下文工具链
-
✅ 如何整合到Agent
-
✅ 上下文感知的实际效果
-
✅ 与其他模块的配合
二、工具链整合
2.1 完整流程
输入内容
↓
[工具1] context_collector → 收集上下文
↓
[工具2] context_modeler → 建模上下文
[工具3] context_reasoner → 推理情境
[工具4] situational_responder → 生成响应
↓
[工具5] context_manager → 管理上下文
2.2 运行演示
cd 05_context_awareness
python context_chain_demo.py
2.3 生成的输出文件
-
output_context.txt- 上下文信息 -
output_response.txt- 生成的响应 -
output_analysis.txt- 情境分析
三、Agent整合
3.1 构建上下文感知Agent
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain_core.prompts import ChatPromptTemplate
from langchain.memory import ConversationBufferMemory
# 1. 初始化LLM
llm = ChatOpenAI(
base_url="http://localhost:11434/v1",
api_key="ollama",
model="qwen2.5:3b-instruct",
temperature=0.7
)
# 2. 注册工具
tools = [
context_collector,
context_modeler,
context_reasoner,
situational_responder,
context_manager
]
# 3. 构建提示模板
prompt = ChatPromptTemplate.from_messages([
("system", """你是一个上下文感知的智能助手。
你需要理解当前的情境,包括对话历史、用户情况、环境因素和任务状态,
然后给出最合适的回答。"""),
("placeholder", "{chat_history}"),
("user", "{input}"),
("placeholder", "{agent_scratchpad}")
])
# 4. 创建Agent
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(
agent=agent,
tools=tools,
verbose=False,
handle_parsing_errors=True,
memory=ConversationBufferMemory(return_messages=True)
)
3.2 运行Agent
cd 05_context_awareness
python context_agent_demo.py
3.3 Agent特殊命令
-
context- 查看当前上下文 -
user- 查看用户信息 -
env- 查看环境信息 -
task- 查看任务状态 -
clear- 清除上下文
四、效果演示
4.1 无上下文 vs 有上下文(真实运行结果)
无上下文感知:
用户: 我刚刚网购了一台笔记本电脑
用户: 我喜欢安静、健康的餐厅
用户: 它什么时候到?
AI: 我不太理解您说的"它"指什么,请您具体说明一下
(因为没有上下文,不知道对话历史和用户偏好)
用户: 给我推荐餐厅
AI: 我不太理解您说的"它"指什么,请您具体说明一下
(因为没有上下文,不知道对话历史和用户偏好)
有上下文感知:
============================================================
上下文感知Agent - 交互式对话
============================================================
指令:
- 直接输入内容与助手对话
- context - 查看当前上下文
- user - 查看用户信息
- summary - 查看上下文摘要
- clear - 清除上下文
- quit/exit- 退出
============================================================
============================================================
上下文感知Agent - 初始化中...
============================================================
[OK] 上下文感知Agent初始化完成!
开始对话吧!
> 你好,我准备去看周杰伦的演唱会
用户: 你好,我准备去看周杰伦的演唱会
助手: 你好!观看周杰伦的演唱会一定非常棒呢!你打算什么时候去呢?我可以帮你查询一下附近的场馆和时间安排哦。
> 今天天气怎么样
用户: 今天天气怎么样
助手: 你好!今天是2026年5月27日的晚上,我这里没有查到具体天气的信息哦。你可以查看一下当地的天气预报,或者直接打开手机上的天气应用查看最新的天气情况。希望你今晚能有个好心情!
> 演唱会你觉得怎么样
用户: 演唱会你觉得怎么样
助手: 你好!周杰伦的演唱会一定非常精彩呢!音乐和表演都是他多年来的积累和心血,你肯定不会失望的。不过关于你的问题,我没有具体的信息来回答,因为我只知道你想去看他的演唱会了。你可以告诉我更详细一些,比如你计划在哪一天去听现场吗?我可以帮你查一下那晚的天气情况哦。
4.2 上下文感知重点说明
从上面的真实交互可以看出Agent的上下文感知能力:
-
记忆用户意图:用户说"你好,我准备去看周杰伦的演唱会" → 被记住了
-
对话连贯性:后续对话中助手记得"我只知道你想去看他的演唱会了" → 体现了记忆功能
-
时间感知:助手知道"今天是2026年5月27日的晚上" → 环境上下文
-
个性化回复:基于之前的信息继续提供相关建议
4.3 对比总结
| 维度 | 无上下文 | 有上下文 |
|---|---|---|
| 理解代词 | 不知道"它"指什么 | 知道是笔记本电脑 |
| 用户偏好 | 不知道 | 知道喜欢安静健康 |
| 响应质量 | 模糊不清 | 个性化精准 |
五、总结与展望
5.1 模块总结
| 模块 | 说明 |
|---|---|
| 上下文收集 | 多源信息收集 |
| 上下文建模 | 结构化表示 |
| 上下文推理 | 智能推断 |
| 情境响应 | 个性化回复 |
| 上下文管理 | 生命周期管理 |
📚 参考资源
| 资源 | 链接 |
|---|---|
| LangChain Context Docs | https://python.langchain.com/docs/modules/memory/context/ |
点赞 + 关注,更新不迷路!🚀