欢迎光临
我们一直在努力

spring AI 的工作原理和运行流程

Spring AI 是 Spring 生态中用于集成人工智能(特别是大语言模型 LLM)的框架,其核心设计目标是提供统一的抽象层,屏蔽不同 AI 供应商(如 OpenAI、Azure、阿里云通义千问等)的 API 差异,使开发者能像使用 Spring Data 或 Spring Cloud 一样开发 AI 应用。

 Spring AI网址

工作原理

  • ‌统一抽象层 (Abstraction Layer)‌ Spring AI 定义了标准的接口(如 ChatClient、EmbeddingModel、ImageModel),底层通过适配器模式对接具体的 AI 提供商。开发者只需依赖 spring-ai-openai-spring-boot-starter 或其他厂商 starter,Spring Boot 自动配置机制会根据 classpath 和配置文件自动装配对应的 Bean。

  • ‌提示词工程与模板 (Prompt Engineering)‌ 通过 Prompt 对象封装系统消息(System Message)、用户消息(User Message)和历史上下文。支持 PromptTemplate 进行动态参数替换,将业务数据注入到预设的提示词结构中。

  • ‌拦截器链机制 (Advisor Chain)‌ 借鉴 Spring AOP 思想,引入 Advisor 概念。在请求发送给模型前后执行横切逻辑,如:

    • ‌记忆管理‌:MessageChatMemoryAdvisor 自动加载和存储对话历史。
    • ‌RAG 增强‌:QuestionAnswerAdvisor 在发送请求前检索向量数据库,将相关知识片段注入 Prompt。
    • ‌安全过滤‌:SafeGuardAdvisor 检查输入输出是否包含敏感信息。
  • ‌结构化输出 (Structured Output)‌ 利用模型的 JSON 模式能力,将非结构化的文本响应直接映射为 Java POJO 对象,避免手动解析字符串。

  • ‌工具调用 (Tool Calling / Function Calling)‌ 允许将 Spring Bean 方法注册为“工具”。模型在推理过程中若判断需要外部数据或执行操作,会生成工具调用请求,Spring AI 负责序列化参数、调用本地 Java 方法,并将结果返回给模型继续生成最终回答。

  • 运行流程

    以一次典型的 RAG(检索增强生成)对话为例,流程如下:

  • ‌请求发起‌:Controller 接收用户提问,调用 Service 层的 ChatClient。
  • ‌Advisor 前置处理‌:
    • ChatMemoryAdvisor 从存储(内存/Redis/DB)中读取该会话的历史消息。
    • QuestionAnswerAdvisor 提取用户问题中的关键词,查询向量数据库(Vector Store),获取相关文档片段。
  • ‌Prompt 构建‌:ChatClient 将系统指令、历史消息、检索到的知识片段、当前用户问题组装成完整的 Prompt 对象。
  • ‌模型调用‌:
    • ChatClient 调用底层的 ChatModel(如 OpenAiChatModel)。
    • ChatModel 将 Prompt 转换为特定厂商的 HTTP 请求格式,发送至 AI 服务商 API。
  • ‌响应处理‌:
    • 接收 AI 返回的原始响应。
    • 若配置了结构化输出,则反序列化为 Java 对象。
    • 若涉及工具调用,则递归执行“工具调用 -> 获取结果 -> 再次请求模型”的过程。
  • ‌Advisor 后置处理‌:
    • ChatMemoryAdvisor 将本轮对话的用户问题和 AI 回答存入历史记录。
  • ‌结果返回‌:将最终内容返回给 Controller。
  • 赞(0)
    未经允许不得转载:171主机测评 » spring AI 的工作原理和运行流程
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址