环境
使用日期:2026.3.23
OS:Windows10
引擎:Unity2021.3.45
豆包语言模型开通
- https://www.volcengine.com
手机号注册,身份证进行实名认证。 - https://www.volcengine.com/product/ark
点击控制台。 - 语言模型开通服务。

- API Key 管理,创建API Key。
- 接入文档:https://www.volcengine.com/docs/82379/1494384?lang=zh
示例
数据类
csharp
[Serializable]
public class RequestChat
{
public string model;
public List<Message> messages = new List<Message>();
}
[Serializable]
public class Message
{
public string role;
public string content;
}
[Serializable]
public class ResponeChatMessage
{
public Choices[] choices;
}
[Serializable]
public class Choices
{
public string finish_reason;
public int index;
public Message message;
}
请求示例
基础参数(必须)
- baseurl
https://ark.cn-beijing.volces.com/api/v3/chat/completions - model:
接入文档中打开 API Explorer,找到model参数,选择开通的语言模型。
示例:doubao-seed-2-0-code-preview-260215 - apiKey:
创建的Key。
提问
RequestChat类设置使用的语言模型以及问题列表。
Message类中设置提问角色以及问题。
使用UnityWebRequest发送请求,接收响应信息。
使用过程中响应时间比较漫长,大概30秒收到响应。
csharp
using System;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
public class DoubaoChatAPI : MonoBehaviour
{
[SerializeField] string baseUrl;
[SerializeField] string model;
[SerializeField] string apiKey;
bool isRequesting;//请求中
float requesetTime;
string question = string.Empty;
string answer = string.Empty;
void OnGUI()
{
GUILayout.Label("问题:");
question = GUILayout.TextField(question);
GUILayout.Label("回答:");
GUILayout.Label(answer);
if (isRequesting == false)
{
if (GUILayout.Button("开始对话"))
{
isRequesting = true;
requesetTime = 0;
RequestChat requestMessages = new RequestChat();
requestMessages.model = model;
requestMessages.messages.Add(new Message()
{
role = "user",
content = question
});
string messages = JsonUtility.ToJson(requestMessages);
StartCoroutine(PostChat(baseUrl, messages, (result, value) =>
{
Debug.Log(value);
if (result)
{
var info = JsonUtility.FromJson<ResponeChatMessage>(value);
answer = info.choices[0].message.content;
}
else
{
answer = "回答失败,请查看日志";
}
isRequesting = false;
}));
}
}
else
{
requesetTime += Time.deltaTime;
GUILayout.Label("请求时间:" + requesetTime);
}
}
IEnumerator PostChat(string url, string jsonData, Action<bool, string> callback)
{
using (UnityWebRequest request = new UnityWebRequest(url, UnityWebRequest.kHttpVerbPOST))
{
byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(jsonData);
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)
{
callback?.Invoke(true, request.downloadHandler.text);
}
else
{
Debug.LogError("请求失败:" + request.error);
callback?.Invoke(false, request.downloadHandler.text);
}
}
}
}