使用VertexAI结合Few-Shot示例创建SQL Agent时遇架构错误求助
解决LangChain SQL Agent与VertexAI结合时的提示模板错误
问题根源
出现Invalid prompt schema; check for mismatched or missing input parameters. {'agent_scratchpad', 'input'}错误的核心原因是:你使用的SQL Agent提示模板(尤其是自定义的suffix)缺少VertexAI模型要求的必填参数agent_scratchpad和input,或者提示模板的结构与VertexAI的输入格式不兼容。
解决方案
1. 修正自定义后缀(custom_suffix)
确保你的custom_suffix包含{agent_scratchpad}和{input}这两个占位符。ZeroShotReactDescription类型的Agent默认后缀会包含这些参数,示例如下:
custom_suffix = """ Begin! Question: {input} Thought: 我需要先查看数据库中的表结构,确定最相关的表后查询其 schema。 {agent_scratchpad} """
如果你的自定义后缀遗漏了这两个占位符,补充后即可解决参数不匹配问题。
2. 正确初始化VertexAI模型
确保你使用的是适配聊天模板的ChatVertexAI而非基础的VertexAI,因为ZeroShotReactDescription Agent的提示结构更适配聊天模型:
from langchain.chat_models import ChatVertexAI llm = ChatVertexAI(model_name="text-bison@001", temperature=0)
3. 移除不必要的自定义后缀(可选)
如果你的自定义后缀没有特殊需求,可以直接移除suffix=custom_suffix参数,让Agent使用默认的兼容提示模板:
agent = create_sql_agent( llm=llm, toolkit=toolkit, verbose=True, agent_type=AgentType.ZERO_SHOT_REACT_DESCRIPTION, extra_tools=custom_tool_list, )
4. 检查Few-Shot示例的集成方式
如果你的Few-Shot示例是通过修改提示模板添加的,确保这些示例不会覆盖或遗漏agent_scratchpad和input参数。可以将示例放在提示的prefix部分,保留suffix中的必填参数占位符。
内容的提问来源于stack exchange,提问作者Userrrrrrrr
相关产品推荐
相关产品推荐

