初学Spring AI 笔记

目录

  1. [Spring AI 简介](#Spring AI 简介)
  2. 依赖与环境配置
  3. 基础概念
  4. [集成 OpenAI(或其他 LLM 提供商)](#集成 OpenAI(或其他 LLM 提供商))
  5. [Prompt 模板引擎](#Prompt 模板引擎)
  6. [Embedding 与向量数据库](#Embedding 与向量数据库)
  7. [Spring AI Chat Client 使用](#Spring AI Chat Client 使用)
  8. [Spring AI 和 LangChain 对比](#Spring AI 和 LangChain 对比)
  9. 常见问题与建议

Spring AI 简介

Spring AI 是 Spring 团队推出的人工智能集成框架,旨在简化 AI 模型(如 OpenAI、Hugging Face、Mistral、Azure OpenAI)与 Spring 应用的结合。

核心特性:

  • 支持多种 LLM(OpenAI、Azure、Ollama、HuggingFace 等)
  • Prompt 模板支持
  • Embedding 和向量数据库支持
  • 与 Spring Boot 无缝集成

依赖与环境配置

Maven 依赖示例(以 OpenAI 为例)

xml 复制代码
<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
  <version>0.8.1</version>
</dependency>

配置 application.yml

yaml 复制代码
spring:
  ai:
    openai:
      api-key: ${OPENAI_API_KEY}
      base-url: https://api.openai.com/v1/
      chat:
        model: gpt-3.5-turbo

基础概念

概念 说明
LLM Client 连接大型语言模型的客户端封装
Prompt 提示语模板,用于格式化输入
Embedding 文本向量化表示,用于检索和相似度匹配
Vector Store 向量数据库(如 Redis、Pinecone、Chroma)
RAG 检索增强生成,结合检索与 LLM 生成回答

集成 OpenAI(或其他 LLM 提供商)

java 复制代码
@Autowired
private OpenAiChatClient chatClient;

public void askModel() {
    String result = chatClient.call("用一句话描述Spring AI");
    System.out.println(result);
}

如果使用 Prompt 模板:

java 复制代码
@Autowired
private PromptTemplate promptTemplate;

public void promptWithTemplate() {
    Map<String, Object> params = Map.of("topic", "Spring AI", "style", "简洁");
    Prompt prompt = promptTemplate.createPrompt(params);
    System.out.println(chatClient.call(prompt));
}

Prompt 模板引擎

支持多种风格(SpEL、Mustache、Handlebars 等)

示例:

src/main/resources/prompts/summary.st

txt 复制代码
用{{style}}的方式总结 {{topic}} 的核心内容。
java 复制代码
PromptTemplate promptTemplate = new PromptTemplate(ResourcePromptTemplateLoader.fromClasspath("prompts/summary.st"));
Prompt prompt = promptTemplate.createPrompt(Map.of("style", "简洁", "topic", "Spring AI"));

Embedding 与向量数据库

Spring AI 提供标准接口对接向量数据库(如 Redis, Chroma, Milvus 等)

依赖添加(示例以 Chroma 为例):

xml 复制代码
<dependency>
  <groupId>org.springframework.ai</groupId>
  <artifactId>spring-ai-chroma-store</artifactId>
</dependency>

示例配置:

yaml 复制代码
spring:
  ai:
    embedding:
      model: text-embedding-ada-002

代码使用:

java 复制代码
@Autowired
EmbeddingClient embeddingClient;

EmbeddingRequest request = new EmbeddingRequest(List.of("Spring AI 是什么?"));
EmbeddingResponse response = embeddingClient.embed(request);

List<Float> vector = response.getResult().get(0).getEmbedding();

Spring AI Chat Client 使用

java 复制代码
@Autowired
ChatClient chatClient;

public void chat() {
    String response = chatClient.prompt()
        .user("介绍一下 Spring AI")
        .call()
        .content();
    System.out.println(response);
}

增强调用(上下文、多轮对话)

java 复制代码
ChatResponse res = chatClient.prompt()
    .system("你是一个Java专家")
    .user("Spring AI 有什么优势?")
    .call();

System.out.println(res.getResult().getOutput().getContent());

Spring AI 和 LangChain 对比

项目 Spring AI LangChain
开发语言 Java / Kotlin Python
上手难度 简单,Spring Boot 原生集成 中等,需要了解链式结构和模块机制
社区支持 Spring 官方维护 开源社区驱动(使用广泛)
功能支持 基础功能完善,正在扩展中 丰富:RAG、Agents、Tool、Chains等
适用场景 Java 企业应用、SpringBoot 项目 原型开发、快速迭代、学术/科研

常见问题与建议

Q1: OpenAI API 报错 401 Unauthorized?

  • 确保配置了正确的 api-key
  • 检查网络是否能访问 https://api.openai.com

Q2: 如何替换模型?

  • 修改 application.yml 的 model 名称,如 gpt-4, gpt-3.5-turbo

Q3: 如何引入 Prompt 模板?

  • 使用 @PromptTemplate 注解,或 ResourcePromptTemplateLoader 手动加载

推荐链接

相关推荐
zzywxc7876 分钟前
详细探讨AI在金融、医疗、教育和制造业四大领域的具体落地案例,并通过代码、流程图、Prompt示例和图表等方式展示这些应用的实际效果。
开发语言·javascript·人工智能·深度学习·金融·prompt·流程图
算家计算9 分钟前
32K上下文开源语音理解、40分钟深度交互——Voxtral-Small-24B-2507本地部署教程
人工智能·开源·aigc
快乐zbc14 分钟前
数学建模Topsis法笔记
笔记·数学建模
yiqiqukanhaiba14 分钟前
STM32学习笔记14-I2C硬件控制
笔记·stm32·学习
聚客AI20 分钟前
📝工程级开源:PyTorch手搓LLaMA4-MoE全栈指南
人工智能·llm·掘金·日新计划
TechubNews20 分钟前
加密资产投资的六种策略:稳定币合规后的 Web3 投资和 RWA
人工智能·web3
机器之心24 分钟前
7年了,OpenAI官方给出五代GPT对比,网友却怀念起「狂野」初代
人工智能·openai
后端小肥肠29 分钟前
Coze+ComfyUI 实战:视频制作成本降10 倍,高质量成片这么做
人工智能·aigc·coze
悠哉悠哉愿意29 分钟前
【Python语法基础学习笔记】if语句
笔记·python·学习
爱分享的飘哥1 小时前
第七十章:告别“手写循环”噩梦!Trainer结构搭建:PyTorch Lightning让你“一键炼丹”!
人工智能·pytorch·分布式训练·lightning·accelerate·训练框架·trainer