大模型速通学习笔记(53)
因当前视频网页解析失败,结合前序 “Agent 决策应用场景” 的铺垫逻辑,本集聚焦 AI Agent 的核心决策机制,核心解决 “Agent 如何实现智能决策”“决策流程如何落地编码” 的关键问题。通过拆解决策的底层逻辑(感知 - 规划 - 执行 - 反馈)、核心算法框架与实操示例,让开发者掌握 Agent 决策的实现原理,为复杂场景 Agent 开发奠定技术基础。
·
LangChain AI Agent 决策机制:从原理到实操落地
一、核心主题定位
因当前视频网页解析失败,结合前序 “Agent 决策应用场景” 的铺垫逻辑,本集聚焦 AI Agent 的核心决策机制,核心解决 “Agent 如何实现智能决策”“决策流程如何落地编码” 的关键问题。通过拆解决策的底层逻辑(感知 - 规划 - 执行 - 反馈)、核心算法框架与实操示例,让开发者掌握 Agent 决策的实现原理,为复杂场景 Agent 开发奠定技术基础。
二、Agent 决策底层逻辑与核心框架
1. 决策四步闭环(感知 - 规划 - 执行 - 反馈)
- 感知(Perception):接收用户需求与环境信息(如工具状态、系统配置),转化为 Agent 可理解的结构化数据(如 “用户需求:生成销售报告;可用工具:SQL 工具、图表工具”)。
- 规划(Planning):基于感知信息拆解任务、规划步骤,输出可执行的行动序列(如 “1. 调用 SQL 工具查询销售数据;2. 计算环比增长率;3. 调用图表工具生成折线图;4. 整合内容生成报告”)。
- 执行(Execution):按行动序列调用工具执行子任务,获取执行结果(如 “SQL 工具返回 7 月销售额 100 万”)。
- 反馈(Feedback):校验执行结果是否符合预期(如 “数据是否完整”“图表是否正确”),若存在问题则调整规划(如 “数据缺失→重新查询”),形成闭环。
2. 核心决策框架
- 基于 Prompt 的零样本决策:通过精心设计的 System Prompt,让大模型直接完成任务拆解与工具选择,无需训练数据,适合快速验证场景。
- 基于少样本的 Few-Shot 决策:在 Prompt 中注入少量决策示例(如 “类似需求的拆解步骤”),提升复杂场景下决策的准确性。
- 基于强化学习(RL)的决策:通过奖励机制(如 “任务完成速度”“结果准确率”)持续优化决策策略,适合长期运行、数据充足的场景(生产级应用)。
三、决策机制实操示例(零样本 + 少样本)
1. 零样本决策:快速实现任务拆解与工具选择
核心场景
简单复杂任务(如 “查询产品库存并生成补货建议”),无需示例即可完成决策。
代码示例
python
运行
from langchain_community.llms import ZhipuAI
from langchain_core.tools import Tool
from langchain.agents import initialize_agent, AgentType
from langchain.memory import ConversationBufferMemory
# 1. 定义工具(库存查询+补货计算)
def inventory_query(product_id: str) -> str:
"""查询产品库存数量,输入产品ID(如PROD-001)"""
mock_data = {"PROD-001": 30, "PROD-002": 150, "PROD-003": 0}
return f"产品{product_id}当前库存:{mock_data.get(product_id, 0)}件"
def replenish_calc(product_id: str, monthly_sales: int) -> str:
"""计算补货量,输入产品ID和月均销量"""
stock = int(inventory_query(product_id).split(":")[-1].replace("件", ""))
if stock <= monthly_sales * 0.5:
return f"补货建议:需补货{monthly_sales * 2 - stock}件(库存低于半月销量)"
return "补货建议:库存充足,无需补货"
tools = [
Tool(name="inventory_query", func=inventory_query, description="查询产品库存,仅需产品ID"),
Tool(name="replenish_calc", func=replenish_calc, description="计算补货量,需产品ID和月均销量")
]
# 2. 初始化模型与记忆模块
llm = ZhipuAI(model="glm-4", api_key="你的API_KEY", temperature=0.1)
memory = ConversationBufferMemory(return_messages=True)
# 3. 零样本决策Prompt(定义决策规则)
system_prompt = """
你是库存管理Agent,需按以下规则决策:
1. 接收用户需求后,先判断是否需要调用工具:
- 仅查询库存→调用inventory_query;
- 需补货建议→先查库存,再用replenish_calc(需询问月均销量);
2. 工具调用需传入完整参数,参数缺失时询问用户补充;
3. 执行完成后整合结果,用自然语言回复。
"""
# 4. 初始化Agent(零样本决策)
agent = initialize_agent(
tools=tools,
llm=llm,
agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True,
agent_kwargs={"system_message": system_prompt}
)
# 测试零样本决策
agent.run("帮我分析PROD-001是否需要补货")
2. 少样本决策:提升复杂场景决策准确性
核心场景
模糊或复杂需求(如 “处理电商售后订单”),需通过示例引导 Agent 正确拆解任务。
代码示例(添加少样本示例)
python
运行
# 1. 少样本决策Prompt(注入示例引导)
few_shot_system_prompt = """
你是电商售后Agent,需按以下规则和示例决策:
规则:
1. 用户需求可能包括:查询订单状态、修改收货地址、申请退款、退换货;
2. 需先获取订单号,再根据需求调用对应工具;
3. 工具参数缺失时,仅询问必要信息(不冗余)。
示例:
用户:帮我看看我的订单怎么还没到?
Agent:请提供你的订单号。
用户:OD-123456
Agent:调用order_status工具查询OD-123456状态→返回结果后告知用户。
用户:想改一下订单的收货地址
Agent:请提供订单号和新的收货地址。
"""
# 2. 新增售后工具
def order_status(order_id: str) -> str:
"""查询订单状态,输入订单号"""
mock_data = {"OD-123456": "运输中", "OD-654321": "已签收", "OD-789012": "待发货"}
return f"订单{order_id}状态:{mock_data.get(order_id, '订单号不存在')}"
def update_address(order_id: str, new_addr: str) -> str:
"""修改收货地址,输入订单号和新地址"""
return f"订单{order_id}收货地址已更新为:{new_addr}"
after_sales_tools = [
Tool(name="order_status", func=order_status, description="查询订单状态,需订单号"),
Tool(name="update_address", func=update_address, description="修改收货地址,需订单号和新地址")
]
# 3. 初始化少样本Agent
few_shot_agent = initialize_agent(
tools=after_sales_tools,
llm=llm,
agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
memory=memory,
verbose=True,
agent_kwargs={"system_message": few_shot_system_prompt}
)
# 测试少样本决策(模糊需求)
few_shot_agent.run("我想处理一下我的订单")
四、决策机制核心优化方向
1. 决策准确性优化
- Prompt 工程强化:明确决策边界(如 “仅处理库存相关需求”)、参数要求(如 “产品 ID 格式为 PROD-XXX”),减少模糊性。
- 工具描述精细化:工具描述需包含 “功能 + 输入参数 + 适用场景”(如 “replenish_calc:计算补货量,输入产品 ID(PROD-XXX)和月均销量(数字),适用于库存不足时”)。
- 错误案例反馈:记录 Agent 决策错误(如 “误调用工具”),在 Prompt 中添加 “禁止案例”(如 “不要在未查库存时直接调用 replenish_calc”)。
2. 决策效率优化
- 任务拆解剪枝:复杂任务拆解时限制子任务数量(≤5 步),避免冗余步骤。
- 工具缓存复用:重复调用同一工具(如 “查询同一产品库存”)时,缓存结果,减少重复执行。
- 并行决策支持:独立子任务(如 “同时查询多个产品库存”)支持并行执行,提升效率。
3. 容错能力优化
- 参数校验机制:工具调用前校验参数格式(如 “产品 ID 是否符合规范”),避免无效调用。
- 失败重试策略:工具调用超时或失败时,自动重试 1-2 次,重试失败则切换替代工具(如 “库存查询工具失败→调用备份库存接口”)。
- 用户澄清引导:需求模糊时(如 “帮我处理订单”),通过结构化提问获取关键信息(如 “请问你是想查询状态、修改地址还是申请退款?”)。
五、决策机制落地避坑指南
1. 常见问题与解决方案
- 决策逻辑混乱:Agent 频繁误调用工具或步骤颠倒。解决方案:在 Prompt 中明确 “步骤顺序”(如 “先查库存,再算补货量”),添加少样本示例。
- 参数缺失遗漏:Agent 未询问必要参数就调用工具。解决方案:工具描述中强调 “必填参数”,Prompt 中添加 “参数缺失时必须询问用户”。
- 过度决策:Agent 对简单需求拆解过细(如 “查询库存” 拆分为 “确认产品 ID→调用工具→返回结果”)。解决方案:明确 “简单任务无需拆解,直接调用工具”。
2. 落地优先级建议
- 先实现零样本决策,快速验证场景可行性;
- 复杂场景添加少样本示例,提升决策准确性;
- 生产环境引入反馈机制(如用户评分),迭代优化决策规则;
- 高并发场景优化效率(缓存、并行)与容错能力(重试、降级)。
更多推荐


所有评论(0)