SpringAI+DeepSeek大模型应用开发实战

内容来自黑马程序员

这里写目录标题

认识AI和大模型

  • AI的发展
    AI,人工智能(Artificial Intelligence),使机器能够像人类一样思考、学习和解决问题的技术。
  • 大语言模型

我们所熟知的大模型 (Large Language Models, LLM),例如GP、DeepSeek底层都是采用Transformer神经网络模型。

  • Transformer

大模型应用开发

模型部署方案对比

模型部署-云服务

国内知名的云服务平台都提供了全球知名的大模型的私有部署功能,甚至还提供了这些模型的API开发平台,无需部署就能提供。

云平台 公司 地址
阿里百炼 阿里巴巴 https://bailian.console.aliyun.com
干帆平台 百度 https://console.bce.baidu.com/qianfan/overview
腾讯TI平台 腾讯 https://cloud.tencent.com/product/ti
SiliconCloud 硅基流动 https://siliconflow.cn/zh-cn/siliconcloud
火山方舟-火山引擎 字节跳动 https://www.volcengine.com/product/ark

模型部署-本地部署

本地部署最简单的一种方案就是使用ollama,官网地址:https//ollama.com

调用大模型

以下是DeepSeek官方给出的一段API实例代码:

python 复制代码
# Please install OpenAI SDK first: `pip3 install openai`

from openai import OpenAI

client = OpenAI(api_key="<DeepSeek API Key>", base_url="https://api.deepseek.com")

response = client.chat.completions.create(
    model="deepseek-chat",
    messages=[
        {"role": "system", "content": "You are a helpful assistant"},
        {"role": "user", "content": "Hello"},
    ],
    stream=False
)

print(response.choices[0].message.content)

什么是大模型应用

传统应用和大模型应用

大模型应用是基于大模型的推理、分析、生成能力,结合传统编程能力,开发出的各种应用。

大模型应用

大模型 对话产品 公司 地址
GPT-3.5、GPT-4o ChatGPT OpenAI https://chatgpt.com/
Claude 3.5 Claude AI Anthropic https://claude.ai/chats
DeepSeek-R1 DeepSeek DeepSeek https://www.deepseek.com/
文心大模型3.5 文心一言 百度 https://yiyan.baidu.com/
星火3.5 讯飞星火 科大讯飞 https://xinghuo.xfyun.cn/desk
Qwen-Max 通义千问 阿里巴巴 https://tongyi.aliyun.com/qianwen/
Moonshoot Kimi 月之暗面 https://kimi.moonshot.cn/
Yi-Large 零一万物 零一万物 https://platform.lingyiwanwu.com/

大模型应用开发技术架构




SpringAI

对话机器人

快速入门

  1. 引入依赖
xml 复制代码
<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>
  1. 配置模型
yml 复制代码
spring:
  ai:
    ollama:
      base-url: http://localhost:11434
      chat:
        model: deepseek-r1:7b
yml 复制代码
spring:
  ai:
    openai:
      base-url: https://dashscope.aliyuncs.com/compatible-model
      api-key: ${OPENAI_API_KEY}
      chat:
        options:
          model: qwen-max # 模型名称
          temperature: 0.8 # 模型温柔度,值越大,输出结果越随机
  1. 配置客户端
java 复制代码
   @Bean
   public ChatClient chatClient(OllamaChatModel model){
       return ChatClient.builder(model)
               .defaultSystem("你是可爱的助手,名字叫小团团")
               .build();
   }
java 复制代码
 String content = chatClient.prompt()
          .user("你是谁?")
          .call()
          .content();

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

会话日志

SpringAI利用了AOP原理提供了AI会话是的拦截、增强等功能,也就是Advisor。

java 复制代码
@Bean
public ChatClient chatClient(OllamaChatModel model){
    return ChatClient.builder(model)   // 创建ChatClient工厂实例
            .defaultSystem("你是可爱的助手,名字叫小团团") 
            .defaultAdvisors(new SimpleLoggerAdvisor()) // 配置日志Advisor
            .build(); // 构建ChatClient实例
}

会话记忆

大模型是具备记忆能力的,要想让大模型记住之前聊天的内容,唯一的办法就是把之前聊天的内容与新的提示词一起发给大模型。

python 复制代码
from openai import OpenAI

#1.初始化OpenAI客户端
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",
    temperature=0.7,
    messages=[
        {"role":"system","content":"你是一个热心的AI助手,你的名字叫小团团"},
        {"role":"user","content":"你好,你是谁? "},
    ],
    stream=False
)
# 3.打印返回结果
print(response.choices[o].message.content)
  1. 定义会话存储方式
java 复制代码
 public interface ChatMemory {
     void add(String conversationId, List<Message> messages);

     List<Message> get(String conversationId, int lastN);

     void clear(String conversationId);
 }
java 复制代码
   @Bean
   public ChatMemory chatMemory(){
       return new InMemoryChatMemory();
   }
  1. 配置会话记忆
java 复制代码
 @Bean
 public ChatClient chatClient(OllamaChatModel model){
     return ChatClient.builder(model)
             .defaultSystem("你是可爱的助手,名字叫小团团")
             .defaultAdvisors(
                     new SimpleLoggerAdvisor(),
                     new MessageChatMemoryAdvisor(chatMemory())
             )
             .build();
 }
  1. 添加会话id
java 复制代码
Flux<String> content = chatclient.prompt()
    .user("你好,我叫小明")
    .advisors(a -> a.param(CHAT_MEMORY_CONVERSATION_ID_KEY, chatId))
    .stream()
    .content();

添加会话id到AdvisorContext上下文中

相关推荐
即兴小索奇9 小时前
Gamma AI:AI演示文稿制作工具,高效解决PPT框架搭建难与排版耗时问题
ai·商业·ai商业洞察·即兴小索奇
mabo_9704@163.com13 小时前
SpringAI调用MCP服务的实现思路
spring·ai
小林学习编程15 小时前
2025年最新AI大模型原理和应用面试题
人工智能·ai·面试
kailp18 小时前
突破效率与质量边界:深入解析MiniMax-Remover视频物体移除方案
人工智能·ai·大模型·gpu算力·图片渲染
即兴小索奇19 小时前
AutoGPT实战体验:AI自动任务工具如何高效完成深度调研?避坑技巧分享
ai·商业·ai商业洞察·即兴小索奇
连合机器人1 天前
城市脉搏中的“绿色卫士”:当智能科技邂逅城市清洁
人工智能·ai·设备租赁·连合直租·智能清洁专家·有鹿巡扫机器人
贾全1 天前
准备篇:搭建你的AI“炼丹炉“
人工智能·ai·vlm·多模态ai·vlm环境配置
即兴小索奇1 天前
Gamma AI:高效制作PPT的智能生成工具
ai·商业·ai商业洞察·即兴小索奇
胡耀超1 天前
大模型架构演进全景:从Transformer到下一代智能系统的技术路径(MoE、Mamba/SSM、混合架构)
人工智能·深度学习·ai·架构·大模型·transformer·技术趋势分析
m0_603888711 天前
Delta Activations A Representation for Finetuned Large Language Models
人工智能·ai·语言模型·自然语言处理·论文速览