首页 > 其他分享 >Unity接入 KimiChat 代码示例

Unity接入 KimiChat 代码示例

时间:2024-02-07 17:44:52浏览次数:27  
标签:string 示例 request UnityWebRequest Unity using new KimiChat public

代码

using System.Runtime.CompilerServices;
using System.Threading.Tasks;
using UnityEngine;
using UnityEngine.Networking;

public class TestKimi : MonoBehaviour {
    private string apiKey = "Your Key"; // 替换为你的API密钥
    private string apiUrl = "https://api.moonshot.cn/v1/chat/completions"; // KimiChat的API端点

    public void MyBtn() {
        OnUserInput("说下最近天气");
    }

    private void OnUserInput(string input) {
        PostRequest(input);
    }

    // 定义一个异步方法来发送POST请求
    private async Task<string> PostRequest(string jsonData) {
        // 使用using声明确保UnityWebRequest被正确地释放
        using (UnityWebRequest request = new UnityWebRequest(apiUrl, "POST")) {
            request.SetRequestHeader("Content-Type", "application/json");
            request.SetRequestHeader("Authorization", $"Bearer {apiKey}");

            var chatRequest = new ChatRequest {
                model = "moonshot-v1-8k",
                messages = new ChatMessage[] {
                    new ChatMessage { role = "system", content = "你是 Kimi,由 Moonshot AI 提供的人工智能助手..." },
                    new ChatMessage { role = "user", content = jsonData }
                },
                temperature = 0.3f,
            };

            string str = JsonUtility.ToJson(chatRequest);
            Debug.Log(str);
            Debug.Log("Sending request to: " + request.url);
            request.uploadHandler = new UploadHandlerRaw(System.Text.Encoding.UTF8.GetBytes(str));
            request.downloadHandler = new DownloadHandlerBuffer();

            // 发送请求并等待异步完成
            await request.SendWebRequest();

            if (request.result != UnityWebRequest.Result.ConnectionError &&
                request.result != UnityWebRequest.Result.ProtocolError) {
                Debug.Log(request.downloadHandler.text);
                return request.downloadHandler.text;
            } else {
                Debug.LogError(request.error);
            }
        }

        return "";
    }
}

public static class ExtensionMethods {
    public static TaskAwaiter GetAwaiter(this AsyncOperation asyncOp) {
        var tcs = new TaskCompletionSource<object>();
        asyncOp.completed += obj => { tcs.SetResult(null); };
        return ((Task)tcs.Task).GetAwaiter();
    }
}

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

[System.Serializable]
public class ChatRequest {
    public string model;
    public ChatMessage[] messages;
    public float temperature;
}

 

标签:string,示例,request,UnityWebRequest,Unity,using,new,KimiChat,public
From: https://www.cnblogs.com/sanyejun/p/18011135

相关文章

  • 华为配置访客接入WLAN网络示例(MAC优先的Portal认证)
    配置访客接入WLAN网络示例(MAC优先的Portal认证)组网图形图1 配置WLANMAC优先的Portal认证示例组网图业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件业务需求某企业为了提高WLAN网络的安全性,采用MAC优先的外置Portal认证方式,实现对用户的接入控制。组网需求AC组网......
  • 限制Unity帧率的方式
    1)限制Unity帧率的方式2)只在编辑器内,纹理不开启Read&Write情况下,如何获取纹理所有颜色值3)如何在FBX剔除Lit.shader依4)如何在iPhone12mini设备上禁止竖屏这是第373篇UWA技术知识分享的推送,精选了UWA社区的热门话题,涵盖了UWA问答、社区帖子等技术知识点,助力大家更全面地掌握和学习......
  • 【Unity】记一次卡顿优化(由3D资源面数过多引起)
    这个优化方法可能仅对我有效,我只是做一个记录条件:模型很大,并且shader中使用了Smoothness优化方法打开Mesh引用的模型修改模型Normal为calculate修改SmoothnessSource为fromAngle修改SmoothingAngle降到你可以接收的值,我设置的是20。在unity文档中说的是,通常SmoothingAn......
  • Unity Mono单例(MonoSingleton)C#脚本
    什么是单例模式?单例模式是设计模式的一种,一般来说,使用单例模式的类,在程序中全局只会存在一个实例,并且一般来讲其是全局可被访问的。在unity游戏开发中,单例模式广泛应用于GameManager和各种Controller这种只需要一个实例的脚本。以下就是UnityMono单例的泛用脚本usingSystem.......
  • windows栈回溯功能示例——漏洞利用检测
    利用windows栈回溯如何进行漏洞利用检测?利用Windows栈回溯进行漏洞利用检测是一个复杂的过程,它通常涉及监控可疑或危险函数的调用,并分析调用这些函数的上下文来判断是否存在潜在的漏洞利用尝试。这种方法需要深入理解漏洞利用技术、危险函数的正常与异常使用模式,以及堆栈回溯的技......
  • 导出excel文件接口代码示例
    导出excel文件接口代码示例1.该导出接口,token不能通过请求头来传输,需要在get请求的参数中带出来2.验证token的方法除了在拦截器中统一拦截,针对get接口传参数的方式也需要单独在接口中验证。@RequestMapping(value="export",method=RequestMethod.GET)publicString......
  • Unity打包Android报错:Target Android SDK not installed Android SDK does not includ
    1.需要查看当前unity版本中安装的SDKVersion2.找到对应路径下的文件,打开build-tools文件,其中就是对应的SDKVersion4.修改Unity中对应的配置 ......
  • Unity Animation动画系统概述
    一、UnityAnimation动画系统基本介绍unity提供了一套非常强大灵活且成熟的动画系统,不论是2d还是3d动画都有相应的组件和接口提供给开发者使用,不过这篇文章主要还是讲解3D部分的动画系统。我们在游戏开发时时常需要角色动起来,除了位置上的移动之外,我们还需要匹配角色的行为或玩......
  • SpringBoot中使用Spring自带线程池ThreadPoolTaskExecutor与Java8CompletableFuture实
    场景关于线程池的使用:Java中ExecutorService线程池的使用(Runnable和Callable多线程实现):https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/126242904Java中创建线程的方式以及线程池创建的方式、推荐使用ThreadPoolExecutor以及示例:https://blog.csdn.net/BADAO_......
  • Unity 基于群体寻路的解决方案
    群体寻路是一种模拟群体行为的技术,它使得游戏中的角色能够以一种有组织的方式移动。在群体中,每个角色都有自己的目标位置,并且会根据周围的情况决定如何移动。群体寻路可以帮助我们实现一些有趣的场景,比如鸟群飞行、鱼群游动等。在Unity中实现群体寻路,我们可以使用NavMeshAgent组......