From 116c4898d554b5079e3576e5aecac93e5b957a98 Mon Sep 17 00:00:00 2001 From: Achiya Elyasaf <10044875+eggsterino@users.noreply.github.com> Date: Mon, 4 Dec 2023 13:51:16 +0200 Subject: [PATCH] Replace the API to the new OpenAI Chat Completion API. Closes #6. --- scripts/content.js | 41 +++++++++++++++++++++++++++-------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/scripts/content.js b/scripts/content.js index 4ff21be..9b1fe2a 100644 --- a/scripts/content.js +++ b/scripts/content.js @@ -11,6 +11,8 @@ class OpenAIAPI { const url = `https://api.openai.com/v1/${endpoint}` if (!data.model) data.model = OpenAIAPI.defaultModel + if (!data.n) data.n = 1 + if (!data.temperature) data.temperature = 0.5 const xhr = new XMLHttpRequest() xhr.open('POST', url, true) @@ -34,27 +36,38 @@ class OpenAIAPI { async completeText(text) { const data = { max_tokens: 512, - prompt: text, - n: 1, - temperature: 0.5 + messages: [ + { role: 'system', content: 'You are an assistant in a Latex editor' }, + { role: 'user', 'content': text } + ], } - return this.query('completions', data) - .then(result => result[0].text) + return this.query('chat/completions', data) + .then(result => result[0]['message'].content) } async improveText(text) { const data = { - model: 'code-davinci-edit-001', - input: text, - instruction: - 'Correct any spelling mistakes, grammar mistakes, and improve the overall style of the (latex) text.', - n: 1, - temperature: 0.5 + messages: [ + { role: 'system', content: 'You are an assistant in a Latex editor' }, + { role: 'user', 'content': 'Improve the following text:\n'+text }], } - return this.query('edits', data) - .then(result => result[0].text) + return this.query('chat/completions', data) + .then(result => result[0]['message'].content) + } + + async ask(text) { + const data = { + max_tokens: 512, + messages: [ + { role: 'system', content: 'You are an assistant in a Latex editor. Answer questions without introduction/explanations' }, + { role: 'user', 'content': text } + ], + } + + return this.query('chat/completions', data) + .then(result => result[0]['message'].content) } } @@ -108,7 +121,7 @@ async function askHandler(openAI) { const selection = window.getSelection() const selectedText = selection.toString() if (!selectedText) return - const editedText = (await openAI.completeText('In latex, ' + selectedText)).trimStart() + const editedText = (await openAI.ask(selectedText)).trimStart() replaceSelectedText(editedText, selection) }