69 lines
1.8 KiB
TypeScript
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;
|
|
}[];
|
|
};
|