Cole Medin commited on
Commit
5d70255
·
unverified ·
2 Parent(s): d40be24 285a955

Merge pull request #36 from ArulGandhi/main

Browse files
.env.example CHANGED
@@ -29,5 +29,10 @@ GOOGLE_GENERATIVE_AI_API_KEY=
29
  # EXAMPLE http://localhost:11434
30
  OLLAMA_API_BASE_URL=
31
 
 
 
 
 
 
32
  # Include this environment variable if you want more logging for debugging locally
33
  VITE_LOG_LEVEL=debug
 
29
  # EXAMPLE http://localhost:11434
30
  OLLAMA_API_BASE_URL=
31
 
32
+ # Get your Mistral API Key by following these instructions -
33
+ # https://console.mistral.ai/api-keys/
34
+ # You only need this environment variable set if you want to use Mistral models
35
+ MISTRAL_API_KEY=
36
+
37
  # Include this environment variable if you want more logging for debugging locally
38
  VITE_LOG_LEVEL=debug
app/lib/.server/llm/api-key.ts CHANGED
@@ -19,6 +19,8 @@ export function getAPIKey(cloudflareEnv: Env, provider: string) {
19
  return env.GROQ_API_KEY || cloudflareEnv.GROQ_API_KEY;
20
  case 'OpenRouter':
21
  return env.OPEN_ROUTER_API_KEY || cloudflareEnv.OPEN_ROUTER_API_KEY;
 
 
22
  default:
23
  return "";
24
  }
 
19
  return env.GROQ_API_KEY || cloudflareEnv.GROQ_API_KEY;
20
  case 'OpenRouter':
21
  return env.OPEN_ROUTER_API_KEY || cloudflareEnv.OPEN_ROUTER_API_KEY;
22
+ case 'Mistral':
23
+ return env.MISTRAL_API_KEY || cloudflareEnv.MISTRAL_API_KEY;
24
  default:
25
  return "";
26
  }
app/lib/.server/llm/model.ts CHANGED
@@ -6,6 +6,8 @@ import { createOpenAI } from '@ai-sdk/openai';
6
  import { createGoogleGenerativeAI } from '@ai-sdk/google';
7
  import { ollama } from 'ollama-ai-provider';
8
  import { createOpenRouter } from "@openrouter/ai-sdk-provider";
 
 
9
 
10
  export function getAnthropicModel(apiKey: string, model: string) {
11
  const anthropic = createAnthropic({
@@ -23,6 +25,14 @@ export function getOpenAIModel(apiKey: string, model: string) {
23
  return openai(model);
24
  }
25
 
 
 
 
 
 
 
 
 
26
  export function getGoogleModel(apiKey: string, model: string) {
27
  const google = createGoogleGenerativeAI(
28
  apiKey,
@@ -67,6 +77,8 @@ export function getModel(provider: string, model: string, env: Env) {
67
  return getOpenRouterModel(apiKey, model);
68
  case 'Google':
69
  return getGoogleModel(apiKey, model)
 
 
70
  default:
71
  return getOllamaModel(model);
72
  }
 
6
  import { createGoogleGenerativeAI } from '@ai-sdk/google';
7
  import { ollama } from 'ollama-ai-provider';
8
  import { createOpenRouter } from "@openrouter/ai-sdk-provider";
9
+ import { mistral } from '@ai-sdk/mistral';
10
+ import { createMistral } from '@ai-sdk/mistral';
11
 
12
  export function getAnthropicModel(apiKey: string, model: string) {
13
  const anthropic = createAnthropic({
 
25
  return openai(model);
26
  }
27
 
28
+ export function getMistralModel(apiKey: string, model: string) {
29
+ const mistral = createMistral({
30
+ apiKey
31
+ });
32
+
33
+ return mistral(model);
34
+ }
35
+
36
  export function getGoogleModel(apiKey: string, model: string) {
37
  const google = createGoogleGenerativeAI(
38
  apiKey,
 
77
  return getOpenRouterModel(apiKey, model);
78
  case 'Google':
79
  return getGoogleModel(apiKey, model)
80
+ case 'Mistral':
81
+ return getMistralModel(apiKey, model);
82
  default:
83
  return getOllamaModel(model);
84
  }
app/utils/constants.ts CHANGED
@@ -32,6 +32,15 @@ const staticModels: ModelInfo[] = [
32
  { name: 'gpt-4-turbo', label: 'GPT-4 Turbo', provider: 'OpenAI' },
33
  { name: 'gpt-4', label: 'GPT-4', provider: 'OpenAI' },
34
  { name: 'gpt-3.5-turbo', label: 'GPT-3.5 Turbo', provider: 'OpenAI' },
 
 
 
 
 
 
 
 
 
35
  ];
36
 
37
  export let MODEL_LIST: ModelInfo[] = [...staticModels];
 
32
  { name: 'gpt-4-turbo', label: 'GPT-4 Turbo', provider: 'OpenAI' },
33
  { name: 'gpt-4', label: 'GPT-4', provider: 'OpenAI' },
34
  { name: 'gpt-3.5-turbo', label: 'GPT-3.5 Turbo', provider: 'OpenAI' },
35
+ { name: 'open-mistral-7b', label: 'Mistral 7B', provider: 'Mistral' },
36
+ { name: 'open-mixtral-8x7b', label: 'Mistral 8x7B', provider: 'Mistral' },
37
+ { name: 'open-mixtral-8x22b', label: 'Mistral 8x22B', provider: 'Mistral' },
38
+ { name: 'open-codestral-mamba', label: 'Codestral Mamba', provider: 'Mistral' },
39
+ { name: 'open-mistral-nemo', label: 'Mistral Nemo', provider: 'Mistral' },
40
+ { name: 'ministral-8b-latest', label: 'Mistral 8B', provider: 'Mistral' },
41
+ { name: 'ministral-small-latest', label: 'Mistral Small', provider: 'Mistral' },
42
+ { name: 'codestral-latest', label: 'Codestral', provider: 'Mistral' },
43
+ { name: 'ministral-large-latest', label: 'Mistral Large Latest', provider: 'Mistral' },
44
  ];
45
 
46
  export let MODEL_LIST: ModelInfo[] = [...staticModels];
package.json CHANGED
@@ -25,6 +25,7 @@
25
  "@ai-sdk/anthropic": "^0.0.39",
26
  "@ai-sdk/google": "^0.0.52",
27
  "@ai-sdk/openai": "^0.0.66",
 
28
  "@codemirror/autocomplete": "^6.17.0",
29
  "@codemirror/commands": "^6.6.0",
30
  "@codemirror/lang-cpp": "^6.0.2",
 
25
  "@ai-sdk/anthropic": "^0.0.39",
26
  "@ai-sdk/google": "^0.0.52",
27
  "@ai-sdk/openai": "^0.0.66",
28
+ "@ai-sdk/mistral": "^0.0.43",
29
  "@codemirror/autocomplete": "^6.17.0",
30
  "@codemirror/commands": "^6.6.0",
31
  "@codemirror/lang-cpp": "^6.0.2",
pnpm-lock.yaml CHANGED
@@ -17,6 +17,9 @@ importers:
17
  '@ai-sdk/google':
18
  specifier: ^0.0.52
19
  version: 0.0.52([email protected])
 
 
 
20
  '@ai-sdk/openai':
21
  specifier: ^0.0.66
22
  version: 0.0.66([email protected])
@@ -270,6 +273,12 @@ packages:
270
  peerDependencies:
271
  zod: ^3.0.0
272
 
 
 
 
 
 
 
273
  '@ai-sdk/[email protected]':
274
  resolution: {integrity: sha512-V4XeDnlNl5/AY3GB3ozJUjqnBLU5pK3DacKTbCNH3zH8/MggJoH6B8wRGdLUPVFMcsMz60mtvh4DC9JsIVFrKw==}
275
  engines: {node: '>=18'}
@@ -5448,6 +5457,12 @@ snapshots:
5448
  json-schema: 0.4.0
5449
  zod: 3.23.8
5450
 
 
 
 
 
 
 
5451
5452
  dependencies:
5453
  '@ai-sdk/provider': 0.0.24
 
17
  '@ai-sdk/google':
18
  specifier: ^0.0.52
19
  version: 0.0.52([email protected])
20
+ '@ai-sdk/mistral':
21
+ specifier: ^0.0.43
22
+ version: 0.0.43([email protected])
23
  '@ai-sdk/openai':
24
  specifier: ^0.0.66
25
  version: 0.0.66([email protected])
 
273
  peerDependencies:
274
  zod: ^3.0.0
275
 
276
+ '@ai-sdk/[email protected]':
277
+ resolution: {integrity: sha512-YcneVvO57bbmseUmnvQaj6OolMj7/q1W/oeiFj1h+CJZsXIOX8P9i2Cmo2B7HMBbt73NIcvtyPze3GjaczZRqw==}
278
+ engines: {node: '>=18'}
279
+ peerDependencies:
280
+ zod: ^3.0.0
281
+
282
  '@ai-sdk/[email protected]':
283
  resolution: {integrity: sha512-V4XeDnlNl5/AY3GB3ozJUjqnBLU5pK3DacKTbCNH3zH8/MggJoH6B8wRGdLUPVFMcsMz60mtvh4DC9JsIVFrKw==}
284
  engines: {node: '>=18'}
 
5457
  json-schema: 0.4.0
5458
  zod: 3.23.8
5459
 
5460
5461
+ dependencies:
5462
+ '@ai-sdk/provider': 0.0.24
5463
+ '@ai-sdk/provider-utils': 1.0.20([email protected])
5464
+ zod: 3.23.8
5465
+
5466
5467
  dependencies:
5468
  '@ai-sdk/provider': 0.0.24