Karrot commited on
Commit
f9e750d
·
unverified ·
2 Parent(s): 73505a3 1ba0606

Merge branch 'main' into main

Browse files
.env.example CHANGED
@@ -43,10 +43,16 @@ OPENAI_LIKE_API_KEY=
43
  # You only need this environment variable set if you want to use Mistral models
44
  MISTRAL_API_KEY=
45
 
 
46
  # Get LMStudio Base URL from LM Studio Developer Console
47
  # Make sure to enable CORS
48
  # Example: http://localhost:1234
49
  LMSTUDIO_API_BASE_URL=
50
 
 
 
 
 
 
51
  # Include this environment variable if you want more logging for debugging locally
52
  VITE_LOG_LEVEL=debug
 
43
  # You only need this environment variable set if you want to use Mistral models
44
  MISTRAL_API_KEY=
45
 
46
+
47
  # Get LMStudio Base URL from LM Studio Developer Console
48
  # Make sure to enable CORS
49
  # Example: http://localhost:1234
50
  LMSTUDIO_API_BASE_URL=
51
 
52
+ # Get your xAI API key
53
+ # https://x.ai/api
54
+ # You only need this environment variable set if you want to use xAI models
55
+ XAI_API_KEY=
56
+
57
  # Include this environment variable if you want more logging for debugging locally
58
  VITE_LOG_LEVEL=debug
app/lib/.server/llm/api-key.ts CHANGED
@@ -25,6 +25,8 @@ export function getAPIKey(cloudflareEnv: Env, provider: string) {
25
  return env.MISTRAL_API_KEY || cloudflareEnv.MISTRAL_API_KEY;
26
  case "OpenAILike":
27
  return env.OPENAI_LIKE_API_KEY || cloudflareEnv.OPENAI_LIKE_API_KEY;
 
 
28
  default:
29
  return "";
30
  }
 
25
  return env.MISTRAL_API_KEY || cloudflareEnv.MISTRAL_API_KEY;
26
  case "OpenAILike":
27
  return env.OPENAI_LIKE_API_KEY || cloudflareEnv.OPENAI_LIKE_API_KEY;
28
+ case "xAI":
29
+ return env.XAI_API_KEY || cloudflareEnv.XAI_API_KEY;
30
  default:
31
  return "";
32
  }
app/lib/.server/llm/model.ts CHANGED
@@ -58,7 +58,10 @@ export function getGroqModel(apiKey: string, model: string) {
58
  }
59
 
60
  export function getOllamaModel(baseURL: string, model: string) {
61
- let Ollama = ollama(model);
 
 
 
62
  Ollama.config.baseURL = `${baseURL}/api`;
63
  return Ollama;
64
  }
@@ -88,6 +91,15 @@ export function getLMStudioModel(baseURL: string, model: string) {
88
  return lmstudio(model);
89
  }
90
 
 
 
 
 
 
 
 
 
 
91
  export function getModel(provider: string, model: string, env: Env) {
92
  const apiKey = getAPIKey(env, provider);
93
  const baseURL = getBaseURL(env, provider);
@@ -111,6 +123,8 @@ export function getModel(provider: string, model: string, env: Env) {
111
  return getMistralModel(apiKey, model);
112
  case 'LMStudio':
113
  return getLMStudioModel(baseURL, model);
 
 
114
  default:
115
  return getOllamaModel(baseURL, model);
116
  }
 
58
  }
59
 
60
  export function getOllamaModel(baseURL: string, model: string) {
61
+ let Ollama = ollama(model, {
62
+ numCtx: 32768,
63
+ });
64
+
65
  Ollama.config.baseURL = `${baseURL}/api`;
66
  return Ollama;
67
  }
 
91
  return lmstudio(model);
92
  }
93
 
94
+ export function getXAIModel(apiKey: string, model: string) {
95
+ const openai = createOpenAI({
96
+ baseURL: 'https://api.x.ai/v1',
97
+ apiKey,
98
+ });
99
+
100
+ return openai(model);
101
+ }
102
+
103
  export function getModel(provider: string, model: string, env: Env) {
104
  const apiKey = getAPIKey(env, provider);
105
  const baseURL = getBaseURL(env, provider);
 
123
  return getMistralModel(apiKey, model);
124
  case 'LMStudio':
125
  return getLMStudioModel(baseURL, model);
126
+ case 'xAI':
127
+ return getXAIModel(apiKey, model);
128
  default:
129
  return getOllamaModel(baseURL, model);
130
  }
app/utils/constants.ts CHANGED
@@ -15,6 +15,7 @@ const staticModels: ModelInfo[] = [
15
  { name: 'deepseek/deepseek-coder', label: 'Deepseek-Coder V2 236B (OpenRouter)', provider: 'OpenRouter' },
16
  { name: 'google/gemini-flash-1.5', label: 'Google Gemini Flash 1.5 (OpenRouter)', provider: 'OpenRouter' },
17
  { name: 'google/gemini-pro-1.5', label: 'Google Gemini Pro 1.5 (OpenRouter)', provider: 'OpenRouter' },
 
18
  { name: 'mistralai/mistral-nemo', label: 'OpenRouter Mistral Nemo (OpenRouter)', provider: 'OpenRouter' },
19
  { name: 'qwen/qwen-110b-chat', label: 'OpenRouter Qwen 110b Chat (OpenRouter)', provider: 'OpenRouter' },
20
  { name: 'cohere/command', label: 'Cohere Command (OpenRouter)', provider: 'OpenRouter' },
@@ -32,6 +33,7 @@ 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
  { name: 'deepseek-coder', label: 'Deepseek-Coder', provider: 'Deepseek'},
36
  { name: 'deepseek-chat', label: 'Deepseek-Chat', provider: 'Deepseek'},
37
  { name: 'open-mistral-7b', label: 'Mistral 7B', provider: 'Mistral' },
 
15
  { name: 'deepseek/deepseek-coder', label: 'Deepseek-Coder V2 236B (OpenRouter)', provider: 'OpenRouter' },
16
  { name: 'google/gemini-flash-1.5', label: 'Google Gemini Flash 1.5 (OpenRouter)', provider: 'OpenRouter' },
17
  { name: 'google/gemini-pro-1.5', label: 'Google Gemini Pro 1.5 (OpenRouter)', provider: 'OpenRouter' },
18
+ { name: 'x-ai/grok-beta', label: "xAI Grok Beta (OpenRouter)", provider: 'OpenRouter' },
19
  { name: 'mistralai/mistral-nemo', label: 'OpenRouter Mistral Nemo (OpenRouter)', provider: 'OpenRouter' },
20
  { name: 'qwen/qwen-110b-chat', label: 'OpenRouter Qwen 110b Chat (OpenRouter)', provider: 'OpenRouter' },
21
  { name: 'cohere/command', label: 'Cohere Command (OpenRouter)', provider: 'OpenRouter' },
 
33
  { name: 'gpt-4-turbo', label: 'GPT-4 Turbo', provider: 'OpenAI' },
34
  { name: 'gpt-4', label: 'GPT-4', provider: 'OpenAI' },
35
  { name: 'gpt-3.5-turbo', label: 'GPT-3.5 Turbo', provider: 'OpenAI' },
36
+ { name: 'grok-beta', label: "xAI Grok Beta", provider: 'xAI' },
37
  { name: 'deepseek-coder', label: 'Deepseek-Coder', provider: 'Deepseek'},
38
  { name: 'deepseek-chat', label: 'Deepseek-Chat', provider: 'Deepseek'},
39
  { name: 'open-mistral-7b', label: 'Mistral 7B', provider: 'Mistral' },