Last active
September 13, 2024 18:50
-
-
Save alanzchen/57f69ed4c09cb2cf0111a8fcdb6ee6c0 to your computer and use it in GitHub Desktop.
PopClip Actions using ChatGPT.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// #popclip extension for ChatGPT | |
// name: ChatGPT Quick Actions | |
// icon: iconify:logos:openai-icon | |
// language: javascript | |
// module: true | |
// entitlements: [network] | |
// options: [{ | |
// identifier: apikey, label: API Key, type: string, | |
// description: 'Obtain API key from https://platform.openai.com/account/api-keys' | |
// }] | |
const openai = require("axios").create({ | |
baseURL: "https://api.openai.com/v1/" | |
}); | |
const model = "gpt-3.5-turbo"; | |
async function prompt(input, options) { | |
openai.defaults.headers.common.Authorization = `Bearer ${options.apikey}` | |
const content = input.text.trim(); | |
const messages = [{ "role": "user", "content": content }]; | |
const { data } = await openai.post("chat/completions", { | |
model: model, messages | |
}); | |
return data.choices[0].message.content.trim(); | |
}; | |
async function rewrite(input, options) { | |
openai.defaults.headers.common.Authorization = `Bearer ${options.apikey}` | |
const content = "Rewrite this using an academic tone: \n\n" + input.text.trim(); | |
const messages = [{ "role": "user", "content": content }]; | |
const { data } = await openai.post("chat/completions", { | |
model: model, messages | |
}); | |
return data.choices[0].message.content.trim(); | |
}; | |
async function summarize(input, options) { | |
openai.defaults.headers.common.Authorization = `Bearer ${options.apikey}` | |
const content = "Summarize the following text as concise as possible: \n\n" + input.text.trim(); | |
const messages = [{ "role": "user", "content": content }]; | |
const { data } = await openai.post("chat/completions", { | |
model: model, messages | |
}); | |
return data.choices[0].message.content.trim(); | |
}; | |
exports.actions = [ | |
{ | |
title: "Execute the selected prompt", | |
after: "paste-result", | |
code: prompt, | |
icon: "symbol:wand.and.stars" | |
}, | |
{ | |
title: "Rewrite using an academic tone", | |
after: "copy-result", | |
code: rewrite, | |
icon: "symbol:pencil.and.outline" | |
}, { | |
title: "Summarize the selected text", | |
after: "preview-result", | |
code: summarize, | |
icon: "symbol:arrow.down.right.and.arrow.up.left" | |
}]; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment