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. 落地优先级建议

  • 先实现零样本决策,快速验证场景可行性;
  • 复杂场景添加少样本示例,提升决策准确性;
  • 生产环境引入反馈机制(如用户评分),迭代优化决策规则;
  • 高并发场景优化效率(缓存、并行)与容错能力(重试、降级)。
Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐