Unity接入 KimiChat 代码示例
代码
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;
}
Unity接入 KimiChat 代码示例的更多相关文章
- Unity构造函数注入代码示例
Unity构造函数注入代码示例 如果使用 Unity 实例化一个类,该类的构造函数依赖一个或多个其他类,则 Unity 会为构造函数自动创建参数中指定的被依赖的类的实例.例如,下面的代码展示了一个名为 ...
- 微软IOC容器Unity简单代码示例3-基于约定的自动注册机制
@(编程) [TOC] Unity在3.0之后,支持基于约定的自动注册机制Registration By Convention,本文简单介绍如何配置. 1. 通过Nuget下载Unity 版本号如下: ...
- Unity接入ShareSDK实现QQ登录和QQ分享、微信分享
原文链接:Unity接入ShareSDK实现QQ登录和QQ分享.微信分享 由于微信登录需要企业审核,我这里就不说明了,有需要的可以去官网看一下文档,和QQ登录比多了一个打包的步骤. 第一步:到官网申请 ...
- 领域驱动开发推荐代码示例 — Microsoft NLayerApp
简介: Microsoft NLayerApp是由微软西班牙团队出品的基于.NET 4.0的“面向领域N层分布式架构”代码示例,在codeplex上的地址是:http://microsoftnlaye ...
- 微信消息接收 验证URL有效性 C#代码示例
官方文档只给出了PHP的示例代码 开发者提交信息后,微信服务器将发送GET请求到填写的URL上,GET请求携带四个参数: 参数 描述 signature 微信加密签名,signature结合了开发者填 ...
- My.Ioc 代码示例——如何使用默认构造参数,以及如何覆盖默认构造参数
在 Ioc 世界中,有些框架(例如 Autofac/NInject/Unity)支持传递默认参数,有些框架(例如 SimpleInjector/LightInjector 等)则不支持.作为 My.I ...
- 【《Effective C#》提炼总结】提高Unity中C#代码质量的21条准则
作者:Williammao, 腾讯移动客户端开发工程师 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/290.h ...
- 批量录入快递地址-快宝地址服务(PHP代码示例)
快递地址写错了怎么办?快递地址写的不详细怎么办?怎么皮批量录入收件人地址?微商怎么批量录入发件人地址?快宝地址清洗,有效的解决了寄送快递时,批量录入收件人信息.发件人信息时,纠正地址数据,不完整地址识 ...
- Unity接入谷歌支付
文章理由 前段时间负责Unity接入Google内购功能,一开始研究别人的技术博客时发现,他们的文章都有些年头了,有些细节的地方已经不像n年前那样了,技术永远是需要更新的,而这篇就作为2016年末的最 ...
- 【《Effective C#》提炼总结】提高Unity中C#代码质量的22条准则
引言 原则1尽可能地使用属性而不是可直接访问的数据成员 原则2偏向于使用运行时常量而不是编译时常量 原则3 推荐使用is 或as操作符而不是强制类型转换 原则4 推荐使用条件属性而不是if条件编译 原 ...
随机推荐
- SQL 强化练习 (五)
果然日常练练这些 sql 是非常有必要的, 这几日的报表开发, 用一款过程软件 fineReport, 相对于我之前用 Tableau 来做报表, 这个帆软, 确实更加适合中国人哦, 而Tableau ...
- 解析V8引擎底层原理,探究其优异性能之谜
@charset "UTF-8"; .markdown-body { line-height: 1.75; font-weight: 400; font-size: 15px; o ...
- Torch-Pruning工具箱
Torch-Pruning 通道剪枝网络实现加速的工作. Torch pruning是进行结构剪枝的pytorch工具箱,和pytorch官方提供的基于mask的非结构化剪枝不同,工具箱移除整个通道剪 ...
- Windows平台调试器原理与编写01.调试框架
调试器原理与编写01.调试框架-C/C++基础-断点社区-专业的老牌游戏安全技术交流社区 - BpSend.net 调试框架 调试器最基本功能: 断点,单步 断点分为三类 软件断点 硬件断点 内存断点 ...
- 2、redis设置密码【永久性设置密码】
1)编辑Redis的配置文件 /usr/local/etc/redis.conf 打开Finder,按 Command + Shift + G 快捷键打开"前往文件夹"对话框,在弹 ...
- stm32cubemx+freertos+中断实现IIC从机
最近做一个项目需要将stm32配置为iic的从机模式来响应总线的读写需求,看了网上的大部分资料讲解的都不是很全面,因此这里做一个小分享. iic通信流程 要编写iic从机模式的代码,就得对iic得整个 ...
- linux配置Maxwell
1.Maxwell-1.30.0及以上的版本不再支持JDK1.8,而JDK1.8支持的最后一个版本为1.29.2 2.下载Maxwell的压缩包,上传到服务器并解压 3.tar -xf maxwell ...
- Linux删除目录大量文件提示argument list too long
问题说明 目录下存在大量文件时,我们删除文件使用 rm -rf *时,删除会提示如下报错: [root@SH-IDC1-10-19-3-87 kubernetes]# rm -rf kubelet* ...
- Ceph对象存储集群常用操作
一.常用操作 1.1 查看某个bucket详情 # 查看bucket列表 [root@oss001 ~]# radosgw-admin bucket list [ "awss3e68c588 ...
- mysql字符集插入中文报错
org.apache.ibatis.exceptions.PersistenceException: ### Error updating database. Cause: java.sql.SQLE ...