1. 准备工作
-
获取API密钥
前往DeepSeek官网注册账号,创建应用并获取API密钥(通常格式为sk-xxxxxxxx
)。 -
查看API文档
获取API端点URL(如https://api.deepseek.com/v1/chat/completions
)及参数要求(如model
、messages
等)。
2. 创建Unity脚本
using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
public class DeepSeekIntegration : MonoBehaviour
{
private const string API_URL = "https://api.deepseek.com/v1/chat/completions";
private const string API_KEY = "YOUR_API_KEY"; // 替换为你的密钥
public void SendRequest(string userInput)
{
StartCoroutine(PostRequest(userInput));
}
private IEnumerator PostRequest(string input)
{
// 1. 构建请求体
var requestBody = new RequestData
{
model = "deepseek-chat",
messages = new[]
{
new Message { role = "user", content = input }
}
};
string jsonBody = JsonUtility.ToJson(requestBody);
// 2. 创建UnityWebRequest
using UnityWebRequest request = new UnityWebRequest(API_URL, "POST");
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonBody);
request.uploadHandler = new UploadHandlerRaw(bodyRaw);
request.downloadHandler = new DownloadHandlerBuffer();
// 3. 设置请求头
request.SetRequestHeader("Content-Type", "application/json");
request.SetRequestHeader("Authorization", $"Bearer {API_KEY}");
// 4. 发送请求
yield return request.SendWebRequest();
// 5. 处理响应
if (request.result == UnityWebRequest.Result.Success)
{
var response = JsonUtility.FromJson<ResponseData>(request.downloadHandler.text);
string reply = response.choices[0].message.content;
Debug.Log("AI回复: " + reply);
// 在此处处理回复(如更新UI)
}
else
{
Debug.LogError($"请求失败: {request.error}");
}
}
// 数据模型
[System.Serializable]
private class RequestData
{
public string model;
public Message[] messages;
}
[System.Serializable]
private class Message
{
public string role;
public string content;
}
[System.Serializable]
private class ResponseData
{
public Choice[] choices;
}
[System.Serializable]
private class Choice
{
public Message message;
}
}
3. 使用脚本
- 将脚本挂载到游戏对象(如
GameManager
)。 - 调用
SendRequest
方法发送请求:
// 示例:当玩家按下按键时发送请求
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
SendRequest("你好,请介绍一下Unity引擎。");
}
}
4. 注意事项
-
密钥安全
不要将API密钥硬编码在代码中!建议:-
使用环境变量
-
加密存储在配置文件
-
通过服务器中转请求(更安全)
-
-
异步处理
Unity协程不会阻塞主线程,但需处理加载状态(如显示“等待中”UI)。 -
跨平台问题
WebGL需处理CORS,可能需要配置服务器响应头。 -
错误处理
添加重试机制、网络检查及详细的错误日志。 -
速率限制
查看API文档了解每分钟最大请求数,避免超额调用。