2025-02-11
引擎
00

目录

1.创建API key
2.UI组件
3.编写脚本
4.启动Unity

logo.webp

1.创建API key

访问DeepSeek开放平台,登录你的账号,创建一个API Key,随便命名,我这里命名为Unity_API

image.png 复制并保存好提供的key,DeepSeek平台的规则只允许你在刚创建的时候查看一次key,之后就不能查看了,最好粘贴到记事本或文件传输助手当中

image.png

2.UI组件

在Unity中分别创建三个UI组件: Input Field获取用户的输入,Text用于显示DeepSeek返回的回答,Button用于发送用户的请求 image.png

3.编写脚本

创建空物体命名为DeepSeekChat,将我提供的代码复制粘贴,我们先获取到UI组件,我这里用public直接拖入,将刚刚获取到的API key填入到字段apiKey中,Json解析库依赖Newtonsoft.Json,如果没有需要下载并导入 image.png

c#
using UnityEngine; using UnityEngine.Networking; using System.Collections; using System.Text; using UnityEngine.UI; using TMPro; using System; using Newtonsoft.Json; public class DeepSeekChat : MonoBehaviour { //>这里填你你创建好的API key即可 public string apiKey = ""; public string apiUrl = "https://api.deepseek.com/v1/chat/completions"; public TMP_InputField inputField; public TextMeshProUGUI chatText; public Button btnResquest; bool isFirst = true; private void Start() { btnResquest.onClick.AddListener(SendMessageToDeepSeek); } public void SendMessageToDeepSeek() { string userMessage = inputField.text; //清空文本框 chatText.text = ""; StartCoroutine(PostRequest(userMessage)); } IEnumerator PostRequest(string userMessage) { // 创建请求体 var requestBody = new { model = "deepseek-chat", messages = new[] { new { role = "user", content = userMessage } }, }; string jsonBody = JsonConvert.SerializeObject(requestBody); // 创建UnityWebRequest UnityWebRequest request = new UnityWebRequest(apiUrl, "POST"); byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonBody); request.uploadHandler = new UploadHandlerRaw(bodyRaw); request.downloadHandler = new DownloadHandlerBuffer(); request.SetRequestHeader("Content-Type", "application/json"); request.SetRequestHeader("Authorization", "Bearer " + apiKey); // 发送请求 yield return request.SendWebRequest(); if (request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError) { Debug.LogError("Error: " + request.error); //打印错误详情 } else { // 解析响应 string responseJson = request.downloadHandler.text; var response = JsonUtility.FromJson<DeepSeekResponse>(responseJson); Debug.Log("DeepSeek: " + response.choices[0].message.content); //用户的提问 //chatText.text += "\nUser: " + userMessage; // 返回的回答 if (isFirst) chatText.text += "DeepSeek: " + response.choices[0].message.content; else chatText.text += "\nDeepSeek: " + response.choices[0].message.content; isFirst = false; } } } [System.Serializable] public class DeepSeekResponse { public Choice[] choices; } [System.Serializable] public class Choice { public Message message; } [System.Serializable] public class Message { public string role; public string content; }

4.启动Unity

启动引擎看看效果如何,等待的过程还是有点久的,可能要几十秒,这主要是因为最近DeepSeek热度太高,请求也大,官方做出了一定的限制

434149c9-2f59-4fa7-9c46-5d2d79afb3ac.png

本文作者:xuxuxuJS

本文链接:

版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!