import { _decorator, Component, EditBox, Label, Node } from "cc"; import { l10n } from "db://localization-editor/l10n"; const { ccclass, property } = _decorator; @ccclass("ChatGPTService") export class ChatGPTService extends Component { @property(EditBox) editBox: EditBox = null; @property(Label) reply: Label = null; private apiurl: string = "https://cloud.fastgpt.cn/api/v1/chat/completions"; private apikey: string = "fastgpt-gZSIl62Oznoqirj4zrs8tuvYH8Yk9C7GaOiOQtIh6UdLfup7QW2zSWS3"; // 发送POST请求 public async Post(data: GPTResquest): Promise { const self = this; return new Promise(function (resolve, reject) { const xhr = new XMLHttpRequest(); xhr.onreadystatechange = function () { if (xhr.readyState == 4 && xhr.status >= 200 && xhr.status < 400) { const response = xhr.responseText; if (response) { const d = JSON.parse(response); resolve(d); } else { resolve(null); } } }; xhr.open("POST", self.apiurl, true); xhr.setRequestHeader("Content-Type", "application/json"); xhr.setRequestHeader("Authorization", "Bearer " + self.apikey); xhr.send(JSON.stringify(data)); }); } protected async start(): Promise { console.log(l10n.t("hello")); l10n.changeLanguage("zh-Hans-CN"); console.log(l10n.t("hello")); l10n.changeLanguage("en"); console.log(l10n.t("hello")); } public async OnClickSend() { const str = this.editBox.string; if (!str || str == "") return; console.log("post:" + str); let ret = await this.Post({ model: "llama3.1:8b", messages: [{ role: "user", content: str }], temperature: 0.0, }); const rep = ret.choices[0].message.content; this.reply.string = rep; console.log("ret:" + rep); } } export type GPTResquest = { model: string; //gpt-3.5-turbo messages: { role: string; content: string }[]; temperature: number; }; export type GPTResult = { id: string; object: string; created: number; model: string; usage: { prompt_tokens: number; completion_tokens: number; total_tokens: number; }; choices: { message: { role: string; content: string; }; finish_reason: string; index: number; }[]; };