unity 连接阿里云百炼-通义千问VL视觉理解大模型
流程:
https://bailian.console.aliyun.com/#/home
注册账号,实名认证,获得免费180额度,获取Key
在这里插入图片描述

using Newtonsoft.Json;
using System;
using System.Collections;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using UnityEngine;
using UnityEngine.Networking;

public class My_QWTurbo : MonoBehaviour
{
    [SerializeField] protected string url = "https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions";

    /// <summary>
    /// api key
    /// </summary>
    [SerializeField] private string api_key = "YOUR_API_KEY";

    /// <summary>
    /// api model
    /// </summary>
    [SerializeField] private string model = "qwen-vl-plus";

    /// <summary>
    /// 图片路径
    /// </summary>
    [SerializeField] private string imagePath = @"E:\UnityProject\mandala\Shinn-SteamVR-TK-main\mandala\Assets\Texture\11.png"; // 指定图片路径

    void Start()
    {
        // 调用 PostMsg 函数
        PostMsg("这是什么", ResponseCallback);
    }

    void ResponseCallback(string response)
    {
        // 处理响应
        UnityEngine.Debug.Log("服务器响应: " + response);
    }

    // 发送消息
    public void PostMsg(string _msg, Action<string> _callback)
    {
        StartCoroutine(Request(_msg, _callback));
    }

    /// <summary>
    /// 调用接口
    /// </summary>
    /// <param name="_postWord"></param>
    /// <param name="_callback"></param>
    /// <returns></returns>
    public IEnumerator Request(string _postWord, Action<string> _callback)
    {
        UnityEngine.Debug.Log("输入问题:" + _postWord);

        using (UnityWebRequest request = new UnityWebRequest(url, "POST"))
        {
            // 将本地图片文件读取并编码为Base64格式
            byte[] imageBytes = File.ReadAllBytes(imagePath);
            string base64Image = Convert.ToBase64String(imageBytes);
            string imageBase64Data = $"data:image/png;base64,{base64Image}";

            // 配置消息内容
            MessageData message0 = new MessageData
            {
                role = "user",
                content = new MessageContent[]
                {
                    new MessageContent { type = "text", text = _postWord },
                    new MessageContent { type = "image_url", image_url = new ImageUrl { url = imageBase64Data } }
                }
            };

            var requestBody = new
            {
                model = this.model,
                messages = new[] { message0 }
            };

            string jsonData = JsonConvert.SerializeObject(requestBody);
            UnityEngine.Debug.Log("Request JSON: " + jsonData);

            byte[] data = System.Text.Encoding.UTF8.GetBytes(jsonData);
            request.uploadHandler = new UploadHandlerRaw(data);
            request.downloadHandler = new DownloadHandlerBuffer();

            request.SetRequestHeader("Content-Type", "application/json");
            request.SetRequestHeader("Authorization", $"Bearer {api_key}");

            yield return request.SendWebRequest();

            if (request.isNetworkError || request.isHttpError)
            {
                UnityEngine.Debug.LogError(request.error);
            }
            else
            {
                UnityEngine.Debug.Log("Response: " + request.downloadHandler.text);
                _callback(request.downloadHandler.text);
            }
        }
    }

    #region 发送数据包
    protected class MessageData
    {
        public string role { get; set; }
        public MessageContent[] content { get; set; }
    }

    protected class MessageContent
    {
        public string type { get; set; }
        public string text { get; set; }
        public ImageUrl image_url { get; set; }
    }

    protected class ImageUrl
    {
        public string url { get; set; }
    }
    #endregion
}

在这里插入图片描述
Url 填写你需要访问模型的Url 注意是http访问

返回结果
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐