Unity使用豆包语言模型

环境

使用日期:2026.3.23

OS:Windows10

引擎:Unity2021.3.45

豆包语言模型开通

  1. https://www.volcengine.com
    手机号注册,身份证进行实名认证。
  2. https://www.volcengine.com/product/ark
    点击控制台。
  3. 语言模型开通服务。
  4. API Key 管理,创建API Key。
  5. 接入文档: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;
}

请求示例

基础参数(必须)

  1. baseurl
    https://ark.cn-beijing.volces.com/api/v3/chat/completions
  2. model:
    接入文档中打开 API Explorer,找到model参数,选择开通的语言模型。
    示例:doubao-seed-2-0-code-preview-260215
  3. 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);
            }
        }
    }
}
相关推荐
小清兔1 天前
Addressable的设置打包流程
笔记·游戏·unity·c#
3D霸霸1 天前
Sourcetree 拉取新工程
数据仓库·unity
程序员正茂1 天前
Unity3d中RawImage显示视频画面偏白的解决方法
unity·视频·rawimage
纤纡.1 天前
从零到一:基于魔搭社区 Qwen2-1.5B-Instruct 实现本地文本分类实战
人工智能·语言模型·数据挖掘
renhongxia11 天前
工程科研中的AI应用:结构力学分析技巧
人工智能·深度学习·生成对抗网络·语言模型·自然语言处理
mxwin1 天前
Unity SetPassCall和DrawCall的区别是什么
unity·游戏引擎·shader
萑澈1 天前
闭源大语言模型参数量测算的法医学方法论与前沿实践
人工智能·语言模型·自然语言处理
moonsims1 天前
AiBrainLink:无人化系统异构连接架构-多执行体、多链路(5G+自组网)、多业务流(控制、遥测、视频、文件)透明传输、多对多控制
unity·游戏引擎
renhongxia11 天前
开源大模型VS闭源大模型:2026年格局再梳理
深度学习·算法·语言模型·分类·开源
小贺儿开发1 天前
Unity3D 年会抽奖工具(附体验链接)
数据库·unity·excel·人机交互·工具·抽奖·互动