使用Langchain4j调用Gemini-1.5-pro工具时第三次触发INVALID_ARGUMENT异常
异常含义与解决方法
异常含义
这个INVALID_ARGUMENT异常明确说明你向Gemini-1.5-Pro发起的工具调用违反了模型的对话轮次规则:工具调用必须紧跟在用户输入轮次,或者工具执行结果返回的轮次之后。第三次调用时触发该异常,大概率是对话历史的轮次顺序或类型出现错误,导致模型判定当前场景不允许发起工具调用。
避免方法
- 严格遵循合法对话轮次逻辑:对话历史需保持「用户输入 → 工具调用 → 工具结果 → 工具调用 → ...」或「用户输入 → 模型纯文本回复 → 用户输入 → 工具调用」的结构,禁止出现连续工具调用(未插入工具结果)、或在模型纯文本回复后直接发起工具调用的情况。
- 规范LangChain4j对话历史的消息类型:确保每次工具执行完成后,将结果以
ToolExecutionResultMessage类型添加到对话历史,而非误标记为UserMessage或AiMessage——这三类消息的区分是模型判断轮次合法性的关键。 - 排查第三次调用前的轮次状态:在触发第三次工具调用前,打印或调试对话历史的所有轮次,检查是否存在多余的
AiMessage(模型纯文本回复),或遗漏了前一次工具调用对应的ToolExecutionResultMessage。 - 不要随意手动修改对话历史:除非明确了解轮次规则,否则不要手动插入或修改对话历史中的消息,尽量让LangChain4j的工具调用流程自动维护轮次顺序与类型。
内容的提问来源于stack exchange,提问作者kstanisz
相关产品推荐
相关产品推荐

