Unity 接入 DeepSeek 实现 AI 对话完整步骤
前言
大语言模型正深刻改变人机交互方式,DeepSeek 凭借强大的推理能力、文本快速响应能力及超长上下文,成为开发者接入 AI 对话的热门选择。本文带你从零开始在 Unity 中接入 DeepSeek,实现实时 AI 对话。从 API 获取、配置到 UI 交互,全程详细介绍。
一、DeepSeek
1.1 介绍
DeepSeek(深度求索) 是由幻方量化孵化的一家中国 AI 实验室,专注于大语言模型的研发。自 2023 年成立以来,DeepSeek 凭借其低成本、高性能、全开源的技术路线,迅速成为全球 AI 领域的重要力量。
核心亮点
- 极致性价比:训练成本仅 557 万美元,性能对标 GPT-4
- 超长上下文:支持 100 万 tokens,可一次性处理《三体》三部曲
- 开源生态:模型权重完全开放,开发者可自由部署
1.2 效果展示
(此处省略演示动图)
二、获取 DeepSeek 模型 API
2.1 API 调用文档
DeepSeek 的 API 文档:https://api-docs.deepseek.com/zh-cn/
2.2 获取 API 密钥
登录 DeepSeek 开放平台获取 API 密钥:https://platform.deepseek.com/api_keys
点击创建 API key,然后输入名称,之后点击复制 APIKEY(后面在 Unity 中接入对话时会用到)。
重要提示:密钥仅在申请成功时完整显示一次,后续只能查看基本信息。请务必妥善保存,建议存储在本地安全位置。
2.3 模型价格
DeepSeek 的百万 Tokens 价格约为两到三元左右,相比之下已经很划算了,用作对话 API 使用完全足够。
2.4 用量信息
可以在 DeepSeek 开放平台查看用量信息,消费金额、API 请求次数和 Tokens 的消耗都可以看到。
三、接入 Unity 使用
3.1 新建 Unity 项目
使用 UnityHub 新建一个 Unity 项目,然后新建场景和脚本。将脚本挂载到场景中运行查看效果。
3.2 AI 对话脚本
调用脚本 DeepSeekTest.cs
using UnityEngine;
public class DeepSeekTest : MonoBehaviour
{
private void Start()
{
DeepSeekDialogueManager.GetInstance().SendMessageToDeepSeek("你好");
}
}
核心脚本 DeepSeekDialogueManager.cs
System.Collections;
UnityEngine;
Newtonsoft.Json;
UnityEngine.Networking;
UnityEngine.UI;
:
{
apiKey = ;
apiUrl = ;
modelName = ;
maxTokens = ;
DeepSeekDialogueManager instance;
{
(instance == )
{
instance = DeepSeekDialogueManager();
}
instance;
}
{
instance = ;
}
{
StartCoroutine(PostRequest(data));
}
{
requestBody =
{
model = modelName,
max_tokens = maxTokens,
messages = []
{
{ role = , content = message }
}
};
jsonBody = JsonConvert.SerializeObject(requestBody);
Debug.Log( + jsonBody);
UnityWebRequest request = UnityWebRequest(apiUrl, );
[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonBody);
request.uploadHandler = UploadHandlerRaw(bodyRaw);
request.downloadHandler = DownloadHandlerBuffer();
request.SetRequestHeader(, );
request.SetRequestHeader(, + apiKey);
request.SendWebRequest();
(request.result == UnityWebRequest.Result.ConnectionError || request.result == UnityWebRequest.Result.ProtocolError)
{
Debug.LogError();
}
{
responseJson = request.downloadHandler.text;
Debug.Log( + responseJson);
response = JsonConvert.DeserializeObject<DeepSeekResponse>(responseJson);
(response != && response.choices.Length > )
{
reply = response.choices[].message.content;
Debug.Log( + reply);
}
{
Debug.LogError();
}
}
request.Dispose();
}
{
Choice[] choices;
}
{
Message message;
}
{
content;
}
}


