文章目录
- Pre
- 概述
- 一、入口:
ChatModel.call(String message) - 二、模型实现层:
DeepSeekChatModel.internalCall
- 步骤 a:
createRequest—— 构建 API 请求体 - 步骤 b:
retryTemplate.execute(...)—— 安全可靠的远程调用 - 步骤 c:
deepSeekApi.chatCompletionEntity—— 实际 HTTP 请求
- 三、响应处理与返回
- 四、整体调用链路图
- 五、总结

大模型开发 - 01 Spring AI 核心特性一览
大模型开发 - 02 Spring AI Concepts
大模型开发 - 03 QuickStart_借助DeepSeekChatModel实现Spring AI 集成 DeepSeek
在构建基于大语言模型(LLM)的 AI 应用时,Spring AI 提供了一套简洁而强大的抽象层,使得开发者可以轻松集成各类模型服务(如 DeepSeek、OpenAI、Anthropic 等)。本文将深入剖析 Spring AI 中调用 DeepSeek 模型的完整调用链路,帮助你理解从一句简单的 到实际发起远程 HTTP 请求的全过程。
Spring AI 的 接口定义了一个默认方法:
这个方法是开发者最常用的入口。它做了三件事:
- 将原始字符串消息封装为 对象
是 Spring AI 中表示“提示词”的核心数据结构,内部包含一个或多个 (如 、、 等),用于构建对话上下文。 - 调用重载的 方法
该方法由具体实现类(如 )提供,返回一个 。 - 提取生成结果并返回纯文本
从响应中取出第一个 的输出文本,若为空则返回空字符串。
关键点: 是连接用户输入与模型 API 的桥梁,它将自然语言消息结构化为模型可理解的格式。
当调用 时,实际执行的是其内部方法 :
(省略部分无关代码)
这个方法是整个调用流程的核心,可分为三个关键步骤:

将 Spring AI 的 对象转换为 DeepSeek API 所需的 。该请求体通常包含:
- :指定使用的模型(如 )
- :从 中提取的 列表,转换为 DeepSeek 兼容的格式(如 )
- 、 等可选参数
设计亮点:通过适配器模式,Spring AI 屏蔽了不同模型 API 的差异,开发者只需关注统一的 结构。
Spring AI 利用 Spring Retry 模板封装了网络调用,确保在临时故障(如网络抖动、限流)时自动重试:
这行代码背后是健壮的容错机制,极大提升了生产环境的稳定性。
是一个基于 Spring 的 封装的客户端:
这里使用了现代、声明式的 (Spring 6+ 推荐),相比传统的 更简洁、类型安全。
远程调用成功后,API 返回的 JSON 被反序列化为 对象。Spring AI 会:
- 从响应中提取生成的文本(通常在 )
- 封装为 对象
- 构建 ,包含:
- 生成结果列表()
- Token 使用统计()
- 设置到 (用于指标监控、链路追踪等)
最终, 返回 ,而最外层的 则提取纯文本返回给用户。
- 抽象统一:Spring AI 通过 // 等抽象,实现了“一次编写,多模型切换”的能力。
- 生产就绪:内置重试、可观测性(Observation)、错误处理,适合企业级应用。
- 扩展性强:开发者可自定义 、、甚至替换底层 。
理解这一调用流程,不仅能帮助你更好地调试和优化 AI 应用,也为后续集成其他模型(如通义千问、Moonshot)打下坚实基础。
建议:在实际项目中,可结合 和 Micrometer 实现对 LLM 调用的耗时、Token 消耗、错误率等指标的监控。
参考:
- Spring AI 官方文档:https://docs.spring.io/spring-ai/reference/
- DeepSeek API 文档:https://platform.deepseek.com/api-docs/
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/222493.html