Compare commits

...

12 Commits

Author SHA1 Message Date
di-sukharev
7c1fc10248 2.0.6 2023-05-04 12:42:24 +08:00
di-sukharev
0c25a9e32c Merge branch 'dev' 2023-05-04 12:41:35 +08:00
Juan José López Lira
3f5df6ef7c Bugfix/increase tokens (#132)
* feat(api.ts): add support for OPENAI_MAX_TOKENS environment variable
feat(config.ts): add OPENAI_MAX_TOKENS to CONFIG_KEYS and configValidators

* 2.0.2

* 2.0.3

* docs(README.md): add GPT-4 usage instructions and mention the cost difference compared to GPT-3.5-turbo

---------

Co-authored-by: di-sukharev <dim.sukharev@gmail.com>
2023-05-04 12:33:06 +08:00
di-sukharev
6cb85e40e9 2.0.5 2023-04-28 15:36:53 +08:00
di-sukharev
ba82d4d476 2.0.4 2023-04-28 15:36:45 +08:00
di-sukharev
9bf2ed34a5 docs(README.md): add GPT-4 usage instructions and mention the cost difference compared to GPT-3.5-turbo 2023-04-28 15:35:40 +08:00
di-sukharev
f6ab25ed1b 2.0.3 2023-04-28 15:31:54 +08:00
di-sukharev
83abd5ffd6 2.0.2 2023-04-28 15:31:46 +08:00
di-sukharev
42c26cbaaa fix(generateCommitMessageFromGitDiff.ts): update content to include WHAT and WHY in commit message instructions
fix(i18n/en.json): update commitFix and commitFeat messages to include reasons for changes
2023-04-28 15:31:10 +08:00
di-sukharev
51613c2aea feat(api.ts, config.ts): add support for custom model selection in OpenAi class
feat(config.ts): add model validation in configValidators
2023-04-28 15:29:32 +08:00
Sukharev
f04757f8af Revert "Suggest adding 'Edit' option to the Yes/No confirmation #53 (#70)" (#146)
This reverts commit 70f048672c.
2023-04-28 14:25:29 +08:00
Joshua Hamlet
70f048672c Suggest adding 'Edit' option to the Yes/No confirmation #53 (#70) 2023-04-28 14:22:45 +08:00
7 changed files with 45 additions and 8 deletions

View File

@@ -54,6 +54,18 @@ oc
## Features
### Switch to GPT-4
By default OpenCommit uses GPT-3.5-turbo (ChatGPT).
You may switch to GPT-4 which performs better, but costs ~x15 times more 🤠
```sh
oc config set model=gpt-4
```
Make sure you do lowercase `gpt-4`.
### Preface commits with emoji 🤠
[GitMoji](https://gitmoji.dev/) convention is used.

5
package-lock.json generated
View File

@@ -1,12 +1,12 @@
{
"name": "opencommit",
"version": "2.0.1",
"version": "2.0.6",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "opencommit",
"version": "2.0.1",
"version": "2.0.6",
"license": "MIT",
"dependencies": {
"@clack/prompts": "^0.6.1",
@@ -22,6 +22,7 @@
},
"bin": {
"oc": "out/cli.cjs",
"oco": "out/cli.cjs",
"opencommit": "out/cli.cjs"
},
"devDependencies": {

View File

@@ -1,6 +1,6 @@
{
"name": "opencommit",
"version": "2.0.1",
"version": "2.0.6",
"description": "GPT CLI to auto-generate impressive commits in 1 second. Killing lame commits with AI 🤯🔫",
"keywords": [
"git",

View File

@@ -13,6 +13,7 @@ const config = getConfig();
let apiKey = config?.OPENAI_API_KEY;
let basePath = config?.OPENAI_BASE_PATH;
let maxTokens = config?.OPENAI_MAX_TOKENS;
const [command, mode] = process.argv.slice(2);
@@ -29,6 +30,8 @@ if (!apiKey && command !== 'config' && mode !== CONFIG_MODES.set) {
process.exit(1);
}
const MODEL = config?.model || 'gpt-3.5-turbo';
class OpenAi {
private openAiApiConfiguration = new OpenAiApiConfiguration({
apiKey: apiKey
@@ -47,11 +50,11 @@ class OpenAi {
): Promise<string | undefined> => {
try {
const { data } = await this.openAI.createChatCompletion({
model: 'gpt-3.5-turbo',
model: MODEL,
messages,
temperature: 0,
top_p: 0.1,
max_tokens: 196
max_tokens: maxTokens ?? 196
});
const message = data.choices[0].message;

View File

@@ -10,9 +10,11 @@ import { getI18nLocal } from '../i18n';
export enum CONFIG_KEYS {
OPENAI_API_KEY = 'OPENAI_API_KEY',
OPENAI_MAX_TOKENS = 'OPENAI_MAX_TOKENS',
OPENAI_BASE_PATH = 'OPENAI_BASE_PATH',
description = 'description',
emoji = 'emoji',
model = 'model',
language = 'language'
}
@@ -62,6 +64,16 @@ export const configValidators = {
return value;
},
[CONFIG_KEYS.OPENAI_MAX_TOKENS](value: any) {
validateConfig(
CONFIG_KEYS.OPENAI_MAX_TOKENS,
typeof value === 'number',
'Must be a number'
);
return value;
},
[CONFIG_KEYS.emoji](value: any) {
validateConfig(
CONFIG_KEYS.emoji,
@@ -88,6 +100,15 @@ export const configValidators = {
`${value} is not supported yet`
);
return value;
},
[CONFIG_KEYS.model](value: any) {
validateConfig(
CONFIG_KEYS.OPENAI_BASE_PATH,
value === 'gpt-3.5-turbo' || value === 'gpt-4',
`${value} is not supported yet, use 'gpt-4' or 'gpt-3.5-turbo' (default)`
);
return value;
}
};

View File

@@ -15,7 +15,7 @@ const INIT_MESSAGES_PROMPT: Array<ChatCompletionRequestMessage> = [
{
role: ChatCompletionRequestMessageRoleEnum.System,
// prettier-ignore
content: `You are to act as the author of a commit message in git. Your mission is to create clean and comprehensive commit messages in the conventional commit convention and explain why a change was done. I'll send you an output of 'git diff --staged' command, and you convert it into a commit message.
content: `You are to act as the author of a commit message in git. Your mission is to create clean and comprehensive commit messages in the conventional commit convention and explain WHAT were the changes and WHY the changes were done. I'll send you an output of 'git diff --staged' command, and you convert it into a commit message.
${config?.emoji? 'Use GitMoji convention to preface the commit.': 'Do not preface the commit with anything.'}
${config?.description ? 'Add a short description of WHY the changes are done after the commit message. Don\'t start it with "This commit", just describe the changes.': "Don't add any descriptions to the commit, only commit message."}
Use the present tense. Lines must not be longer than 74 characters. Use ${translation.localLanguage} to answer.`

View File

@@ -1,6 +1,6 @@
{
"localLanguage": "english",
"commitFix": "fix(server.ts): change port variable case from lowercase port to uppercase PORT",
"commitFeat": "feat(server.ts): add support for process.env.PORT environment variable",
"commitFix": "fix(server.ts): change port variable case from lowercase port to uppercase PORT to improve semantics",
"commitFeat": "feat(server.ts): add support for process.env.PORT environment variable to be able to run app on a configurable port",
"commitDescription": "The port variable is now named PORT, which improves consistency with the naming conventions as PORT is a constant. Support for an environment variable allows the application to be more flexible as it can now run on any available port specified via the process.env.PORT environment variable."
}