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

Unity 接入本地部署的DeepSeek

接入本地部署的DeepSeek🌵

  • 🍱本地部署DeepSeek
  • 🍝 API 调用

🍱本地部署DeepSeek

参考这里👈

🍝 API 调用

向Ollama发送post请求,接收结果。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
using UnityEngine.Networking;
using Newtonsoft.Json;
using System.Linq;
namespace ZYF
{
    public class DeepSeek : MonoBehaviour
    {
        public class Response {
            public string model;
            public string created_at;
            public string response;
            public bool done;
        }
        public static DeepSeek Instance;
        [SerializeField]
        private string baseUrl = "http://localhost:11434/api/generate";
        [SerializeField]
        private string model= "deepseek-r1:7b";
        [SerializeField]
        private string prefix = "推测下下面内容的真实表达内容后再回答,并且回答不要带特殊字符:";
        public UnityEvent<string> onGetResponseEvent = new UnityEvent<string>();
        [SerializeField]
        private string currentRequestContent;

        private void Awake()
        {
            Instance = this;
        }
        
        internal void Request(string content)
        {
            this.currentRequestContent = $"{prefix}{content}";
            StopRequest();
            StartCoroutine(nameof(SendPostRequest));
        }

        public void StopRequest()
        {
            StopCoroutine(nameof(SendPostRequest));
            Debug.Log($"取消请求");
        }

        private IEnumerator SendPostRequest()
        {
            var data = new{model=this.model,prompt=currentRequestContent};
            var json = JsonConvert.SerializeObject(data);
            Debug.Log(json);
            UnityWebRequest request = UnityWebRequest.Post(uri:baseUrl,postData: json, contentType: "application/json");
            yield return request.SendWebRequest();
            if (request.result == UnityWebRequest.Result.Success)
            {
                var res = request.downloadHandler.text;
                res = ToJsonData(res);

                var datas = JsonConvert.DeserializeObject<List<Response>>(res);
                if (datas != null)
                {
                    var result = GetResponseContent(datas);

                    result = RemoveThinkContents(result);

                    onGetResponseEvent?.Invoke(result);
                }
            }
            else {
                Debug.LogError($"request error:{request.error}",gameObject);
            }
        }

        private string ToJsonData(string res)
        {
            res = res.Replace("}", "},");
            res = res.Substring(0, res.Length - 1);
            res = $"[{res}]";
            Debug.Log(res);
            return res;
        }

        private string GetResponseContent(List<Response> datas)
        {
            var result = datas.Where(d => d.done == false).Select(d => d.response).Aggregate((current, next) => current + next);
            Debug.Log(result);
            return result;
        }

        private string RemoveThinkContents(string content)
        {
            int tIndex = content.LastIndexOf("</think>") + 8;
            content = content.Substring(tIndex);
            content = content.Trim();
            Debug.Log($"去掉think内容:{content}");
            return content;
        }
    }
}

相关文章:

  • C语言复习4:有关数组的基础常见算法
  • C语言复习8:动态内存分配
  • 流程定义和流程实例
  • rk3568 sysrq如何使用快捷键
  • 题解 | 牛客周赛83 Java ABCDEF
  • 多Agent协作智能系统
  • Flutter系列教程之(9)——Flutter调用Android原生
  • 让自己如何快速有用一台华为云桌面。
  • 2025国家护网HVV高频面试题总结来了01(题目+回答)
  • C# dll文件的反编译获取源码
  • 【蓝桥】大小写转换
  • [含文档+PPT+源码等]精品基于Python实现的微信小程序的在线医疗咨询系统
  • 我们应该如何优化UI(基于UGUI)
  • 爬虫:PhantomJS的详细使用和实战案例
  • 【电力——tarjan割点,求连通块】
  • Leetcode132:分割回文串 II
  • 【领域】百度OCR识别
  • 请AI帮我们进行JAVA ORM 框架的选型, Hibernate, Mybatis, Bee,如何选择
  • 类和对象进一步了解c++
  • ​SMPP 协议在短信网关中的应用与迁移指南​附上文档地址(另外有个包内的方法,我使用的版本是又问题的,文章已经附上解决方式)
  • 聊城做wap网站哪儿好/免费制作个人网站
  • 合肥网站建设第一品牌/网站运营培训学校
  • 广州市专业做商城网站/10条重大新闻
  • 教育类网站怎么做/除了91还有什么关键词
  • 苏州建设局网站实名制/有网站模板怎么建站
  • 网站模板带后台/百度客服平台