大模型应用开发-SpringAI框架

1.DeepSeek官方给出的API调用大模型代码

python 复制代码
from openai import OpenAI

# 1.初始化OpenAI客户端
client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

# 2.发送http请求到大模型
response = client.chat.completions.create(
    model="deepseek-r1",
    messages=[
        {"role": "system", "content": "你是一个热心的AI助手,你的名字叫小团团"},
        {"role": "user", "content": "你好,你是谁?"},
    ],
    stream=False
)

# 3.打印返回结果
print(response.choices[0].message.content)

2.大模型应用开发过程

3.SpringAI对话机器人入门

①引入 Maven 依赖 → ②yml 配置模型地址与模型名 →③写 @Bean 配置 ChatClient 客户端,调用对话(普通阻塞调用 / Flux 流式输出)

pom.xml 引入依赖

html 复制代码
<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring‑ai‑bom</artifactId>
            <version>${spring‑ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Ollama 的 starter 启动依赖

html 复制代码
<dependency>
    <groupId>org.springframework.ai</groupId>
    <artifactId>spring‑ai‑ollama‑spring‑boot‑starter</artifactId>
</dependency>

application.yml(配置模型)

java 复制代码
spring:
  ai:
    ollama:
      base‑url: http://localhost:11434
      chat:
        model: deepseek‑r1:7b

解释:

  1. base‑url:本地 Ollama 后台服务地址,默认端口就是 11434;如果 ollama 部署别的机器就改成对应 ip。
  2. model:指定使用本地已经下载好的大模型名字;注意模型名字必须和 ollama pull 下载的完全一致。
java 复制代码
spring:
  ai:
    openai:
      base‑url: https://dashscope.aliyuncs.com/compatible‑mode
      api‑key: ${OPENAI_API_KEY}
      chat:
        options:
          model: qwen‑max
          temperature: 0.8

配置 ChatClient 客户端 + 调用(Java 代码)

@Bean 生成 ChatClient 对象

java 复制代码
@Configuration
public class AiConfig {

    @Bean
    public ChatClient chatClient(OllamaChatModel model){
        return ChatClient.builder(model)
                // defaultSystem:全局系统提示词,设定AI角色(人设)
                .defaultSystem("你是可爱的助手,名字叫小团团")
                .build();
    }
}

解释关键点:

  1. OllamaChatModel:由 starter 自动创建,直接作为方法入参注入进来。
  2. ChatClient.builder(model) 使用构造器模式构建客户端实例。
  3. defaultSystem():全局系统提示词,设置 AI 助手的身份人设;后面每一次对话默认都会带上这条角色指令。

① call () 普通阻塞调用(一次性返回全部回答字符串)在controller里面

java 复制代码
// user("你是谁?") 用户提问;call()阻塞等待全部结果返回;content拿到回答文本
String content = chatClient.prompt()
        .user("你是谁?")
        .call()
        .content();

阻塞式;等大模型完整生成完所有文字之后一次性返回结果;前端看到的是一下子整段回复。

② stream () 流式输出(Flux<String>,打字机效果,一段一段返回)

java 复制代码
import reactor.core.publisher.Flux;

Flux<String> content = chatClient.prompt()
        .user("你是谁?")
        .stream()
        .content();

4.会话日志

java 复制代码
    @Bean
    public ChatClient chatClient(AlibabaOpenAiChatModel model, ChatMemory chatMemory) {
        return ChatClient
                .builder(model)//绑定大模型model 
                .defaultSystem("你是一个热心、可爱的智能助手,你的名字叫小团团,请以小团团的身份和语气回答问题。")
                .defaultAdvisors(//拦截器
                        new SimpleLoggerAdvisor(),//日志打印
                        new MessageChatMemoryAdvisor(chatMemory)//会话记忆
                )
                .build();
    }

日志配置

bash 复制代码
logging:
  level:
    org.springframework.ai: debug
    com.itheima.ai: debug
  • 发给通义模型完整 Prompt(包含 system 角色词 + chatMemory 拼接的历史上下文)
  • 大模型返回原始 JSON 响应内容。

5.会话记忆

相关推荐
java资料站2 小时前
十一、Spring AI Alibaba · 高级 · 多智能体(Multi-agent)
人工智能·spring·microsoft
jyOverQ3 小时前
JSON-RPC 2.0、Codex、MCP Client 和 MCP Server 是什么关系?以调用 GitHub 工具为例
ai·mcp
海马4 小时前
Spring Cloud 开发知识整理
spring·spring cloud·wpf
面包狗AI4S4 小时前
【AI4S】生化环材高可信技术与产业周报(2026-10-03—2026-10-09)
人工智能·深度学习·机器学习·ai
刘科领4 小时前
使用ollama & openweb-ui 本地搭建自己的AI
人工智能·python·ui·ai
不开大的凯20774 小时前
AI权力游戏:同一天,两种答案,一场算力暗战
大数据·人工智能·ai·ai office
全栈练习生5 小时前
模型上下文协议(MCP)
python·ai
木圭的AI时代指南5 小时前
EmbeddingGemma 2 图片检索实测:3 款多模态向量模型在无显卡 Ubuntu 上的完整账本
ai·本地部署·向量模型·图片检索