Skip to content

Commit

Permalink
Merge pull request #111 from olasunkanmi-SE/GROK-b
Browse files Browse the repository at this point in the history
deprecate chatManager
  • Loading branch information
olasunkanmi-SE authored Dec 15, 2024
2 parents 8ff012f + 170e914 commit 4ad46f1
Show file tree
Hide file tree
Showing 8 changed files with 345 additions and 327 deletions.
2 changes: 1 addition & 1 deletion src/constant.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ export const APP_CONFIG = {
grokModel: "grok.model",
};

export enum generativeAiModel {
export enum generativeAiModels {
GEMINI = "Gemini",
GROQ = "Groq",
ANTHROPIC = "Anthropic",
Expand Down
58 changes: 29 additions & 29 deletions src/events/event-generator.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import Anthropic from "@anthropic-ai/sdk";
import { GenerativeModel, GoogleGenerativeAI } from "@google/generative-ai";
import Groq from "groq-sdk";
import * as vscode from "vscode";
import { APP_CONFIG, COMMON, generativeAiModel } from "../constant";
import { APP_CONFIG, COMMON, generativeAiModels } from "../constant";
import { AnthropicWebViewProvider } from "../providers/anthropic-web-view-provider";
import { GeminiWebViewProvider } from "../providers/gemini-web-view-provider";
import { GroqWebViewProvider } from "../providers/groq-web-view-provider";
Expand Down Expand Up @@ -38,7 +38,7 @@ export abstract class EventGenerator implements IEventGenerator {
constructor(
private readonly action: string,
_context: vscode.ExtensionContext,
errorMessage?: string,
errorMessage?: string
) {
this.context = _context;
this.error = errorMessage;
Expand Down Expand Up @@ -76,33 +76,33 @@ export abstract class EventGenerator implements IEventGenerator {
let modelName = "";
if (!this.generativeAi) {
vscodeErrorMessage(
"Configuration not found. Go to settings, search for Your coding buddy. Fill up the model and model name",
"Configuration not found. Go to settings, search for Your coding buddy. Fill up the model and model name"
);
}
if (this.generativeAi === generativeAiModel.GROQ) {
if (this.generativeAi === generativeAiModels.GROQ) {
const apiKey = this.groqApiKey;
modelName = this.groqModel;
if (!apiKey || !modelName) {
vscodeErrorMessage(
"Configuration not found. Go to settings, search for Your coding buddy. Fill up the model and model name",
"Configuration not found. Go to settings, search for Your coding buddy. Fill up the model and model name"
);
}
model = this.createGroqModel(apiKey);
}

if (this.generativeAi === generativeAiModel.GEMINI) {
if (this.generativeAi === generativeAiModels.GEMINI) {
const apiKey = this.geminiApiKey;
modelName = this.geminiModel;
model = this.createGeminiModel(apiKey, modelName);
}

if (this.generativeAi === generativeAiModel.ANTHROPIC) {
if (this.generativeAi === generativeAiModels.ANTHROPIC) {
const apiKey: string = this.anthropicApiKey;
modelName = this.anthropicModel;
model = this.createAnthropicModel(apiKey);
}

if (this.generativeAi === generativeAiModel.GROK) {
if (this.generativeAi === generativeAiModels.GROK) {
const apiKey: string = this.xGrokApiKey;
modelName = this.xGrokModel;
model = this.createAnthropicModel(apiKey);
Expand All @@ -111,7 +111,7 @@ export abstract class EventGenerator implements IEventGenerator {
} catch (error) {
console.error("Error creating model:", error);
vscode.window.showErrorMessage(
"An error occurred while creating the model. Please try again.",
"An error occurred while creating the model. Please try again."
);
}
}
Expand Down Expand Up @@ -139,7 +139,7 @@ export abstract class EventGenerator implements IEventGenerator {

private createAnthropicModel(apiKey: string): Anthropic {
let xGrokBaseURL;
if (getConfigValue(APP_CONFIG.generativeAi) === generativeAiModel.GROK) {
if (getConfigValue(APP_CONFIG.generativeAi) === generativeAiModels.GROK) {
xGrokBaseURL = getXGroKBaseURL();
}
return createAnthropicClient(apiKey, xGrokBaseURL);
Expand All @@ -150,7 +150,7 @@ export abstract class EventGenerator implements IEventGenerator {
}

protected async generateModelResponse(
text: string,
text: string
): Promise<string | Anthropic.Messages.Message | undefined> {
try {
const activeModel = this.createModel();
Expand All @@ -160,7 +160,7 @@ export abstract class EventGenerator implements IEventGenerator {

const { generativeAi, model, modelName } = activeModel;
//
if (!generativeAi || !generativeAiModel) {
if (!generativeAi || !generativeAiModels) {
throw new Error("Model not found. Check your settings.");
}
let response;
Expand All @@ -178,7 +178,7 @@ export abstract class EventGenerator implements IEventGenerator {
response = await this.groqResponse(model, text, modelName);
}
break;
case generativeAiModel.GROK:
case generativeAiModels.GROK:
if (modelName) {
response = await this.anthropicResponse(model, modelName, text);
}
Expand All @@ -189,7 +189,7 @@ export abstract class EventGenerator implements IEventGenerator {

if (!response) {
throw new Error(
"Could not generate response. Check your settings, ensure the API keys and Model Name is added properly.",
"Could not generate response. Check your settings, ensure the API keys and Model Name is added properly."
);
}
if (this.action.includes("chart")) {
Expand All @@ -199,7 +199,7 @@ export abstract class EventGenerator implements IEventGenerator {
} catch (error) {
console.error("Error generating response:", error);
vscode.window.showErrorMessage(
"An error occurred while generating the response. Please try again.",
"An error occurred while generating the response. Please try again."
);
}
}
Expand All @@ -213,7 +213,7 @@ export abstract class EventGenerator implements IEventGenerator {

async generateGeminiResponse(
model: any,
text: string,
text: string
): Promise<string | undefined> {
const result = await model.generateContent(text);
return result ? await result.response.text() : undefined;
Expand All @@ -222,7 +222,7 @@ export abstract class EventGenerator implements IEventGenerator {
private async anthropicResponse(
model: Anthropic,
generativeAiModel: string,
userPrompt: string,
userPrompt: string
) {
try {
const response = await model.messages.create({
Expand All @@ -235,7 +235,7 @@ export abstract class EventGenerator implements IEventGenerator {
} catch (error) {
console.error("Error generating response:", error);
vscode.window.showErrorMessage(
"An error occurred while generating the response. Please try again.",
"An error occurred while generating the response. Please try again."
);
return;
}
Expand All @@ -244,7 +244,7 @@ export abstract class EventGenerator implements IEventGenerator {
private async groqResponse(
model: Groq,
prompt: string,
generativeAiModel: string,
generativeAiModel: string
): Promise<string | undefined> {
try {
const chatHistory = MemoryCache.has(COMMON.ANTHROPIC_CHAT_HISTORY)
Expand All @@ -267,7 +267,7 @@ export abstract class EventGenerator implements IEventGenerator {
} catch (error) {
console.error("Error generating response:", error);
vscode.window.showErrorMessage(
"An error occurred while generating the response. Please try again.",
"An error occurred while generating the response. Please try again."
);
return;
}
Expand All @@ -278,7 +278,7 @@ export abstract class EventGenerator implements IEventGenerator {
abstract createPrompt(text?: string): any;

async generateResponse(
errorMessage?: string,
errorMessage?: string
): Promise<string | Anthropic.Messages.Message | undefined> {
this.showInformationMessage();
let prompt;
Expand All @@ -303,7 +303,7 @@ export abstract class EventGenerator implements IEventGenerator {
if (prompt && response) {
let chatHistory;
switch (model) {
case generativeAiModel.GEMINI:
case generativeAiModels.GEMINI:
chatHistory = getLatestChatHistory(COMMON.GEMINI_CHAT_HISTORY);
MemoryCache.set(COMMON.GEMINI_CHAT_HISTORY, [
...chatHistory,
Expand All @@ -317,7 +317,7 @@ export abstract class EventGenerator implements IEventGenerator {
},
]);
break;
case generativeAiModel.GROQ:
case generativeAiModels.GROQ:
chatHistory = getLatestChatHistory(COMMON.GROQ_CHAT_HISTORY);
MemoryCache.set(COMMON.GROQ_CHAT_HISTORY, [
...chatHistory,
Expand All @@ -331,7 +331,7 @@ export abstract class EventGenerator implements IEventGenerator {
},
]);
break;
case generativeAiModel.ANTHROPIC:
case generativeAiModels.ANTHROPIC:
chatHistory = getLatestChatHistory(COMMON.ANTHROPIC_CHAT_HISTORY);
MemoryCache.set(COMMON.ANTHROPIC_CHAT_HISTORY, [
...chatHistory,
Expand All @@ -345,7 +345,7 @@ export abstract class EventGenerator implements IEventGenerator {
},
]);
break;
case generativeAiModel.GROK:
case generativeAiModels.GROK:
chatHistory = getLatestChatHistory(COMMON.ANTHROPIC_CHAT_HISTORY);
MemoryCache.set(COMMON.ANTHROPIC_CHAT_HISTORY, [
...chatHistory,
Expand Down Expand Up @@ -377,28 +377,28 @@ export abstract class EventGenerator implements IEventGenerator {
vscode.window.showErrorMessage("model not reponding, try again later");
return;
}
if (this.generativeAi === generativeAiModel.GROQ) {
if (this.generativeAi === generativeAiModels.GROQ) {
await GroqWebViewProvider.webView?.webview.postMessage({
type: "user-input",
message: formattedResponse,
});
}

if (this.generativeAi === generativeAiModel.GEMINI) {
if (this.generativeAi === generativeAiModels.GEMINI) {
await GeminiWebViewProvider.webView?.webview.postMessage({
type: "user-input",
message: formattedResponse,
});
}

if (this.generativeAi === generativeAiModel.ANTHROPIC) {
if (this.generativeAi === generativeAiModels.ANTHROPIC) {
await AnthropicWebViewProvider.webView?.webview.postMessage({
type: "user-input",
message: formattedResponse,
});
}

if (this.generativeAi === generativeAiModel.GROK) {
if (this.generativeAi === generativeAiModels.GROK) {
await AnthropicWebViewProvider.webView?.webview.postMessage({
type: "user-input",
message: formattedResponse,
Expand Down
40 changes: 20 additions & 20 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ import * as vscode from "vscode";
import {
APP_CONFIG,
COMMON,
generativeAiModel,
generativeAiModels,
OLA_ACTIONS,
USER_MESSAGE,
} from "./constant";
Expand Down Expand Up @@ -56,45 +56,45 @@ export async function activate(context: vscode.ExtensionContext) {
} = OLA_ACTIONS;
const getComment = new Comments(
`${USER_MESSAGE} generates the code comments...`,
context,
context
);
const generateOptimizeCode = new OptimizeCode(
`${USER_MESSAGE} optimizes the code...`,
context,
context
);
const generateRefactoredCode = new RefactorCode(
`${USER_MESSAGE} refactors the code...`,
context,
context
);
const explainCode = new ExplainCode(
`${USER_MESSAGE} explains the code...`,
context,
context
);
const generateReview = new ReviewCode(
`${USER_MESSAGE} reviews the code...`,
context,
context
);
const codeChartGenerator = new CodeChartGenerator(
`${USER_MESSAGE} creates the code chart...`,
context,
context
);
const codePattern = new FileUploader(context);
const knowledgeBase = new ReadFromKnowledgeBase(
`${USER_MESSAGE} generate your code pattern...`,
context,
context
);
const generateCommitMessage = new GenerateCommitMessage(
`${USER_MESSAGE} generates a commit message...`,
context,
context
);
const generateInterviewQuestions = new InterviewMe(
`${USER_MESSAGE} generates interview questions...`,
context,
context
);

const generateUnitTests = new GenerateUnitTest(
`${USER_MESSAGE} generates unit tests...`,
context,
context
);

const actionMap = {
Expand All @@ -108,7 +108,7 @@ export async function activate(context: vscode.ExtensionContext) {
new FixError(
`${USER_MESSAGE} finds a solution to the error...`,
context,
errorMessage,
errorMessage
).execute(errorMessage),
[explain]: () => explainCode.execute(),
[pattern]: () => codePattern.uploadFileHandler(),
Expand All @@ -118,7 +118,7 @@ export async function activate(context: vscode.ExtensionContext) {
};

const subscriptions: vscode.Disposable[] = Object.entries(actionMap).map(
([action, handler]) => vscode.commands.registerCommand(action, handler),
([action, handler]) => vscode.commands.registerCommand(action, handler)
);

const selectedGenerativeAiModel = getConfigValue("generativeAi.option");
Expand All @@ -127,7 +127,7 @@ export async function activate(context: vscode.ExtensionContext) {
const quickFixCodeAction: vscode.Disposable =
vscode.languages.registerCodeActionsProvider(
{ scheme: "file", language: "*" },
quickFix,
quickFix
);

const modelConfigurations: {
Expand All @@ -139,28 +139,28 @@ export async function activate(context: vscode.ExtensionContext) {
quickFixCodeAction: vscode.Disposable;
};
} = {
[generativeAiModel.GEMINI]: {
[generativeAiModels.GEMINI]: {
key: geminiKey,
model: geminiModel,
webviewProviderClass: GeminiWebViewProvider,
subscriptions,
quickFixCodeAction,
},
[generativeAiModel.GROQ]: {
[generativeAiModels.GROQ]: {
key: groqApiKey,
model: groqModel,
webviewProviderClass: GroqWebViewProvider,
subscriptions,
quickFixCodeAction,
},
[generativeAiModel.ANTHROPIC]: {
[generativeAiModels.ANTHROPIC]: {
key: anthropicApiKey,
model: anthropicModel,
webviewProviderClass: AnthropicWebViewProvider,
subscriptions,
quickFixCodeAction,
},
[generativeAiModel.GROK]: {
[generativeAiModels.GROK]: {
key: grokApiKey,
model: grokModel,
webviewProviderClass: AnthropicWebViewProvider,
Expand All @@ -177,13 +177,13 @@ export async function activate(context: vscode.ExtensionContext) {
key,
webviewProviderClass,
subscriptions,
quickFixCodeAction,
quickFixCodeAction
);
}
} catch (error) {
MemoryCache.clear();
vscode.window.showErrorMessage(
"An Error occured while setting up generative AI model",
"An Error occured while setting up generative AI model"
);
console.log(error);
}
Expand Down
Loading

0 comments on commit 4ad46f1

Please sign in to comment.