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.mzph.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的容器技术,可以在一台主机上轻松为任何应用创建一个轻量级的、可移植的、自给自足的容器…