初学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 手动加载

推荐链接

相关推荐
FakeOccupational36 分钟前
【github 有趣项目】OpenPLC: 支持通用硬件的开源 PLC 软件平台‌
笔记
circuitsosk37 分钟前
NL2SQL在工业级场景下的精度优化:Schema Linking + 动态Few-shot实战
人工智能·python·sql·大模型·nl2sql
9000AI40 分钟前
9000AI如何工业化生产流量?高质量规模生产与矩阵化饱和覆盖
人工智能
字节数据平台2 小时前
iDA:从 ChatBI 到专业数据分析助手的演进之路
大数据·人工智能·机器学习·数据分析
warpdrivelabs2 小时前
Codex 开源 harness 全面了解
开发语言·人工智能
mit6.8242 小时前
微软如何交付企业级Agent
人工智能
Mininglamp_27182 小时前
明略科技携手海康机器人亮相世界机器人大会,以“Agent+具身“联合进入商业机器人场景
人工智能·科技·机器人·开源·agent·ai agent
2401_894915532 小时前
GEO 优化源码全解析:从搜索引擎到 AI 引擎的底层改写逻辑
java·服务器·前端·数据库·人工智能·分布式·搜索引擎
MobotStone3 小时前
从“听得懂”到“干得了”:工业大模型落地工厂的三层进化路线
人工智能
wangruofeng4 小时前
GLM-5.3-Flash 发布:追平 Opus 4.8 的智力,1/40 的价格,跑在国产芯片上
人工智能·aigc·chatglm (智谱)