improve OCO_AI_PROVIDER=ollama[/model name] (#327)

* 🐛 (config.ts, engine/ollama.ts, utils/engine.ts): improve Ollama AI configuration and usage
 (config.ts): add support for multiple Ollama models and allow users to specify the model in their config
 (engine/ollama.ts, utils/engine.ts): refactor code to use the specified Ollama model instead of hardcoding it

* add build results
This commit is contained in:
tumf
2024-05-07 14:51:24 +07:00
committed by GitHub
parent 058bad95cd
commit 74024a4997
5 changed files with 4302 additions and 43880 deletions
+2141 -15274
View File
File diff suppressed because one or more lines are too long
+2145 -28599
View File
File diff suppressed because one or more lines are too long
+3 -4
View File
@@ -82,7 +82,7 @@ export const configValidators = {
//need api key unless running locally with ollama
validateConfig(
'OpenAI API_KEY',
value || config.OCO_ANTHROPIC_API_KEY || config.OCO_AI_PROVIDER == 'ollama' || config.OCO_AI_PROVIDER == 'test',
value || config.OCO_ANTHROPIC_API_KEY || config.OCO_AI_PROVIDER.startsWith('ollama') || config.OCO_AI_PROVIDER == 'test',
'You need to provide an OpenAI/Anthropic API key'
);
validateConfig(
@@ -223,10 +223,9 @@ export const configValidators = {
'',
'openai',
'anthropic',
'ollama',
'test'
].includes(value),
`${value} is not supported yet, use 'ollama' 'anthropic' or 'openai' (default)`
].includes(value) || value.startsWith('ollama'),
`${value} is not supported yet, use 'ollama/{model}' 'anthropic' or 'openai' (default)`
);
return value;
},
+6 -1
View File
@@ -3,10 +3,15 @@ import { ChatCompletionRequestMessage } from 'openai';
import { AiEngine } from './Engine';
export class OllamaAi implements AiEngine {
private model = "mistral"; // as default model of Ollama
setModel(model: string) {
this.model = model;
}
async generateCommitMessage(
messages: Array<ChatCompletionRequestMessage>
): Promise<string | undefined> {
const model = 'mistral'; // todo: allow other models
const model = this.model;
//console.log(messages);
//process.exit()
+7 -2
View File
@@ -7,13 +7,18 @@ import { testAi } from '../engine/testAi';
export function getEngine(): AiEngine {
const config = getConfig();
if (config?.OCO_AI_PROVIDER == 'ollama') {
const provider = config?.OCO_AI_PROVIDER;
if (provider?.startsWith('ollama')) {
const model = provider.split('/')[1];
if (model) {
ollamaAi.setModel(model);
}
return ollamaAi;
} else if (config?.OCO_AI_PROVIDER == 'anthropic') {
return anthropicAi;
} else if (config?.OCO_AI_PROVIDER == 'test') {
return testAi;
}
//open ai gpt by default
// open ai gpt by default
return api;
}