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.pswp.cn/bicheng/83255.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/83255.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/83255.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

高溫爐制造企業Odoo ERP實施規劃與深度分析報告

摘要 本報告旨在為高溫爐生產企業提供一個基于Odoo 18平臺的企業資源規劃&#xff08;ERP&#xff09;系統實施的全面分析與規劃。報告首先系統梳理了高溫爐制造業獨特的業務流程特點&#xff0c;隨后詳細映射了Odoo 18各核心模塊功能與這些業務需求的匹配程度。重點分析了生產…

簡述什么是全局鎖?它的應用場景有哪些?

全局鎖是數據庫管理系統中的一種特殊鎖機制&#xff0c;用于對整個數據庫實例進行加鎖&#xff0c;使數據庫處于只讀狀態&#xff0c;阻止所有數據更新&#xff08;DML&#xff09;、數據定義&#xff08;DDL&#xff09;及更新類事務提交等操作。 其核心應用場景包括&#xf…

window 顯示驅動開發-呈現開銷改進(二)

對共享表面的紋理格式支持 驅動程序應支持共享資源和可共享的后臺緩沖區&#xff0c;以使用 DXGI_FORMAT 枚舉中的這些附加紋理格式&#xff1a; DXGI_FORMAT_A8_UNORMDXGI_FORMAT_R8_UNORMDXGI_FORMAT_R8G8_UNORMDXGI_FORMAT_BC1_TYPELESS\*DXGI_FORMAT_BC1_UNORMDXGI_FORMAT…

jenkins集成gitlab實現自動構建

jenkins集成gitlab實現自動構建 前面我們已經部署了Jenkins和gitlab&#xff0c;本文介紹將二者結合使用 項目源碼上傳至gitee提供公網訪問&#xff1a;https://gitee.com/ye-xiao-tian/my-webapp 1、創建一個群組和項目 2、添加ssh密鑰 #生成密鑰 [rootgitlab ~]# ssh-keyge…

barker-OFDM模糊函數原理及仿真

文章目錄 前言一、巴克碼序列二、barker-OFDM 信號1、OFDM 信號表達式2、模糊函數表達式 三、MATLAB 仿真1、MATLAB 核心源碼2、仿真結果①、barker-OFDM 模糊函數②、barker-OFDM 距離分辨率③、barker-OFDM 速度分辨率④、barker-OFDM 等高線圖 四、資源自取 前言 本文進行 …

深入解析 Redis Cluster 架構與實現(一)

#作者&#xff1a;stackofumbrella 文章目錄 Redis Cluster特點Redis Cluster與其它集群模式的區別集群目標性能hash tagsMutli-key操作Cluster Bus安全寫入&#xff08;write safety&#xff09;集群節點的屬性集群拓撲節點間handshake重定向與reshardingMOVED重定向ASK重定向…

linux centos 服務器性能排查 vmstat、top等常用指令

背景:項目上經常出現系統運行緩慢,由于數據庫服務器是linux服務器,記錄下linux服務器性能排查常用指令 vmstat vmstat介紹 vmstat 命令報告關于內核線程、虛擬內存、磁盤、陷阱和 CPU 活動的統計信息。由 vmstat 命令生成的報告可以用于平衡系統負載活動。系統范圍內的這…

在IIS上無法使用PUT等請求

錯誤來源&#xff1a; chat:1 Access to XMLHttpRequest at http://101.126.139.3:11000/api/receiver/message from origin http://101.126.139.3 has been blocked by CORS policy: No Access-Control-Allow-Origin header is present on the requested resource. 其實我的后…

Python訓練第四十一天

DAY 41 簡單CNN 知識回顧 數據增強卷積神經網絡定義的寫法batch歸一化&#xff1a;調整一個批次的分布&#xff0c;常用與圖像數據特征圖&#xff1a;只有卷積操作輸出的才叫特征圖調度器&#xff1a;直接修改基礎學習率 卷積操作常見流程如下&#xff1a; 1. 輸入 → 卷積層 →…

Linux線程同步實戰:多線程程序的同步與調度

個人主頁&#xff1a;chian-ocean 文章專欄-Linux Linux線程同步實戰&#xff1a;多線程程序的同步與調度 個人主頁&#xff1a;chian-ocean文章專欄-Linux 前言&#xff1a;為什么要實現線程同步線程饑餓&#xff08;Thread Starvation&#xff09;示例&#xff1a;搶票問題 …

5.2 初識Spark Streaming

在本節實戰中&#xff0c;我們初步探索了Spark Streaming&#xff0c;它是Spark的流式數據處理子框架&#xff0c;具備高吞吐量、可伸縮性和強容錯能力。我們了解了Spark Streaming的基本概念和運行原理&#xff0c;并通過兩個案例演示了如何利用Spark Streaming實現詞頻統計。…

Go 即時通訊系統:日志模塊重構,并從main函數開始

重構logger 上次寫的logger.go過于繁瑣&#xff0c;有很多沒用到的功能&#xff1b;重構后只提供了簡潔的日志接口&#xff0c;支持日志輪轉、多級別日志記錄等功能&#xff0c;并采用單例模式確保全局只有一個日志實例 全局變量 var (once sync.Once // 用于實現…

「數據采集與網絡爬蟲(使用Python工具)」【數據分析全棧攻略:爬蟲+處理+可視化+報告】

- 第 103 篇 - Date: 2025 - 06 - 01 Author: 鄭龍浩/仟墨 文章目錄 「據采集與網絡爬蟲」【使用工具&#xff1a;Python】一 數據采集1 數據采集綜述&#xff08;1&#xff09;基本介紹&#xff08;2&#xff09;數據目標源&#xff08;3&#xff09;采集方式&#xff08;4&am…

響應式系統與Spring Boot響應式應用開發

響應式系統概述 過去十年間,為應對移動和云計算的需求,軟件行業通過改進開發流程來構建更穩定、健壯且靈活的軟件系統。這種演進不僅服務于傳統用戶端(桌面/Web),還需支持多樣化設備(手機、傳感器等)。為應對這些挑戰,多個組織共同制定了《響應式宣言》(2014年發布)…

POJO、DTO和VO:Java應用中的三種關鍵對象詳解

在軟件開發特別是Java開發中&#xff0c;常常會遇到POJO、DTO和VO這三類對象。它們在不同場景下扮演著重要角色&#xff0c;有助于優化代碼結構、增強系統安全性和提升性能。本文將全面解析這三者的定義、區別及常見使用場景&#xff0c;幫助你更好地理解和應用。 1. POJO&…

leetcode付費題 353. 貪吃蛇游戲解題思路

貪吃蛇游戲試玩:https://patorjk.com/games/snake/ 問題描述 設計一個貪吃蛇游戲,要求實現以下功能: 初始化游戲:給定網格寬度、高度和食物位置序列移動操作:根據指令(上、下、左、右)移動蛇頭規則: 蛇頭碰到邊界或自身身體時游戲結束(返回-1)吃到食物時蛇身長度增加…

NLP學習路線圖(十三):正則表達式

在自然語言處理&#xff08;NLP&#xff09;的浩瀚宇宙中&#xff0c;原始文本數據如同未經雕琢的璞玉。而文本預處理&#xff0c;尤其是其中至關重要的正則表達式技術&#xff0c;正是將這塊璞玉轉化為精美玉器的核心工具集。本文將深入探討正則表達式在NLP文本預處理中的原理…

計算機網絡(4)——網絡層

1.概述 1.1 網絡層服務 (1) 網絡層為不同主機(Host)之間提供了一種邏輯通信機制 (2)每個主機和路由器都運行網絡層協議 發送方&#xff1a;將來自傳輸層的消息封裝到數據報(datagram)中接收方&#xff1a;向傳輸層交付數據段(segment) 1.2 網絡層核心功能 路由選擇(routing…

EMO2:基于末端執行器引導的音頻驅動虛擬形象視頻生成

今天帶來EMO2&#xff08;全稱End-Effector Guided Audio-Driven Avatar Video Generation&#xff09;是阿里巴巴智能計算研究院研發的創新型音頻驅動視頻生成技術。該技術通過結合音頻輸入和靜態人像照片&#xff0c;生成高度逼真且富有表現力的動態視頻內容&#xff0c;值得…

[Redis] Redis:高性能內存數據庫與分布式架構設計

標題&#xff1a;[Redis] 淺談分布式系統 水墨不寫bug 文章目錄 一、什么是Redis&#xff1f;一、核心定位二、核心優勢三、典型應用場景四、Redis vs 傳統數據庫 二、架構選擇與設計1、單機架構&#xff08;應用程序 數據庫服務器&#xff09;2、應用程序和數據庫服務器分離3…