前段时间,我在公司接了个小项目,要在一个已有的 Java 后台里接入 AI 生成内容的能力。项目经理拍拍我的肩膀说:
"你不是很喜欢搞 AI 吗?用你说的那个啥 Spring AI 试试?"
我一听,嘿嘿,这正中我下怀。于是我卷起袖子,开始了我的 Spring AI 初体验。
今天这篇文章,我就不讲那些一大堆接口和配置的干货,咱们来点轻松的------我把 Spring AI 最关键的七个概念,串成了一个故事。你听完,保证对 Spring AI 有一个结构清晰的理解。
模型:AI 的"灵魂角色"
想象一下你在咖啡厅点了一杯拿铁,你说:"少糖、加冰、中杯。"咖啡师熟练地开始制作。
这个咖啡师 ,就是你使用的模型(Model) 。
在 Spring AI 中,模型是最核心的存在。你用它来:
- 聊天问答
- 文本生成
- 代码补全
- 文档总结
Spring AI 支持多种模型,典型的如:
- OpenAI(GPT 系列)
- Azure OpenAI
- HuggingFace
- Ollama(本地模型)
- Mistral、Claude 等等
用 Spring AI 的 ChatClient 或 PromptTemplate 你可以直接和模型对话。配置也很灵活,例如这样搞定一个 OpenAI 模型:
这就好像你给咖啡师指定了一个"星巴克级别"的专业认证,出来的结果当然不会差。
提示词(Prompt):你和模型沟通的语言
你说"来一杯中杯少糖加冰的拿铁",这句话就是你的提示词。
在 Spring AI 里,Prompt 是你给模型下达指令的方式,分为两种:
- 静态提示词(像给一个模版填空)
- 动态提示词(可以插入变量)
Spring AI 的提示词功能非常灵活,你可以这样写:
再填充参数:
这样你就可以把人话变成模型的"工作指令"。换句话说:提示词写得好,AI跑不了!
嵌入(Embedding):让文本拥有"坐标"的魔法
说起"嵌入",很多人第一反应是"好抽象"。
我一开始也是懵的,后来我琢磨出来了:嵌入就像是给每段话都打上一个"位置坐标",让 AI 知道它们在知识空间里的关系。
比如,你有一大堆产品文档,如何让 AI 理解这些内容?你得:
- 把文档拆分成段落
- 用模型将每一段转换成一个"向量"(embedding)
- 存到向量数据库里(如 Pinecone、Weaviate、Redis)
之后,用户一问"你家路由器怎么重置密码?",系统就:
- 把问题也变成向量
- 在向量库中找"最接近"的段落
- 把这些内容和原始提示词合并,喂给模型
Spring AI 提供了 EmbeddingClient 和 VectorStore,可以方便地做这些事情。你可以选择不同的向量数据库实现,比如:
这样一搞,AI 回答就有"知识支持",不再胡说八道。
令牌(Token):AI 眼中的"字数限制器"
我们人类写东西用"字",AI 模型用"令牌(Token)"。
比如:
- "Spring AI真好用"
- 会被分成几个 token,比如 ["Spring", " AI", "真", "好", "用"]
每个模型都有最大 token 限制,比如 GPT-4 是 8k、32k。
为什么这点重要?
因为你每次发出的提示词、参考内容(像嵌入文档),甚至模型回复的内容------都要占用 token!
Spring AI 提供了一些帮助你"计算 token"的工具(虽然底层还得靠模型 API 本身),所以:
- 做文档问答时要控制参考文本长度
- 多轮对话时要管理上下文截断
否则......token 超了,模型直接罢工!
结构化输出:让 AI 说人话,还能被机器读懂
你问 AI:"请告诉我下周北京的天气。"
AI 回你:"下周北京天气如下:周一晴,最高温25℃,最低温15℃;周二多云......"
人类能看懂,程序处理很困难。怎么办?让 AI 输出结构化内容!
Spring AI 支持用JSON Schema 或 Java 对象反序列化的方式,从大模型输出中提取结构。
举个例子:
然后你配置一个 OutputParser,就可以自动把模型的回复变成一个 Java 对象。
这点太香了!比如我们做知识图谱、智能问答、甚至表格导出时,就可以不再手动解析模型输出。
把你的数据和 API 接入 AI:让大模型"知道你是谁"
很多时候,AI 模型都不知道你是谁、你做什么。它再聪明,也只能凭提示词"猜"。
但如果你能把自己的数据、API、数据库、知识库 都"喂"给它,那就变成:一个真正属于你的 AI 助手!
Spring AI 的集成能力非常强:
- 嵌入自有文档到向量数据库
- 结合数据库检索(RAG)
- 把外部 API 查询结果当作提示词的一部分
- 甚至结合 Spring Flow、Spring Integration 实现流程编排!
我举个我亲身做的例子:
公司有个老系统,客户问的问题要查数据库。我写了一个自动流程:
- 用户提问 → 模型判断意图
- 如果是查订单 → 请求公司订单 API
- 把返回结果组合提示词 → 发给模型 → 总结成自然语言回答
这,就是 AI + 业务系统 的完美结合!
评估 AI 响应:不准的 AI,就是瞎扯
AI 不是万能的。尤其是生成式模型,有时就是"自信地胡说八道"。所以,评估(Evaluation) 就成了不可缺少的一环。
评估包括两种方式:
1. 自动评估(Auto Eval)
比如你给模型一堆输入/输出数据,然后用另一个模型来打分。
Spring AI 社区正在推动 Eval 模块建设,用于集成以下工具:
- LangSmith
- TruLens
- PromptFoo
未来会有更多可视化、自动评分的能力。
2. 人工评估(Human Eval)
有时,必须人工盯一盯结果,比如:
- 回答是否正确
- 是否符合语气/规范
- 是否泄露信息
这就需要你在开发过程中多做一些 A/B 测试,甚至设置日志追踪。
小提示: Spring AI 支持 OutputInterceptor,可以在模型调用前后自定义日志行为,方便调试和分析!
总结一下:Spring AI的七个关键词
咱们复盘一下,用这七个核心概念,就能掌握 Spring AI 的基本玩法:
小米的私藏建议
作为一个 31 岁的程序员,我给刚入门的你几条建议:
- 先玩起来:Spring AI 项目脚手架简单,开箱即用!
- 多写 Prompt:好提示词是生产力的源泉!
- 慢慢"喂"数据:有自己的嵌入和 API,AI 才聪明!
- 别迷信 AI:评估、日志和审查,永远不能少!
END
如果你也在用 Spring AI 或者正准备接入它,欢迎留言交流呀~我把这篇文章当成是我写给"几个月前刚开始折腾 AI 的自己"的一封信,也希望它能帮到你。
点个 【在看】或【转发】 ,让更多人也知道 Spring AI 有多好玩!
我们下次见啦~
我是小米,一个喜欢分享技术的31岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号"软件求生",获取更多技术干货!