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
}
相关推荐
北京中科新远科技6 分钟前
兼容光模块上线前怎么测:识别、DOM、误码与批次回归清单
人工智能·数据挖掘·回归
RockHopper20259 分钟前
统一目的的分布式智能体 vs 多个独立应用智能体的集成
人工智能·系统架构·智能体·agent 工程
桃西西呀14 分钟前
饭桌上又卡壳了?我用 TRAE 写了个嘴替鸭,把回话提前备好
人工智能·llm·ai编程
袋鼠云数栈14 分钟前
让 SQL 解析不再重复造轮子:SqlParserX 正式开源
数据库·人工智能·sql·开源·数据治理
齐 飞15 分钟前
idea中git误操作撤回git reset --hard ‘HEAD@{1}‘
java·git·intellij-idea
kyriewen20 分钟前
我让 AI 当候选人面了一轮:居然一个问题都没问倒它
人工智能·程序员·ai编程
月与清酒27 分钟前
2026年10月AI大模型全景对比:GPT-6、Claude 5.5、Gemini 4、DeepSeek V4.1到底差在哪
人工智能·gpt·ai
你的保护色32 分钟前
多AS互联BGP4综合实验设计
java
来自于狂人34 分钟前
AI前沿速递|AI自己“进化“操作界面干翻GPT-5.5!8B“流体模型“提速2.54倍,清华让Agent学会“收拾记忆“成本直降28%
人工智能·gpt
科技看点说1 小时前
AI画面不廉价:质感的三层来源详解
人工智能