Unity 使用API接入DeepSeek-V3等大模型

本文以某山引擎为例,可以使用其他家的某义千问、某心一言、某大某飞等等,没有广告,放心使用。

注册与认证

各家可能稍微有点差异,按照各家的引导流程即可。

  1. 进入官网,注册一个账号,并完成实名认证。
  2. 进入控制台,申请一个属于自己的 API Key。

选择模型与创建接入点

  1. 在管理控制台挑选想要调用的某包大模型,如 doubao-pro-4k 等,点击开通服务。
  2. 进入在线推理板块,点击 “创建推理接入点”,根据需求填写信息,添加对应的模型。

配置 Unity 项目

  1. 在 Unity 项目中,可能需要根据某包大模型的 SDK 要求进行一些环境配置。如果有专门的 Unity SDK 包,将其导入到 Unity 项目中。
  2. 若通过 HTTP 请求接入,可使用 Unity 的UnityWebRequest类来发送请求和接收响应。

编写代码接入某包大模型

  1. 获取必要的参数,如 API 域名、模型名称、API Key 等。API 域名为https://ark.cn-beijing.volces.com/api/v3,模型名称根据选择的具体模型而定。
  2. 构建请求体,以下是示例代码:
    using UnityEngine;
    using UnityEngine.Networking;
    using System.Collections;
    using System.Text;
    using Newtonsoft.Json;
    
    public class DoubaoChat : MonoBehaviour
    {
        private string apiUrl = "https://ark.cn-beijing.volces.com/api/v3/chat/completions";
        private string apiKey = "YOUR_API_KEY";
        private string model = "YOUR_MODEL_NAME";
    
        IEnumerator SendChatRequest(string userMessage)
        {
            // 构建请求数据
            var requestData = new
            {
                model = model,
                messages = new[]
                {
                    new { role = "system", content = "你是豆包,是由字节跳动开发的AI人工智能助手" },
                    new { role = "user", content = userMessage }
                }
            };
    
            // 将请求数据转换为JSON格式
            string requestBody = JsonConvert.SerializeObject(requestData);
    
            // 创建UnityWebRequest对象
            using (UnityWebRequest request = new UnityWebRequest(apiUrl, "POST"))
            {
                // 设置请求头
                request.SetRequestHeader("Content-Type", "application/json");
                request.SetRequestHeader("Authorization", "Bearer " + apiKey);
    
                // 设置请求体
                byte[] bodyRaw = Encoding.UTF8.GetBytes(requestBody);
                request.uploadHandler = new UploadHandlerRaw(bodyRaw);
                request.downloadHandler = new DownloadHandlerBuffer();
    
                // 发送请求并等待响应
                yield return request.SendWebRequest();
    
                // 处理响应
                if (request.isDone)
                {
                    if (request.result == UnityWebRequest.Result.Success)
                    {
                        string responseJson = request.downloadHandler.text;
                        // 解析响应JSON数据,获取聊天回复内容
                        var responseData = JsonConvert.DeserializeObject<ChatResponse>(responseJson);
                        Debug.Log("豆包回复:" + responseData.choices[0].message.content);
                    }
                    else
                    {
                        Debug.LogError("请求出错:" + request.error);
                    }
                }
            }
        }
    
        // 定义聊天响应的数据结构
        private class ChatResponse
        {
            public Choice[] choices;
        }
    
        private class Choice
        {
            public Message message;
        }
    
        private class Message
        {
            public string content;
        }
    }
  3. 你可以在其他脚本中调用SendChatRequest方法来发送用户消息并获取豆包的回复,例如:
    public class ExampleUsage : MonoBehaviour
    {
        private DoubaoChat doubaoChat;
    
        void Start()
        {
            doubaoChat = GetComponent<DoubaoChat>();
            // 发送聊天请求
            StartCoroutine(doubaoChat.SendChatRequest("常见的十字花科植物有哪些?"));
        }
    }

    运行Unity 稍等片刻就可以看到返回的对话内容了