大模型应用开发-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.会话记忆

相关推荐
OpenAnolis小助手2 分钟前
龙蜥社区亮相 GOSIM AI Vision Forum 共话“Agentic Native”开源新
人工智能·ai·开源·操作系统·龙蜥社区·agent
恩喜玛生物14 分钟前
03_GROMACS分子动力学实战:从 Factor Xa 输入准备到轨迹分析
ai
gz927cool2 小时前
Python 全栈应用最佳实践完整指南
开发语言·python·ai
CoderYanger2 小时前
Java EE 进阶:5. Spring IoC&DI(第三弹):Spring DI
java·开发语言·spring boot·spring·面试·java-ee·mvc
郭小李2 小时前
spring中@Transactional注解对事务的支持
数据库·spring·oracle
日日大王学编程3 小时前
阿里巴巴开源 Data Agent(Text2SQL)项目全维度详解
java·ai·开源
七夜zippoe4 小时前
Agent 测试实战:单元测试、集成测试与 Mock LLM 策略
ai·单元测试·集成测试·mock·agent
Solange__4 小时前
物流园区怎么用AI生成3D调度预演?从道路底图、车辆转弯到网页评审
图像处理·人工智能·游戏·3d·ai·自然语言处理·关卡设计
最强小杰4 小时前
gpt-image-2.5-sunburst + OpenAI SDK + Cline 怎么接?完整图生图与局部重绘教程
gpt·ios·ai·iphone
骑着蜗牛撵大象3275 小时前
闲鱼捡漏自动化:关键词加价格上限先粗筛,AI 大模型再做第一轮判定
大数据·人工智能·ai·自动化·二手交易·闲鱼·关键词监控