unity調用本地部署deepseek全流程

unity調用本地部署deepseek全流程

deepseek本地部署

  • 安裝Ollama
    搜索并打開Ollama官網[Ollama](https://ollama.com/download)

    點擊Download下載對應版本

    下載后點擊直接安裝

  • 安裝deepseek大語言模型

    官網選擇Models

    選擇deepseek-r1,選擇對應的模型,復制對應的命令

    打開cmd,輸入命名啟動下載。下載完后便可以簡單進行聊天了。

  • 啟動Ollama服務

    cmd輸入ollama serve命令啟動服務

    如果無法啟動,可以嘗試退出ollama后重啟

    常用的Ollama命令

    命令說明
    ollama run <模型名> # 例如:ollama run llama2下載并運行模型
    ollama pull <模型名> # 例如:ollama pull mistral僅下載模型不運行
    ollama list查看已安裝的模型列表
    ollama rm <模型名> # 例如:ollama rm llama2刪除本地模型
    ollama cp <原模型名> <新模型名>復制模型
    ollama create <自定義模型名> -f ./Modelfile自定義模型執行構建命令
    ollama push <自定義模型名>推送自定義模型到倉庫
    ollama serve啟動 Ollama 服務器
    Ctrl+C 終止進程,或結束相關后臺服務。停止服務器

unity調用

調用地址默認為:http://127.0.0.1:11434/api/chat

核心代碼

using System;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.Networking;public class LocalDeepSeek : MonoBehaviour
{string  url = "http://127.0.0.1:11434/api/chat";/// <summary>/// 緩存對話/// </summary>[SerializeField] public List<SendData> m_DataList = new List<SendData>();/// <summary>/// api key/// </summary>[SerializeField] private string api_key;/// <summary>/// AI設定/// </summary>public string m_SystemSetting = string.Empty;/// <summary>/// 模型名稱/// </summary>public string m_ModelName = "deepseek-r1:7b";//使用本地安裝的模型private void Start(){//運行時,添加AI設定m_DataList.Add(new SendData("system", m_SystemSetting));}/ <summary>/ 發送消息/ </summary>/ <returns></returns>public void PostMsg(string _msg, Action<string> _callback){//緩存發送的信息列表m_DataList.Add(new SendData("user", _msg));StartCoroutine(Request(_callback));}/// <summary>/// 調用接口/// </summary>/// <param name="_postWord"></param>/// <param name="_callback"></param>/// <returns></returns>public  IEnumerator Request(System.Action<string> _callback){using (UnityWebRequest request = new UnityWebRequest(url, "POST")){Debug.Log("url:" + url);Debug.Log("m_ModelName:" + m_ModelName);PostData _postData = new PostData{model = m_ModelName,messages = m_DataList,stream = false};string _jsonText = JsonUtility.ToJson(_postData);byte[] data = System.Text.Encoding.UTF8.GetBytes(_jsonText);request.uploadHandler = (UploadHandler)new UploadHandlerRaw(data);request.downloadHandler = (DownloadHandler)new DownloadHandlerBuffer();request.SetRequestHeader("Content-Type", "application/json");if (!string.IsNullOrEmpty(api_key)){request.SetRequestHeader("Authorization", string.Format("Bearer {0}", api_key));}yield return request.SendWebRequest();if (request.responseCode == 200){string _msgBack = request.downloadHandler.text;Debug.Log(_msgBack);MessageBack2 _textback = JsonUtility.FromJson<MessageBack2>(_msgBack);string _backMsg = _textback.message.content;// 使用正則表達式提取Match match = Regex.Match(_backMsg, @"</think>\n\n(.*?)$", RegexOptions.Singleline);if (match.Success){string extractedText = match.Groups[1].Value.Trim();_backMsg = extractedText;}Debug.Log(_msgBack);m_DataList.Add(new SendData("assistant", _backMsg));_callback(_backMsg);//返回接收的消息}else{string _msgBack = request.downloadHandler.text;Debug.LogError(_msgBack);}}}#region 數據包[Serializable]public class PostData{public string model;public List<SendData> messages;public bool stream = false;}[Serializable]public class MessageBack{public string id;public string created;public string model;public List<MessageBody> choices;}[Serializable]public class MessageBack2{public string model;public string created;public Message message;}[Serializable]public class MessageBody{public Message message;public string finish_reason;public string index;}[Serializable]public class Message{public string role;public string content;}[Serializable]public class SendData{[SerializeField] public string role;[SerializeField] public string content;public SendData() { }public SendData(string _role, string _content){role = _role;content = _content;}}#endregion
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/897134.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/897134.shtml
英文地址,請注明出處:http://en.pswp.cn/news/897134.shtml

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

相關文章

Linux - 網絡基礎(應用層,傳輸層)

一、應用層 1&#xff09;發送接收流程 1. 發送文件 write 函數發送數據到 TCP 套接字時&#xff0c;內容不一定會立即通過網絡發送出去。這是因為網絡通信涉及多個層次的緩沖和處理&#xff0c;TCP 是一個面向連接的協議&#xff0c;它需要進行一定的排隊、確認和重傳等處理…

wxWidgets GUI 跨平臺 入門學習筆記

準備 參考 https://wiki.wxwidgets.org/Microsoft_Visual_C_NuGethttps://wiki.wxwidgets.org/Tools#Rapid_Application_Development_.2F_GUI_Buildershttps://docs.wxwidgets.org/3.2/https://docs.wxwidgets.org/latest/overview_helloworld.htmlhttps://wizardforcel.gitb…

使用joblib 多線程/多進程

文章目錄 1. Joblib 并行計算的兩種模式多進程(Multiprocessing,適用于 CPU 密集型任務)多線程(Multithreading,適用于 I/O 密集型任務)2. Joblib 的基本用法3. Joblib 多進程示例(適用于 CPU 密集型任務)示例:計算平方4. Joblib 多線程示例(適用于 I/O 密集型任務)…

神旗視訊Linux client 3.4版本發布和開源

在國產化替代的大潮中&#xff0c;神旗視訊推出專為統信 Linux、麒麟 Linux OS 打造打造的開源視頻會議客戶端&#xff0c;全面適配國產 x86 及 arm64 架構 CPU&#xff0c;以穩定、安全、靈活的特性&#xff0c;為國產操作系統用戶帶來前所未有的高效溝通體驗&#xff0c;同時…

HCIA-IP路由動態-RIP

一、概念 動態路由是指路由器通過運行動態路由協議&#xff08;RIP、OSPF等&#xff09;&#xff0c;自動學習和發現網絡中的路由信息。路由器之間通過交換路由協議數據包&#xff0c;互相通告自己所知道的網絡信息&#xff0c;從而構建和更新路由表。 二、RIP(路由信息協議)…

VEC系列-RabbitMQ 入門筆記

消息隊列&#xff08;MQ&#xff09;對于開發者來說是一個經常聽到的詞匯&#xff0c;但在實際開發中&#xff0c;大多數人并不會真正用到它。網上已經有很多關于 MQ 概述和原理的詳細講解&#xff0c;官網文檔和技術博客也都介紹得很深入&#xff0c;因此&#xff0c;我在這里…

js中??是什么意思

在 JavaScript 中&#xff0c;?? 是一個邏輯運算符&#xff0c;稱為 空值合并運算符&#xff08;Nullish Coalescing Operator&#xff09;。它用于檢查左側的值是否為 null 或 undefined&#xff0c;如果是&#xff0c;則返回右側的值&#xff1b;否則返回左側的值。 語法 …

常見限流算法

限流是指在高并發、大流量請求的情況下&#xff0c;限制新的流量對系統的訪問&#xff0c;以保證系統服務的安全性。常見的限流算法及其詳細介紹如下&#xff1a; 計數器算法&#xff08;Fixed Window Counter&#xff09; 原理&#xff1a;使用一個固定時間窗口內的計數器來…

YOLOv12本地部署教程——42%速度提升,讓高效目標檢測觸手可及

YOLOv12 是“你只看一次”&#xff08;You Only Look Once, YOLO&#xff09;系列的最新版本&#xff0c;于 2025 年 2 月發布。它引入了注意力機制&#xff0c;提升了檢測精度&#xff0c;同時保持了高效的實時性能。在保持速度的同時&#xff0c;顯著提升了檢測精度。例如&am…

【原創】C# HttpClient 讀取流數據的問題

默認情況下HttpClient中有緩存&#xff0c;在讀取流數據的時候&#xff0c;往往要等一小會兒&#xff0c;然后讀出一大堆。 我們在請求OpenAI類的大模型的時候&#xff0c;往往要一邊讀取一邊顯示&#xff08;輸出&#xff09;&#xff0c;這時候需要禁止HttpClient 中內置的緩…

能源行業標桿:信創系統在智能電網中的3個創新應用案例

在當今數字化浪潮洶涌澎湃的時代&#xff0c;信息技術應用創新&#xff08;信創&#xff09;已成為推動我國經濟社會發展的重要引擎。智能電網作為能源行業的核心領域&#xff0c;其信息化建設對于保障國家能源安全和促進能源轉型具有重要意義。今天&#xff0c;讓我們一同探索…

AcWing 藍橋杯集訓·每日一題2025·5526. 平衡細菌

5526. 平衡細菌 題意 給定一個序列 ( a i ) (a_i) (ai?)&#xff0c;每次操作可以選擇一個位置 (p)&#xff0c;令從 ( a p ) (a_p) (ap?) 開始的每個數都加上一個以 (1) 或者 (-1) 為公差的從 ( 1 / ? 1 ) (1 / -1) (1/?1) 開始的等差數列。求最小化讓序列歸零的操作…

PTA 7-6 列出連通集

題目詳情&#xff1a; 給定一個有 n 個頂點和 m 條邊的無向圖&#xff0c;請用深度優先遍歷&#xff08;DFS&#xff09;和廣度優先遍歷&#xff08;BFS&#xff09;分別列出其所有的連通集。假設頂點從 0 到 n?1 編號。進行搜索時&#xff0c;假設我們總是從編號最小的頂點出…

ES中數據刷新策略refresh

在 Elasticsearch 中&#xff0c;插入數據時的 refresh 參數控制文檔在寫入后何時對搜索可見&#xff0c;其行為直接影響數據可見性和系統性能。以下是 refresh 參數的三個可選值&#xff08;true、false、wait_for&#xff09;的詳細說明及適用場景&#xff1a; 1. refreshtr…

用Python的Pandas庫解鎖數據科學:從入門到實戰

用Python的Pandas庫解鎖數據科學&#xff1a;從入門到實戰 引言 Python的Pandas庫&#xff08;名稱源自"Panel Data"&#xff09;作為數據科學生態系統的基石&#xff0c;憑借其強大的數據結構和靈活的操作功能&#xff0c;已成為全球超過90%數據工作者的首選工具。…

如何提高域名解析速度?

在搭建網站或使用在線服務時&#xff0c;許多人會問&#xff1a;“為什么我的網站加載速度這么慢?”“如何提高域名解析速度?”“域名解析速度對網站性能有什么影響?”域名解析速度直接影響用戶訪問網站的體驗&#xff0c;因此&#xff0c;了解如何提高域名解析速度尤為重要…

深度學習語義分割數據集全景解析

一、語義分割任務概述 語義分割是計算機視覺領域的核心任務之一&#xff0c;目標是通過算法將圖像中的每個像素精準劃分到對應的語義類別&#xff08;如道路、車輛、行人等&#xff09;。高質量標注數據集是推動該領域發展的關鍵因素。本文將系統梳理主流數據集的技術特征與適…

貪心算法一

> 作者&#xff1a;?舊言~ > 座右銘&#xff1a;松樹千年終是朽&#xff0c;槿花一日自為榮。 > 目標&#xff1a;了解什么是貪心算法&#xff0c;并且掌握貪心算法。 > 毒雞湯&#xff1a;有些事情&#xff0c;總是不明白&#xff0c;所以我不會堅持。早安! >…

基于websocket的多用戶網頁五子棋 --- 測試報告

目錄 功能測試自動化測試性能測試 功能測試 1.登錄注冊頁面 2.游戲大廳頁面 3.游戲房間頁面 自動化測試 1.使用腦圖編寫web自動化測試用例 2.創建自動化項目&#xff0c;根據用例通過selenium來實現腳本 根據腦圖進行測試用例的編寫&#xff1a; 每個頁面一個測試類&am…

docker學習與使用

一、docker概述 1.docker是什么 是一個開源的應用容器引擎&#xff0c;基于go語言開發并遵循apache2.0協議開源 是在Linux容器里運行應用的開源工具 是一種輕量級的 “虛擬機” Docker的容器技術,可以在一臺主機上輕松為任何應用創建一個輕量級的、可移植的、自給自足的容器…