mirror of
https://github.com/di-sukharev/opencommit.git
synced 2026-04-20 03:02:51 -04:00
* ✨ feat(package.json): add publish script The cli file extension has been changed from .mjs to .cjs to improve compatibility with Node.js. The publish script has been added to simplify the process of publishing a new version of the package to npm. * 🎨 style(api.ts): remove unused import statement * 🐛 fix(api.ts): remove setConfig function call * 🚧 chore(api.ts): add comment to explain apiKey variable initialization * 🚧 chore(api.ts): comment out code block that prompts user for OPENAI_API_KEY The unused import statement for `text` function from `@clack/prompts` has been removed. The `setConfig` function call has been removed as it is not needed and was causing an error. A comment has been added to explain the initialization of the `apiKey` variable. The code block that prompts the user for `OPENAI_API_KEY` has been commented out as it is not needed and was causing an error. * 🐛 fix(tsconfig.json): change target to ES6 The target was previously set to ESNext, which is not supported by all browsers. Changing it to ES6 ensures that the emitted JavaScript is compatible with a wider range of browsers.
67 lines
1.5 KiB
TypeScript
67 lines
1.5 KiB
TypeScript
import { intro, outro } from '@clack/prompts';
|
|
import {
|
|
ChatCompletionRequestMessage,
|
|
ChatCompletionResponseMessage,
|
|
Configuration as OpenAiApiConfiguration,
|
|
OpenAIApi
|
|
} from 'openai';
|
|
|
|
import { getConfig } from './commands/config';
|
|
|
|
const config = getConfig();
|
|
|
|
let apiKey = config?.OPENAI_API_KEY;
|
|
|
|
if (!apiKey) {
|
|
intro('opencommit');
|
|
|
|
outro(
|
|
'OPENAI_API_KEY is not set, please run `oc config set OPENAI_API_KEY=<your token>`'
|
|
);
|
|
outro(
|
|
'For help Look into README https://github.com/di-sukharev/opencommit#setup'
|
|
);
|
|
}
|
|
|
|
// if (!apiKey) {
|
|
// intro('opencommit');
|
|
// const apiKey = await text({
|
|
// message: 'input your OPENAI_API_KEY'
|
|
// });
|
|
|
|
// setConfig([[CONFIG_KEYS.OPENAI_API_KEY as string, apiKey as any]]);
|
|
|
|
// outro('OPENAI_API_KEY is set');
|
|
// }
|
|
|
|
class OpenAi {
|
|
private openAiApiConfiguration = new OpenAiApiConfiguration({
|
|
apiKey: apiKey
|
|
});
|
|
|
|
private openAI = new OpenAIApi(this.openAiApiConfiguration);
|
|
|
|
public generateCommitMessage = async (
|
|
messages: Array<ChatCompletionRequestMessage>
|
|
): Promise<ChatCompletionResponseMessage | undefined> => {
|
|
try {
|
|
const { data } = await this.openAI.createChatCompletion({
|
|
model: 'gpt-3.5-turbo',
|
|
messages,
|
|
temperature: 0,
|
|
top_p: 0.1,
|
|
max_tokens: 196
|
|
});
|
|
|
|
const message = data.choices[0].message;
|
|
|
|
return message;
|
|
} catch (error) {
|
|
console.error('openAI api error', { error });
|
|
throw error;
|
|
}
|
|
};
|
|
}
|
|
|
|
export const api = new OpenAi();
|