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

推荐链接

相关推荐
ouliten5 小时前
cuda编程笔记(36)-- 应用Tensor Core加速矩阵乘法
笔记·cuda
智驱力人工智能5 小时前
小区高空抛物AI实时预警方案 筑牢社区头顶安全的实践 高空抛物检测 高空抛物监控安装教程 高空抛物误报率优化方案 高空抛物监控案例分享
人工智能·深度学习·opencv·算法·安全·yolo·边缘计算
qq_160144875 小时前
亲测!2026年零基础学AI的入门干货,新手照做就能上手
人工智能
Howie Zphile5 小时前
全面预算管理难以落地的核心真相:“完美模型幻觉”的认知误区
人工智能·全面预算
人工不智能5775 小时前
拆解 BERT:Output 中的 Hidden States 到底藏了什么秘密?
人工智能·深度学习·bert
盟接之桥5 小时前
盟接之桥说制造:引流品 × 利润品,全球电商平台高效产品组合策略(供讨论)
大数据·linux·服务器·网络·人工智能·制造
kfyty7255 小时前
集成 spring-ai 2.x 实践中遇到的一些问题及解决方案
java·人工智能·spring-ai
h64648564h5 小时前
CANN 性能剖析与调优全指南:从 Profiling 到 Kernel 级优化
人工智能·深度学习
数据与后端架构提升之路5 小时前
论系统安全架构设计及其应用(基于AI大模型项目)
人工智能·安全·系统安全
忆~遂愿5 小时前
ops-cv 算子库深度解析:面向视觉任务的硬件优化与数据布局(NCHW/NHWC)策略
java·大数据·linux·人工智能