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

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上下文中

http://www.lryc.cn/news/2396517.html

相关文章:

  • 【Python Cookbook】文件与 IO(一)
  • STM32 HAL库函数学习 GPIO篇
  • 如何以 9 种方式将照片从 iPhone 传输到笔记本电脑
  • 根据jvm源码剖析类加载机制
  • Mixly1.0/2.0/3.0 (windows系统) 安装教程及使用常见问题解决
  • DDS通信中间件——DDS-TSN规范
  • JWT安全:弱签名测试.【实现越权绕过.】
  • MATLAB实现井字棋
  • Baklib知识中台加速企业服务智能化实践
  • 在AIX环境下修改oracle 11g rac的IP地址
  • VMware Tools 手动编译安装版
  • android平台驱动开发(六)--Makefile和Kconfig简介
  • 【手写系列】手写线程池
  • python学习打卡day40
  • redis高并发问题
  • Live Helper Chat 安装部署
  • ARXML解析与可视化工具
  • PnP(Perspective-n-Point)算法 | 用于求解已知n个3D点及其对应2D投影点的相机位姿
  • LeetCode 热题 100 208. 实现 Trie (前缀树)
  • python爬虫:RoboBrowser 的详细使用
  • 在日常管理服务器中如何防止SQL注入与XSS攻击?
  • Wkhtmltopdf使用
  • ArcGIS Pro 创建渔网格网过大,只有几个格网的解决方案
  • 重学计算机网络之以太网
  • 《深度解构现代云原生微服务架构的七大支柱》
  • 使用SCSS实现随机大小的方块在页面滚动
  • AI 眼镜新纪元:贴片式TF卡与 SOC 芯片的黄金组合破局智能穿戴
  • 论文阅读(六)Open Set Video HOI detection from Action-centric Chain-of-Look Prompting
  • 算法学习--持续更新
  • Postman 发送 SOAP 请求步骤 归档