nova-betterchat/src/api/customApi.ts
2023-03-17 14:23:36 +08:00

68 lines
1.6 KiB
TypeScript

import { ConfigInterface, MessageInterface } from '@type/chat';
export const endpoint = 'https://api.openai.com/v1/chat/completions';
export const validateApiKey = async (apiKey: string) => {
try {
const response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${apiKey}`,
},
});
const data = await response.json();
if (response.status === 401) return false;
else if (response.status === 400) return true;
} catch (error) {
console.error('Error:', error);
return false;
}
};
export const getChatCompletion = async (
apiKey: string,
messages: MessageInterface[],
config: ConfigInterface
) => {
const response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${apiKey}`,
},
body: JSON.stringify({
messages,
...config,
}),
});
if (!response.ok) throw new Error(await response.text());
const data = await response.json();
return data;
};
export const getChatCompletionStream = async (
apiKey: string,
messages: MessageInterface[],
config: ConfigInterface
) => {
const response = await fetch(endpoint, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
Authorization: `Bearer ${apiKey}`,
},
body: JSON.stringify({
messages,
...config,
stream: true,
}),
});
if (!response.ok) throw new Error(await response.text());
const stream = response.body;
return stream;
};