五月份使用 Spring AI 集成了 DeepSeek 和智谱 GLM-4 ,当时功能都是正常的。
上周又重新跑了一下程序,发现 DeepSeek 只能回答 MCP 工具之内的问题。然后我又换成了智谱 GLM-4.5 ,当时正值阅兵,我随意输入了一个关于阅兵的问题,智谱 GLM-4.5 回答一半停住了。看日志说是返回值 FinishReason 是 sensitive,而 Spring AI 中的代码中没有添加这个属性,导致反序列化失败。看到这里自然就明白了,sensitive 表示因为某些敏感词触发机制,智谱把当前的流式响应切断了!这是一个新加的属性,想必 Open AI API 中不会有这个属性。(当然我没仔细比对)
到这里情况就清楚了:
- DeepSeek 的现状是每次升级都没有冻结版本,也就说 DeepSeek 并没有维护多个版本的基础设施。每次都在原基础设施上升级,对于用户则一直使用 deepseek-chat 和 deepseek-reasoner 的模型名称。但是不同版本的 deepseek-chat 和 deepseek-reasoner 能力不一样,可能会引入 bug 。
- 智谱的现状是并未完全兼容 OpenAI API ,某些自定义返回值属性可能会导致程序 Bug 。
然后我又浏览国内各大模型的 API 文档,也看了一些国外 AI Agent 框架文档。
我发现各个厂商都在维持所谓的 OpenAI API 兼容性这个“最大公约数”,但是一旦你深入浏览各模型厂商的文档就会发现,同一个兼容接口的返回值可能是不一样的,甚至有些模型厂商会提供额外的模型能力 API 。
那么在这样的情况下,基于所谓兼容的 OpenAI API 构建的 AI Agent 未必会充分利用各模型的能力,又因为各模型厂商返回值可能的不一致从而引入 bug 。
另外,那些 AI Agent 框架默认你需要有一个 OPENAI_API_KEY 或 ANTHROPIC_API_KEY。如果你想用其他的模型,则需要自定义一些代码了...
很矛盾!!要兼容吧,会有 bug 、会跳过某些特定能力 API ;不兼容吧,会被“供应商锁定”。在没有 OPENAI_API_KEY 或 ANTHROPIC_API_KEY 的情况下,AI Agent 框架貌似是不能直接使用的。
挺纠结的。各位有何看法?