OpenXR开发实战项目之DeepSeek接入Unity教程

一、框架视图

二、关键代码

RequestData

using UnityEngine;
using System.Collections.Generic;


[System.Serializable]
public class RequestData 
{
    public string model;

    public List<Message> messages;
}


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

DeepSeekTalk

using System.Collections;
using UnityEngine;
using UnityEngine.UI;
using System.Collections.Generic;

public class DeepSeekTalk : MonoBehaviour
{
    public InputField inputField;
    public Text responseText;

    public void SendText()
    {
        StartCoroutine(ConnetToDeepSeek());

        inputField.text = "";
        responseText.text = "DeepSeek 正在深度思考中...";
    }

    public void CloseDeepSeek()
    {
        //退出游戏
        Application.Quit();
    }

    public IEnumerator ConnetToDeepSeek()
    {
        using(UnityEngine.Networking.UnityWebRequest request = 
            new UnityEngine.Networking.UnityWebRequest("https://api.deepseek.com/chat/completions", "POST"))
        {
            //设置请求头
            request.SetRequestHeader("Content-Type", "application/json");
            request.SetRequestHeader("Authorization", "Bearer " + DeepSeekConfig.APIKey);

            //设置请求体
            var requestData = new RequestData
            {
                model = "deepseek-chat",
                messages = new List<Message>
                {
                    new Message{role = "user", content = inputField.text}
                }
            };
            //将请求体转换为字节数组
            byte[] bodyRaw = System.Text.Encoding.UTF8.GetBytes(JsonUtility.ToJson(requestData));
            //设置上传处理程序
            request.uploadHandler = new UnityEngine.Networking.UploadHandlerRaw(bodyRaw);
            //设置下载处理程序
            request.downloadHandler = new UnityEngine.Networking.DownloadHandlerBuffer();
            //发送请求
            yield return request.SendWebRequest();

            try
            {
                //检查请求是否成功
                if(request.result != UnityEngine.Networking.UnityWebRequest.Result.Success)
                {
                    //请求失败
                    Debug.LogError("连接失败: " + request.error);
                }
                else
                {
                    //解析JSON
                    var response = JsonUtility.FromJson<DeepSeekResponse>(request.downloadHandler.text);
                    //获取响应文本
                    responseText.text = response.choices[0].message.content;
                }
            }
            catch (System.Exception e)
            {
                Debug.LogError("处理请求时出错: " + e.Message);
            }
        }

        
    }

}

DeepSeekResponse

using UnityEngine;

[System.Serializable]
public class DeepSeekResponse 
{
    public string id;
    public string object_name;
    public long created;
    public Choice[] choices;
}

[System.Serializable]
public class Choice
{
    public Message message;
    public int index;
}

DeepSeekConfig

using UnityEngine;

public static class DeepSeekConfig 
{
    public static string APIKey = "sk-ad3f071ac70e4c31acde9e832498d626";
}

三、效果展示

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容