Skip to content

SpringAI 2.x 的 ToolCallingAdvisor 存在bug吗 #4

Description

@chang-shuai

我用 Spring AI 2.0 版本写了一个很简单的 demo,通过 tool 查询数据库里几张表的数据,做数据分析。代码很简单,开启

spring.ai.chat.client.observations.log-completion

配置后,看到不断的再提示词上拼接空字符串,以下内容是把控制台输出发给 AI 后的分析结果:


分析 Spring AI ToolCallingAdvisor 内部行为
从日志观察到一个致命现象:每次 prompt 末尾追加的空字符串越积越多:

Round 1 prompt: [system, user]
Round 2 prompt: [system, user, "", ""]
Round 3 prompt: [system, user, "", "", "", ""]
...
这些空字符串是 ToolCallingAdvisor 内部为了模拟 assistant + tool message 占位而追加的文本消息。理论上:

Round 1:模型判断需要工具 → 返回 tool_calls 完成,finish_reason=tool_calls。
Spring AI:提取 tool_calls,调用 Java 方法,构造 role=tool 消息拼回 prompt。
Round 2:模型拿到工具执行结果 → 生成最终文本。
但在本次场景中,ToolCallingAdvisor 一直在发送 prompt,却从未从模型响应中成功提取到 tool_calls 并执行工具,导致模型每次都返回空(因为没有任何内容或工具可调),循环 7 次后超时。


以上是 AI 分析的,不知道您有没有遇到。

环境:

Spring Boot:4.1.0
Spring AI:2.0.0
Java:25.0.3

模型是自建的 kimi2.6

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions