50 lines
1.2 KiB
JavaScript
50 lines
1.2 KiB
JavaScript
const config = require("./config.json");
|
|
const {
|
|
Configuration,
|
|
OpenAIApi
|
|
} = require("openai");
|
|
const openai = new OpenAIApi(new Configuration({
|
|
apiKey: config.openai.key
|
|
}));
|
|
|
|
// Take user input via command line
|
|
const readline = require("readline").createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout
|
|
});
|
|
|
|
sessions = {};
|
|
|
|
// Command line is session 0
|
|
sessions[0] = {
|
|
messages: []
|
|
};
|
|
|
|
// The ask() function but as a promise
|
|
const askPromise = (prompt, session) => {
|
|
return new Promise((resolve, reject) => {
|
|
// If the session doesn't exist, create it
|
|
if (!sessions[session]) {
|
|
sessions[session] = {
|
|
messages: []
|
|
|
|
|
|
// Ask the user for a prompt
|
|
const ask = () => {
|
|
readline.question("What would you like to ask the bot? ", async (prompt) => {
|
|
// Create a new session
|
|
sessions[0].messages.push({
|
|
role: "user",
|
|
content: prompt
|
|
});
|
|
await openai.createChatCompletion({
|
|
model: "gpt-3.5-turbo",
|
|
messages: sessions[0].messages
|
|
}).then((data) => {
|
|
sessions[0].messages.push(data.data.choices[0].message);
|
|
console.log(`${data.data.choices[0].message.role}: ${data.data.choices[0].message.content}`);
|
|
ask();
|
|
});
|
|
});
|
|
};
|
|
ask(); |