主页 > 其他  > 

Unity接入本地部署的DeepSeek

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; } } }
标签:

Unity接入本地部署的DeepSeek由讯客互联其他栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“Unity接入本地部署的DeepSeek