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; }