当前位置: 首页 > news >正文

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

内容来自黑马程序员

这里写目录标题

  • 认识AI和大模型
  • 大模型应用开发
    • 模型部署方案对比
    • 模型部署-云服务
    • 模型部署-本地部署
    • 调用大模型
    • 什么是大模型应用
      • 传统应用和大模型应用
      • 大模型应用
    • 大模型应用开发技术架构
  • SpringAI
    • 对话机器人
      • 快速入门
      • 会话日志
      • 会话记忆

认识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实例代码:

# Please install OpenAI SDK first: `pip3 install openai`from openai import OpenAIclient = 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-4oChatGPTOpenAIhttps://chatgpt.com/
Claude 3.5Claude AIAnthropichttps://claude.ai/chats
DeepSeek-R1DeepSeekDeepSeekhttps://www.deepseek.com/
文心大模型3.5文心一言百度https://yiyan.baidu.com/
星火3.5讯飞星火科大讯飞https://xinghuo.xfyun.cn/desk
Qwen-Max通义千问阿里巴巴https://tongyi.aliyun.com/qianwen/
MoonshootKimi月之暗面https://kimi.moonshot.cn/
Yi-Large零一万物零一万物https://platform.lingyiwanwu.com/

在这里插入图片描述

大模型应用开发技术架构

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

SpringAI

在这里插入图片描述

对话机器人

快速入门

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

在这里插入图片描述

会话日志

SpringAI利用了AOP原理提供了AI会话是的拦截、增强等功能,也就是Advisor。
在这里插入图片描述

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

会话记忆

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

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. 定义会话存储方式
 public interface ChatMemory {void add(String conversationId, List<Message> messages);List<Message> get(String conversationId, int lastN);void clear(String conversationId);}

在这里插入图片描述

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

添加会话id到AdvisorContext上下文中

相关文章:

  • 深度学习|pytorch基本运算-乘除法和幂运算
  • OVD开放词汇检测 Detic 训练COCO数据集实践
  • Spring Boot,两种配置文件
  • JavaEE: wait和notify
  • Java 项目架构设计:模块化、分层架构的实战经验
  • rtpinsertsound:语音注入攻击!全参数详细教程!Kali Linux教程!
  • 佳能 Canon G3030 Series 打印机信息
  • JS逆向案例—喜马拉雅xm-sign详情页爬取
  • C#获取磁盘容量:代码实现与应用场景解析
  • JWT 入门
  • Java数据结构之ArrayList(如果想知道Java中有关ArrayList的知识点,那么只看这一篇就足够了!)
  • 华为OD机试_2025 B卷_静态扫描(Python,100分)(附详细解题思路)
  • CMake指令:list()
  • AtCoder AT_abc408_d [ABC408D] Flip to Gather
  • 时间的基本概念与相关技术三
  • 【LaTex公式】使用align环境实现cases文本的换行
  • 姜老师的MBTI课程:MBTI是可以转变的
  • 【LLM相关知识点】关于LLM项目实施流程的简单整理(一)
  • BLE协议全景图:从0开始理解低功耗蓝牙
  • IPD流程体系-TR3评审要素表
  • 大连效果图制作公司/东莞关键词优化平台
  • 如何防止网站挂马/宁波正规seo快速排名公司
  • wordpress主题 问答/什么是seo优化?
  • 淘宝网站做超链接/公众号推广费用一般多少
  • 怎么自己做微网站吗/上海网站seo策划
  • 有哪些可以在线做app的网站/seo自动排名软件