spring AI都能做什么

Spring AI 是 Spring 官方推出的一个用于简化 Java 应用中集成人工智能(AI)功能的框架。它旨在将大语言模型(LLMs)、向量数据库、提示工程(Prompt Engineering)、RAG(检索增强生成)等 AI 能力,以 Spring 开发者熟悉的方式(如依赖注入、自动配置、模板类等)无缝集成到 Spring Boot 应用中。

与大型语言模型集成

Spring通过简单的配置快速集成 OpenAI、Azure OpenAI、HuggingFace、Ollama、Mistral、Google Gemini 等主流 LLM 服务。

java 复制代码
ChatClient chatClient = ... // 自动注入或配置
ChatResponse response = chatClient.call("帮我写一个天气查询的API");
System.out.println(response.getResult().getOutput());

提供了ChatClient和ChatModel和大模型进行对话

ChatModel API 让应用开发者可以非常方便的与 AI 模型进行文本交互,它抽象了应用与模型交互的过程,包括使用 Prompt 作为输入,使用 ChatResponse 作为输出等。

java 复制代码
@RestController
public class ChatModelController {
  private final ChatModel chatModel;

  public ChatModelController(ChatModel chatModel) {
    this.chatModel = chatModel;
  }

  @RequestMapping("/chat")
  public String chat(String input) {
    ChatResponse response = chatModel.call(new Prompt(input));
    return response.getResult().getOutput().getContent();
  }
}

ChatClient 提供了与 AI 模型通信的 Fluent API,它支持同步和反应式(Reactive)编程模型。与 ChatModel、Message、ChatMemory 等原子 API 相比,更加灵活,代码更精简。

java 复制代码
@RestController
public class ChatController {

  private final ChatClient chatClient;

  public ChatController(ChatClient.Builder builder) {
    this.chatClient = builder.build();
  }

  @GetMapping("/chat")
  public String chat(String input) {
    return this.chatClient.prompt()
        .user(input)
        .call()
        .content();
  }
}

Prompt 模板支持

可以定义 prompt 模板,使用变量动态生成 prompt。使用类似 Spring Boot 配置和注入方式加载模板。

java 复制代码
PromptTemplate template = new PromptTemplate("请用Java写一个{task}的例子");
String prompt = template.render(Map.of("task", "文件读取"));

支持RAG

支持将文本向量化后存储到向量数据库(如 Redis, Pinecone, PostgreSQL with pgvector, Milvus 等)。可用于构建 RAG 应用,实现文档问答、知识库问答等。

java 复制代码
EmbeddingClient embeddingClient = ...;
VectorStore vectorStore = new PgVectorStore(...);
vectorStore.add(List.of(new Document("Spring 是什么框架?", metadata)));

支持对话记忆

支持基于chat memory的对话记忆,也就是不需要调用显示的记录每一轮的对话历史。

java 复制代码
//初始化基于内存的对话记忆
ChatMemory chatMemory = new InMemoryChatMemory();

DashScopeChatModel chatModel = ...;
ChatClient chatClient = ChatClient.builder(dashscopeChatModel)
.defaultAdvisors(new MessageChatMemoryAdvisor(chatMemory))
.build();

//对话记忆的唯一标识
String conversantId = UUID.randomUUID().toString();

ChatResponse response = chatClient
        .prompt()
        .user("我想去新疆")
        .advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, conversantId)
                .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10))
        .call()
        .chatResponse();
String content = response.getResult().getOutput().getContent();
Assertions.assertNotNull(content);

logger.info("content: {}", content);

response = chatClient
        .prompt()
        .user("可以帮我推荐一些美食吗")
        .advisors(spec -> spec.param(CHAT_MEMORY_CONVERSATION_ID_KEY, conversantId)
                .param(CHAT_MEMORY_RETRIEVE_SIZE_KEY, 10))
        .call()
        .chatResponse();
content = response.getResult().getOutput().getContent();
Assertions.assertNotNull(content);

logger.info("content: {}", content);

支持Function Calling 和 MCP

Spring AI 提供了 @Tool 注解,可将任意 Java 方法注册为 LLM 可调用的工具:

java 复制代码
@Tool("获取指定城市的当前天气")
public String getCurrentWeather(String location) {
    // 调用天气 API
}
相关推荐
william_yangshun12 小时前
【AI Agent 实战】agent-vision-toolkit 中文版:给纯文本模型(DeepSeek)装上视觉能力
人工智能·多模态
智能体与具身智能12 小时前
TVA具身智能的概念、架构与应用(19)
人工智能·python·具身智能
AI智能体工作室12 小时前
生产级 RAG 检索增强架构实战:向量数据库、混合检索(Hybrid Search)、RRF 融合与重排(Rerank)全链路
人工智能
魏 无羡12 小时前
webclient
java·webclient
geinvse_seg12 小时前
我做了个 AI 架构审查员,把整个微服务项目通读了一遍,还顺手做成了 Skill
人工智能
李帅朋12 小时前
微分基本定义笔记
人工智能·笔记·深度学习·神经网络
醍醐实验室12 小时前
下一代端到端全模态(Omni)模型解密:离散音频 Token 化与极速双工流式交互架构
人工智能
米小虾12 小时前
你的 Agent 有 1000 万上下文,为什么第 50 轮就开始失忆?
人工智能·agent
东风破_12 小时前
Text2SQL :用自然语言操作 SQLite 数据库
人工智能·后端
吴佳浩 Alben12 小时前
Agent 怎么做自动化评测?构建端到端的 Agent Evaluation 体系
人工智能·语言模型·架构·自动化·ai编程