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

使用LangChain Agent生成面试计划时触发Human工具解析响应错误

问题解决:LangChain Agent主动提问生成面试计划时的解析错误

问题背景

尝试用LangChain Agent为软件工程师生成1个月面试准备计划,期望Agent主动提问获取当前技能水平等信息,但运行代码时触发解析响应错误,无法像ChatGPT那样自然发起提问。

错误根源

使用AgentType.CONVERSATIONAL_REACT_DESCRIPTION时,该Agent要求输出严格遵循「思考-行动-输入」的固定模板,而直接让Agent输出提问内容的方式不符合模板规则,导致解析失败。

可行解决方案

方案1:切换适配聊天场景的Agent类型

改用AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,该类型针对聊天场景优化了格式容错性,能自然处理主动提问需求:

import os
from langchain.memory import ConversationBufferMemory
from langchain.chat_models import ChatOpenAI
from langchain.agents import load_tools, initialize_agent
from langchain.agents import AgentType

os.environ["OPENAI_API_KEY"] = "sk-xxx"    

def _handle_error(error) -> str:
    return str(error)[:50]

if __name__ == '__main__':
    llm = ChatOpenAI(temperature=0.0)
    tools = load_tools(
        ["human"],
        llm=llm,
    )
    # 开启return_messages适配聊天消息格式
    memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
    agent_chain = initialize_agent(
        tools,
        llm,
        agent=AgentType.CHAT_CONVERSATIONAL_REACT_DESCRIPTION,
        verbose=True,
        memory=memory,
        max_iterations=3,
        handle_parsing_errors=_handle_error
    )

    agent_chain.run(
        "我需要你为软件工程师生成一份为期一个月的面试准备计划,请先询问我的当前技能水平、目标岗位类型(如后端/前端/全栈)、目标公司层级等信息,再根据这些信息生成计划。")

方案2:优化提示词引导格式兼容

若坚持使用原Agent类型,需修改提示词,明确引导Agent通过Human工具发起提问:

agent_chain.run(
    "请生成一份软件工程师的1个月面试准备计划。你需要先通过Human工具询问我的当前技术栈熟练度、目标岗位、已有面试经验等信息,再基于这些信息制定计划。现在请调用Human工具发起第一个提问。")

关键注意点

  • 切换到CHAT_CONVERSATIONAL_REACT_DESCRIPTION时,必须将ConversationBufferMemory的return_messages设为True,适配聊天消息格式。
  • 提示词需明确告知Agent要通过Human工具获取用户信息,而非直接输出提问内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 08:56:25