You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LangChain Agent输出解析失败问题求助(AWS环境)

解决LangChain zero-shot-react-description Agent解析失败问题(含Bedrock模型输出无效标记)

问题核心

基于AWS Bedrock、Lambda构建的LangChain RAG应用中,使用zero-shot-react-description类型Agent时,约1/5概率出现LLM输出解析失败。添加handle_parsing_errors=True参数无效,LangSmith显示LLM输出包含<|start_header_id|>这类无效内容,StrOutputParser能生成答案但Agent执行失败。

针对性解决方案

1. 自定义输出解析器过滤无效标记

在LLM输出传递给Agent前,先过滤Bedrock生成的特殊标记:

from langchain.schema import BaseOutputParser
from langchain.agents.initialize import initialize_agent

class BedrockCleanParser(BaseOutputParser):
    def parse(self, text: str) -> str:
        # 移除Bedrock特殊标记
        cleaned_text = text.replace("<|start_header_id|>", "").replace("<|end_header_id|>", "")
        return cleaned_text

# 给LLM绑定清理解析器
llm_with_cleaner = llm | BedrockCleanParser()

# 初始化Agent
agent = initialize_agent(
     tools=tools, 
     llm=llm_with_cleaner, 
     agent="zero-shot-react-description", 
     verbose=True,
     handle_parsing_errors=True
)

2. 强制模型输出标准格式

修改Agent的提示词,明确要求模型不得输出特殊标记:

from langchain.agents import ZeroShotAgent, AgentExecutor
from langchain.prompts import PromptTemplate

# 自定义提示模板,添加格式约束
prompt = ZeroShotAgent.create_prompt(
    tools,
    prefix="你需要根据用户问题选择合适工具解决",
    suffix="注意:输出仅包含思考过程和工具调用的标准格式,禁止添加<|start_header_id|>或类似特殊标记。\n\n用户问题:{input}\n{agent_scratchpad}"
)

# 创建带约束的Agent
agent = ZeroShotAgent(llm_chain=llm | BedrockCleanParser(), prompt=prompt, tools=tools)
agent_executor = AgentExecutor.from_agent_and_tools(
    agent=agent, 
    tools=tools, 
    verbose=True, 
    handle_parsing_errors=True
)

3. 调整Bedrock模型参数

通过模型参数阻止输出特殊标记,以Claude系列为例:

# 配置Bedrock模型参数
llm.model_kwargs = {
    "stop_sequences": ["<|start_header_id|>", "<|end_header_id|>"],
    "temperature": 0.1  # 降低温度减少输出随机性
}

4. 增强Agent错误处理

提升Agent容错能力,允许多次尝试解析:

agent = initialize_agent(
     tools=tools, 
     llm=llm_with_cleaner, 
     agent="zero-shot-react-description", 
     verbose=True,
     handle_parsing_errors=True,
     max_iterations=5,  # 增加迭代次数,失败后重试
     return_intermediate_steps=True  # 便于调试查看失败过程
)

内容的提问来源于stack exchange,提问作者Aryan Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 14:20:13