From 48ef0834ca155023458de8ca8c6fbae2be57c67f Mon Sep 17 00:00:00 2001 From: Logan Yang Date: Thu, 25 Jan 2024 17:48:32 -0800 Subject: [PATCH] Add new OpenAI models 0125 (#258) --- manifest.json | 2 +- package-lock.json | 4 ++-- package.json | 2 +- src/LLMProviders/embeddingManager.ts | 2 ++ src/aiParams.ts | 1 + src/constants.ts | 12 +++++++++++- src/main.ts | 2 ++ src/settings/SettingsPage.tsx | 1 + src/settings/components/QASettings.tsx | 12 +++++++++++- src/settings/components/SettingsMain.tsx | 4 ++++ versions.json | 3 ++- 11 files changed, 38 insertions(+), 7 deletions(-) diff --git a/manifest.json b/manifest.json index dca69826..e195d67d 100644 --- a/manifest.json +++ b/manifest.json @@ -1,7 +1,7 @@ { "id": "copilot", "name": "Copilot", - "version": "2.4.12", + "version": "2.4.13", "minAppVersion": "0.15.0", "description": "A ChatGPT Copilot in Obsidian.", "author": "Logan Yang", diff --git a/package-lock.json b/package-lock.json index 3cc65eb5..61c07d00 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "obsidian-copilot", - "version": "2.4.12", + "version": "2.4.13", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "obsidian-copilot", - "version": "2.4.12", + "version": "2.4.13", "license": "AGPL-3.0", "dependencies": { "@huggingface/inference": "^2.6.4", diff --git a/package.json b/package.json index e6768feb..b2dc2227 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-copilot", - "version": "2.4.12", + "version": "2.4.13", "description": "ChatGPT integration for Obsidian", "main": "main.js", "scripts": { diff --git a/src/LLMProviders/embeddingManager.ts b/src/LLMProviders/embeddingManager.ts index 34e12cf8..e2d23324 100644 --- a/src/LLMProviders/embeddingManager.ts +++ b/src/LLMProviders/embeddingManager.ts @@ -35,6 +35,7 @@ export default class EmbeddingManager { // If openAIProxyBaseUrl is set, it overrides both chat and embedding models. const OpenAIEmbeddingsAPI = openAIProxyBaseUrl ? new ProxyOpenAIEmbeddings({ + modelName: this.langChainParams.embeddingModel, openAIApiKey, maxRetries: 3, maxConcurrency: 3, @@ -42,6 +43,7 @@ export default class EmbeddingManager { openAIProxyBaseUrl, }): new OpenAIEmbeddings({ + modelName: this.langChainParams.embeddingModel, openAIApiKey, maxRetries: 3, maxConcurrency: 3, diff --git a/src/aiParams.ts b/src/aiParams.ts index e58914ec..deeb9f5c 100644 --- a/src/aiParams.ts +++ b/src/aiParams.ts @@ -38,6 +38,7 @@ export interface LangChainParams { openRouterAiApiKey: string, model: string, modelDisplayName: string, + embeddingModel: string, temperature: number, maxTokens: number, systemMessage: string, diff --git a/src/constants.ts b/src/constants.ts index 2db38182..2c463f0c 100644 --- a/src/constants.ts +++ b/src/constants.ts @@ -9,7 +9,7 @@ export enum ChatModels { GPT_35_TURBO = 'gpt-3.5-turbo', GPT_35_TURBO_16K = 'gpt-3.5-turbo-16k', GPT_4 = 'gpt-4', - GPT_4_TURBO = 'gpt-4-1106-preview', + GPT_4_TURBO = 'gpt-4-turbo-preview', GPT_4_32K = 'gpt-4-32k', AZURE_GPT_35_TURBO = 'gpt-35-turbo', AZURE_GPT_35_TURBO_16K = 'gpt-35-turbo-16k', @@ -108,10 +108,19 @@ export const EMBEDDING_PROVIDERS = [ ]; // Embedding Models +export const ADA_V2 = 'text-embedding-ada-002'; +export const OPENAI_EMBEDDING_SMALL = 'text-embedding-3-small'; +export const OPENAI_EMBEDDING_LARGE = 'text-embedding-3-large'; export const DISTILBERT_NLI = 'sentence-transformers/distilbert-base-nli-mean-tokens'; export const INSTRUCTOR_XL = 'hkunlp/instructor-xl'; // Inference API is off for this export const MPNET_V2 = 'sentence-transformers/all-mpnet-base-v2'; // Inference API returns 400 +export const OPENAI_EMBEDDING_MODELS = [ + ADA_V2, + OPENAI_EMBEDDING_SMALL, + OPENAI_EMBEDDING_LARGE, +] + export const DEFAULT_SETTINGS: CopilotSettings = { openAIApiKey: '', huggingfaceApiKey: '', @@ -127,6 +136,7 @@ export const DEFAULT_SETTINGS: CopilotSettings = { openRouterModel: 'cognitivecomputations/dolphin-mixtral-8x7b', defaultModel: ChatModels.GPT_4_TURBO, defaultModelDisplayName: ChatModelDisplayNames.GPT_4_TURBO, + embeddingModel: OPENAI_EMBEDDING_SMALL, temperature: 0.1, maxTokens: 1000, contextTurns: 15, diff --git a/src/main.ts b/src/main.ts index bfef517e..47961f3d 100644 --- a/src/main.ts +++ b/src/main.ts @@ -461,6 +461,7 @@ export default class CopilotPlugin extends Plugin { googleApiKey, openRouterAiApiKey, openRouterModel, + embeddingModel, temperature, maxTokens, contextTurns, @@ -487,6 +488,7 @@ export default class CopilotPlugin extends Plugin { lmStudioPort: lmStudioPort || DEFAULT_SETTINGS.lmStudioPort, model: this.settings.defaultModel, modelDisplayName: this.settings.defaultModelDisplayName, + embeddingModel: embeddingModel || DEFAULT_SETTINGS.embeddingModel, temperature: Number(temperature), maxTokens: Number(maxTokens), systemMessage: this.settings.userSystemPrompt || DEFAULT_SYSTEM_PROMPT, diff --git a/src/settings/SettingsPage.tsx b/src/settings/SettingsPage.tsx index d03820ef..f8bcaebd 100644 --- a/src/settings/SettingsPage.tsx +++ b/src/settings/SettingsPage.tsx @@ -19,6 +19,7 @@ export interface CopilotSettings { openRouterModel: string; defaultModel: string; defaultModelDisplayName: string; + embeddingModel: string; temperature: number; maxTokens: number; contextTurns: number; diff --git a/src/settings/components/QASettings.tsx b/src/settings/components/QASettings.tsx index e244606b..e7b14778 100644 --- a/src/settings/components/QASettings.tsx +++ b/src/settings/components/QASettings.tsx @@ -1,4 +1,4 @@ -import { EMBEDDING_PROVIDERS } from '@/constants'; +import { EMBEDDING_PROVIDERS, OPENAI_EMBEDDING_MODELS } from '@/constants'; import React from 'react'; import ApiSetting from './ApiSetting'; import Collapsible from './Collapsible'; @@ -7,6 +7,8 @@ import { DropdownComponent, SliderComponent } from './SettingBlocks'; interface QASettingsProps { embeddingProvider: string; setEmbeddingProvider: (value: string) => void; + embeddingModel: string; + setEmbeddingModel: (value: string) => void; ttlDays: number; setTtlDays: (value: number) => void; cohereApiKey: string; @@ -18,6 +20,8 @@ interface QASettingsProps { const QASettings: React.FC = ({ embeddingProvider, setEmbeddingProvider, + embeddingModel, + setEmbeddingModel, ttlDays, setTtlDays, cohereApiKey, @@ -44,6 +48,12 @@ const QASettings: React.FC = ({ onChange={setEmbeddingProvider} options={EMBEDDING_PROVIDERS} /> +