访问DeepSeek开放平台,登录你的账号,创建一个API Key,随便命名,我这里命名为Unity_API
复制并保存好提供的key,DeepSeek平台的规则只允许你在刚创建的时候查看一次key,之后就不能查看了,最好粘贴到记事本或文件传输助手当中
在Unity中分别创建三个UI组件:
Input Field获取用户的输入,Text用于显示DeepSeek返回的回答,Button用于发送用户的请求
创建空物体命名为DeepSeekChat
,将我提供的代码复制粘贴,我们先获取到UI组件,我这里用public直接拖入,将刚刚获取到的API key填入到字段apiKey
中,Json解析库依赖Newtonsoft.Json,如果没有需要下载并导入
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;
}
启动引擎看看效果如何,等待的过程还是有点久的,可能要几十秒,这主要是因为最近DeepSeek热度太高,请求也大,官方做出了一定的限制
本文作者:xuxuxuJS
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!