@ovotech/genesys-web-messaging-tester-cli
Version:
64 lines (63 loc) • 2.19 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createChatCompletionClient = void 0;
const openai_1 = require("openai");
function createChatCompletionClient({ model = 'gpt-3.5-turbo', temperature }, apiKey, maxRetries = 5) {
const chatCompletion = new openai_1.OpenAI({ apiKey, maxRetries }).chat.completions;
return {
getProviderName() {
return 'ChatGPT';
},
async preflightCheck() {
try {
await chatCompletion.create({
model,
n: 1, // Number of choices
temperature: 0,
messages: [
{
role: 'system',
content: 'You help people with math problems',
},
{
role: 'user',
content: 'What is 1+1?',
},
],
});
return { ok: true };
}
catch (error) {
return {
ok: false,
reasonForError: error instanceof Error ? error.message : String(error),
};
}
},
async predict(context, conversationUtterances) {
const messages = [
{
role: 'system',
content: context,
},
...conversationUtterances.map((u) => ({
role: u.role === 'bot' ? 'user' : 'assistant',
content: u.content,
})),
];
const { choices } = await chatCompletion.create({
model,
n: 1, // Number of choices
temperature,
messages,
});
if (choices[0]?.message?.content) {
return { role: 'customer', content: choices[0].message.content };
}
else {
return null;
}
},
};
}
exports.createChatCompletionClient = createChatCompletionClient;