提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

Unity调用DeepSeek-R1 API实现智能对话


前言

本文详细讲解如何在Unity中集成深度求索(DeepSeek)公司的R1大模型API,实现自然语言对话功能。通过C#脚本实现异步网络请求,并结合Unity的UI系统打造交互式AI对话应用。

一、环境准备与需求

开发环境
Unity 2021.3+

.NET 4.x运行时

TextMeshPro(用于UI显示)

API准备
前往DeepSeek官网注册账号

创建API Key并记录密钥

查看API文档获取请求格式

二、核心实现步骤

2.1 场景搭建
创建UI系统:

InputField输入框

Button发送按钮

ScrollView滚动视图显示对话记录

2.2 编写API请求脚本

using UnityEngine;
using UnityEngine.Networking;
using System.Collections;
using System.Text;

public class DeepSeekManager : MonoBehaviour
{
    private const string API_URL = "https://api.deepseek.com/v1/chat/completions";
    public string apiKey = "your-api-key";
    
    [System.Serializable]
    private class RequestBody
    {
        public Message[] messages;
        public string model = "deepseek-r1";
    }

    [System.Serializable]
    private class Message
    {
        public string role;
        public string content;
    }

    public IEnumerator SendRequest(string userInput)
    {
        // 构建请求体
        var requestBody = new RequestBody{
            messages = new Message[]{
                new Message{
                    role = "user",
                    content = userInput
                }
            }
        };

        string jsonBody = JsonUtility.ToJson(requestBody);
        byte[] bodyRaw = Encoding.UTF8.GetBytes(jsonBody);

        using(UnityWebRequest request = new UnityWebRequest(API_URL, "POST"))
        {
            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.Success)
            {
                // 解析返回的JSON数据
                string response = request.downloadHandler.text;
                Debug.Log("API Response: " + response);
                // 提取回复内容并更新UI
            }
            else
            {
                Debug.LogError("API Error: " + request.error);
            }
        }
    }
}

2.3 UI事件绑定

public class ChatController : MonoBehaviour
{
    [SerializeField] private TMP_InputField inputField;
    [SerializeField] private DeepSeekManager apiManager;

    public void OnSendButtonClick()
    {
        StartCoroutine(apiManager.SendRequest(inputField.text));
        inputField.text = "";
    }
}

总结

本文详细演示了Unity与DeepSeek-R1的对接流程,开发者可在此基础上扩展出丰富的AI交互应用。建议结合Unity的语音识别组件打造全语音交互系统,或结合AR技术创建虚实结合的智能助手。

Logo

分享前沿Unity技术干货和开发经验,精彩的Unity活动和社区相关信息

更多推荐