Files
18xchat/assets/Scripts/test/ChatGPTService.ts
T
2025-07-22 17:48:45 +08:00

69 lines
1.8 KiB
TypeScript

import { _decorator, Component } from "cc";
export class ChatGPTService {
private static _instance: ChatGPTService;
public static getInstance() {
if (!this._instance) {
this._instance = new ChatGPTService();
}
return this._instance;
}
private id = "";
public GetId() {
return this.id;
}
private apiurl: string = "https://cloud.fastgpt.cn/api/v1/chat/completions";
private apikey: string =
"fastgpt-gZSIl62Oznoqirj4zrs8tuvYH8Yk9C7GaOiOQtIh6UdLfup7QW2zSWS3";
// 发送POST请求
public async Post(data: GPTResquest): Promise<GPTResult> {
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);
ChatGPTService.getInstance().id = d.id;
} 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));
});
}
}
export type GPTResquest = {
model: string; //gpt-3.5-turbo
messages: { role: string; content: string }[];
temperature: number;
id: string;
};
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;
}[];
};