前言
本项目非原创,我也是作为一名初学者跟着一起学习。项目来源于:代码随想录-知识星球。
在知识星球里看到卡哥分享这个项目 ,感觉还不错,于是想要学习一下这个项目怎么写。项目日记也会同步更新。(本人不分享本项目源码,支持项目付费)
本文由我学习该项目并结合AI整理总结而来,分享出来学习过程中的心得体会,由浅入深,用于日后的回顾,同时也希望能给你带来帮助。
目录
前言
Spring AI 在 Agent 系统中的作用
接入 Spring AI 的步骤
一个模型对应一个 ChatClient
ChatClientRegistry:模型调度的核心
Agent 如何绑定模型
模型成为系统基础设施
前面几章,我们用手写大模型 API 的方式,把模型调用、上下文管理和工具调用的完整流程走了一遍。
现在我们正式进入工程化开发阶段,新的问题也随之而来:
当系统里有多个 Agent、多次模型调用,甚至接入了多个不同厂商的模型时,我们怎么把这些模型能力统一管理起来,让它们变成可配置、可切换、可扩展的基础设施?
这一章,就来解决这个问题。
如果不借助任何框架,每接入一个新模型,我们都要自己处理一堆重复工作:
- 构造 HTTP 请求
- 处理鉴权和请求重试
- 适配不同模型的参数差异
- 兼容各厂商的工具调用协议
这些工作本身不难,但它们和 Agent 的核心逻辑无关,纯粹是和模型厂商打交道的细节。
Spring AI 的好处,就是把如何和模型打交道这件事,抽象成了一套统一接口。
这样我们就能把精力放在设计 Agent 的行为上,不用再纠结各个模型厂商的细节差异。
在 Agent 系统里,我们只需要一个能和模型对话的对象,这个对象就是 Spring AI 里的 ChatClient。
在 Spring Boot 项目里接入 Spring AI 非常简单,主要分三步。
首先,用 BOM 来统一管理版本,避免依赖冲突:
然后,根据要接入的模型厂商,引入对应的 starter 依赖。
比如接入深度求索和智谱 AI:
GPT plus 代充 只需 145
最后,在 application.yaml 里配置模型的 API Key 和默认参数:
完成这三步后,Spring AI 就会自动把这些模型装配成 ChatModel Bean,接下来我们就可以在系统里直接使用了。
在我们的 Agent 系统里,有一个约定:每一个可用的模型,都对应一个独立的 ChatClient 对象。
ChatClient 是对模型能力的封装,它把模型调用的细节都屏蔽了,只暴露一个统一的对话接口。
我们可以为每个模型创建一个独立的 ChatClient Bean:
GPT plus 代充 只需 145
当系统里有多个 ChatClient 后,新的问题就来了:运行时怎么根据 Agent 的配置,自动选择对应的模型?
答案很简单,不要用 if/switch 硬编码,交给 Spring 来处理。
Spring 会自动把所有 ChatClient 类型的 Bean 收集到一个 Map 里,Bean 的名称就是 Map 的 Key,实例本身就是 Value。
我们只需要一个简单的注册表类,就能实现模型的动态调度:
这段代码看似简单,却解决了一个关键的工程问题:
- 新增模型时,不需要修改任何调度代码
- 模型注册是声明式的,不用写复杂的控制流
- 模型选择完全由配置数据驱动
这种注册表模式,是实现多模型支持的核心。
在之前设计的数据库表中,Agent 表有一个 model 字段,用来指定这个 Agent 默认使用的模型。
当系统创建 Agent 实例时,只需要一行代码就能拿到对应的模型:
GPT plus 代充 只需 145
这样我们就实现了模型的动态切换:
- Agent 只依赖 ChatClient 这个统一接口
- Agent 完全不用关心模型来自哪个厂商
- 切换模型时,不需要修改 Agent 的代码
模型已经从写死的依赖,变成了可以在运行时动态注入的能力。
到这一步,我们完成了一个重要的转变:
- 所有模型都被统一抽象成 ChatClient
- 多个模型可以在系统中并存
- Agent 可以在运行时自由选择模型
- 模型接入和 Agent 行为彻底解耦
现在,模型不再是某个 API Key 对应的外部服务,而是系统里的一种基础能力组件。
上述内容也同步在我的飞书,欢迎访问
https://my.feishu.cn/wiki/QLauws6lWif1pnkhB8IcAvkhncc?from=from_copylink
如果我的内容对你有帮助,请点赞,评论,收藏。创作不易,你们的支持就是我坚持下去的动力!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/239739.html