@derogab/llm-proxy 0.4.0 → 0.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,10 @@
1
1
  # llm-proxy
2
2
  A simple and lightweight proxy for seamless integration with multiple LLM providers including OpenAI, Ollama, Cloudflare AI, and Llama.cpp.
3
3
 
4
+ > **Proxy Collection**: This package is part of a plug-and-play proxy collection designed for easy integration into your projects:
5
+ > - [`@derogab/llm-proxy`](https://github.com/derogab/llm-proxy) - LLM provider proxy (this package)
6
+ > - [`@derogab/stt-proxy`](https://github.com/derogab/stt-proxy) - Speech-to-Text provider proxy
7
+
4
8
  ## Features
5
9
 
6
10
  - **Multi-provider support**: Switch between OpenAI, Ollama, Cloudflare AI, and Llama.cpp with environment variables.
@@ -32,11 +36,26 @@ console.log(response.content);
32
36
  The package automatically detects which LLM provider to use based on your environment variables.
33
37
  Configure one or more providers:
34
38
 
39
+ ### Provider Selection
40
+ ```bash
41
+ LLM_PROVIDER=openai # Optional, explicitly select a provider (openai, cloudflare, ollama, llama.cpp)
42
+ ```
43
+
44
+ When `LLM_PROVIDER` is set, the package will use that specific provider and skip automatic detection. This is useful when you have multiple providers configured but want to force a specific one. If the required credentials for the specified provider are not configured, an error will be thrown. If not set, consider [provider priority](#provider-priority).
45
+
46
+ > **Note:** The legacy `PROVIDER` environment variable is still supported as a fallback for backward compatibility, but `LLM_PROVIDER` takes precedence when both are set.
47
+
35
48
  ### OpenAI
36
49
  ```bash
37
50
  OPENAI_API_KEY=your_openai_api_key # Required
38
51
  OPENAI_BASE_URL=https://api.openai.com/v1 # Optional
39
52
  OPENAI_MODEL=gpt-4o-mini # Optional, defaults to gpt-4o-mini
53
+
54
+ # Optional: When using OpenRouter (OPENAI_BASE_URL=https://openrouter.ai/api/v1),
55
+ # set these headers to appear in https://openrouter.ai/docs/app-attribution
56
+ OPENAI_OPENROUTER_REFERER=https://yourapp.com # Your app's URL
57
+ OPENAI_OPENROUTER_TITLE=Your App Name # Your app's display name
58
+ OPENAI_OPENROUTER_CATEGORIES=category1,category2 # Comma-separated categories
40
59
  ```
41
60
 
42
61
  ### Cloudflare AI
@@ -79,7 +98,9 @@ type MessageInputParam = {
79
98
 
80
99
  ## Provider Priority
81
100
 
82
- The package selects providers in the following order:
101
+ If the `LLM_PROVIDER` environment variable is set (or the legacy `PROVIDER` as fallback), the specified provider will be used directly (valid values: `openai`, `cloudflare`, `ollama`, `llama.cpp`).
102
+
103
+ Otherwise, the package selects providers automatically in the following order:
83
104
  1. **OpenAI** (if `OPENAI_API_KEY` is set)
84
105
  2. **Cloudflare AI** (if `CLOUDFLARE_ACCOUNT_ID`, `CLOUDFLARE_AUTH_KEY`, and `CLOUDFLARE_MODEL` are set)
85
106
  3. **Ollama** (if `OLLAMA_URI` is set)
package/dist/cjs/index.js CHANGED
@@ -15,8 +15,23 @@ dotenv.config();
15
15
  * @returns the response string from the OpenAI API.
16
16
  */
17
17
  async function generate_openai(messages) {
18
+ // Build default headers for OpenRouter attribution (optional).
19
+ const defaultHeaders = {};
20
+ if (process.env.OPENAI_OPENROUTER_REFERER) {
21
+ defaultHeaders['HTTP-Referer'] = process.env.OPENAI_OPENROUTER_REFERER;
22
+ }
23
+ if (process.env.OPENAI_OPENROUTER_TITLE) {
24
+ defaultHeaders['X-OpenRouter-Title'] = process.env.OPENAI_OPENROUTER_TITLE;
25
+ }
26
+ if (process.env.OPENAI_OPENROUTER_CATEGORIES) {
27
+ defaultHeaders['X-OpenRouter-Categories'] = process.env.OPENAI_OPENROUTER_CATEGORIES;
28
+ }
18
29
  // Create a new instance of the OpenAI class.
19
- const openai = new openai_1.default({ apiKey: process.env.OPENAI_API_KEY, baseURL: process.env.OPENAI_BASE_URL });
30
+ const openai = new openai_1.default({
31
+ apiKey: process.env.OPENAI_API_KEY,
32
+ baseURL: process.env.OPENAI_BASE_URL,
33
+ defaultHeaders: Object.keys(defaultHeaders).length > 0 ? defaultHeaders : undefined,
34
+ });
20
35
  // Call the OpenAI API.
21
36
  const chatCompletion = await openai.chat.completions.create({
22
37
  messages: messages,
@@ -138,53 +153,50 @@ async function generate_cloudflare(messages) {
138
153
  * @returns the response string.
139
154
  */
140
155
  async function generate(messages) {
141
- // If PROVIDER environment variable is set, use the specified provider.
142
- const provider = process.env.PROVIDER?.toLowerCase();
143
- if (provider) {
144
- switch (provider) {
145
- case 'openai':
146
- if (!process.env.OPENAI_API_KEY) {
147
- throw new Error('PROVIDER is set to "openai" but OPENAI_API_KEY is not configured.');
148
- }
149
- return await generate_openai(messages);
150
- case 'cloudflare':
151
- if (!process.env.CLOUDFLARE_ACCOUNT_ID || !process.env.CLOUDFLARE_AUTH_KEY || !process.env.CLOUDFLARE_MODEL) {
152
- throw new Error('PROVIDER is set to "cloudflare" but required credentials (CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_AUTH_KEY, CLOUDFLARE_MODEL) are not fully configured.');
153
- }
154
- return await generate_cloudflare(messages);
155
- case 'ollama':
156
- // No validation needed - generate_ollama has default host
157
- return await generate_ollama(messages);
158
- case 'llama.cpp':
159
- if (!process.env.LLAMA_CPP_MODEL_PATH) {
160
- throw new Error('PROVIDER is set to "llama.cpp" but LLAMA_CPP_MODEL_PATH is not configured.');
161
- }
162
- return await generate_llama_cpp(messages);
163
- default:
164
- throw new Error(`Invalid PROVIDER: "${process.env.PROVIDER}". Valid options are: openai, cloudflare, ollama, llama.cpp`);
156
+ // Determine provider: either from env var or from priority-based auto-detection.
157
+ // LLM_PROVIDER is the preferred env var, with PROVIDER as a fallback for backward compatibility.
158
+ let provider = (process.env.LLM_PROVIDER || process.env.PROVIDER)?.toLowerCase();
159
+ const isExplicitProvider = !!provider;
160
+ // If LLM_PROVIDER/PROVIDER is not explicitly set, auto-detect based on priority order.
161
+ if (!provider) {
162
+ if (process.env.OPENAI_API_KEY) {
163
+ provider = 'openai';
164
+ }
165
+ else if (process.env.CLOUDFLARE_ACCOUNT_ID && process.env.CLOUDFLARE_AUTH_KEY && process.env.CLOUDFLARE_MODEL) {
166
+ provider = 'cloudflare';
167
+ }
168
+ else if (process.env.OLLAMA_URI) {
169
+ provider = 'ollama';
170
+ }
171
+ else if (process.env.LLAMA_CPP_MODEL_PATH) {
172
+ provider = 'llama.cpp';
173
+ }
174
+ else {
175
+ throw new Error('No available LLM found.');
165
176
  }
166
177
  }
167
- // If PROVIDER is not set, use the default priority order.
168
- // Check what LLM to use, based on the environment variables.
169
- if (process.env.OPENAI_API_KEY) {
170
- // If openai key is available, use openai.
171
- return await generate_openai(messages);
172
- }
173
- else if (process.env.CLOUDFLARE_ACCOUNT_ID && process.env.CLOUDFLARE_AUTH_KEY && process.env.CLOUDFLARE_MODEL) {
174
- // If cloudflare keys are available, use cloudflare.
175
- return await generate_cloudflare(messages);
176
- }
177
- else if (process.env.OLLAMA_URI) {
178
- // If ollama is available, use ollama.
179
- return await generate_ollama(messages);
180
- }
181
- else if (process.env.LLAMA_CPP_MODEL_PATH) {
182
- // If llama_cpp is available, use llama_cpp.
183
- return await generate_llama_cpp(messages);
184
- }
185
- else {
186
- // Throw an error if no LLM is available.
187
- throw new Error('No available LLM found.');
178
+ // Now provider is always set - handle each provider with a single switch.
179
+ switch (provider) {
180
+ case 'openai':
181
+ if (isExplicitProvider && !process.env.OPENAI_API_KEY) {
182
+ throw new Error('LLM_PROVIDER is set to "openai" but OPENAI_API_KEY is not configured.');
183
+ }
184
+ return await generate_openai(messages);
185
+ case 'cloudflare':
186
+ if (isExplicitProvider && (!process.env.CLOUDFLARE_ACCOUNT_ID || !process.env.CLOUDFLARE_AUTH_KEY || !process.env.CLOUDFLARE_MODEL)) {
187
+ throw new Error('LLM_PROVIDER is set to "cloudflare" but required credentials (CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_AUTH_KEY, CLOUDFLARE_MODEL) are not fully configured.');
188
+ }
189
+ return await generate_cloudflare(messages);
190
+ case 'ollama':
191
+ // No validation needed - generate_ollama has default host
192
+ return await generate_ollama(messages);
193
+ case 'llama.cpp':
194
+ if (isExplicitProvider && !process.env.LLAMA_CPP_MODEL_PATH) {
195
+ throw new Error('LLM_PROVIDER is set to "llama.cpp" but LLAMA_CPP_MODEL_PATH is not configured.');
196
+ }
197
+ return await generate_llama_cpp(messages);
198
+ default:
199
+ throw new Error(`Invalid LLM_PROVIDER: "${process.env.LLM_PROVIDER || process.env.PROVIDER}". Valid options are: openai, cloudflare, ollama, llama.cpp`);
188
200
  }
189
201
  }
190
202
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
package/dist/esm/index.js CHANGED
@@ -12,8 +12,23 @@ dotenv.config();
12
12
  * @returns the response string from the OpenAI API.
13
13
  */
14
14
  async function generate_openai(messages) {
15
+ // Build default headers for OpenRouter attribution (optional).
16
+ const defaultHeaders = {};
17
+ if (process.env.OPENAI_OPENROUTER_REFERER) {
18
+ defaultHeaders['HTTP-Referer'] = process.env.OPENAI_OPENROUTER_REFERER;
19
+ }
20
+ if (process.env.OPENAI_OPENROUTER_TITLE) {
21
+ defaultHeaders['X-OpenRouter-Title'] = process.env.OPENAI_OPENROUTER_TITLE;
22
+ }
23
+ if (process.env.OPENAI_OPENROUTER_CATEGORIES) {
24
+ defaultHeaders['X-OpenRouter-Categories'] = process.env.OPENAI_OPENROUTER_CATEGORIES;
25
+ }
15
26
  // Create a new instance of the OpenAI class.
16
- const openai = new OpenAI({ apiKey: process.env.OPENAI_API_KEY, baseURL: process.env.OPENAI_BASE_URL });
27
+ const openai = new OpenAI({
28
+ apiKey: process.env.OPENAI_API_KEY,
29
+ baseURL: process.env.OPENAI_BASE_URL,
30
+ defaultHeaders: Object.keys(defaultHeaders).length > 0 ? defaultHeaders : undefined,
31
+ });
17
32
  // Call the OpenAI API.
18
33
  const chatCompletion = await openai.chat.completions.create({
19
34
  messages: messages,
@@ -135,53 +150,50 @@ async function generate_cloudflare(messages) {
135
150
  * @returns the response string.
136
151
  */
137
152
  export async function generate(messages) {
138
- // If PROVIDER environment variable is set, use the specified provider.
139
- const provider = process.env.PROVIDER?.toLowerCase();
140
- if (provider) {
141
- switch (provider) {
142
- case 'openai':
143
- if (!process.env.OPENAI_API_KEY) {
144
- throw new Error('PROVIDER is set to "openai" but OPENAI_API_KEY is not configured.');
145
- }
146
- return await generate_openai(messages);
147
- case 'cloudflare':
148
- if (!process.env.CLOUDFLARE_ACCOUNT_ID || !process.env.CLOUDFLARE_AUTH_KEY || !process.env.CLOUDFLARE_MODEL) {
149
- throw new Error('PROVIDER is set to "cloudflare" but required credentials (CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_AUTH_KEY, CLOUDFLARE_MODEL) are not fully configured.');
150
- }
151
- return await generate_cloudflare(messages);
152
- case 'ollama':
153
- // No validation needed - generate_ollama has default host
154
- return await generate_ollama(messages);
155
- case 'llama.cpp':
156
- if (!process.env.LLAMA_CPP_MODEL_PATH) {
157
- throw new Error('PROVIDER is set to "llama.cpp" but LLAMA_CPP_MODEL_PATH is not configured.');
158
- }
159
- return await generate_llama_cpp(messages);
160
- default:
161
- throw new Error(`Invalid PROVIDER: "${process.env.PROVIDER}". Valid options are: openai, cloudflare, ollama, llama.cpp`);
153
+ // Determine provider: either from env var or from priority-based auto-detection.
154
+ // LLM_PROVIDER is the preferred env var, with PROVIDER as a fallback for backward compatibility.
155
+ let provider = (process.env.LLM_PROVIDER || process.env.PROVIDER)?.toLowerCase();
156
+ const isExplicitProvider = !!provider;
157
+ // If LLM_PROVIDER/PROVIDER is not explicitly set, auto-detect based on priority order.
158
+ if (!provider) {
159
+ if (process.env.OPENAI_API_KEY) {
160
+ provider = 'openai';
161
+ }
162
+ else if (process.env.CLOUDFLARE_ACCOUNT_ID && process.env.CLOUDFLARE_AUTH_KEY && process.env.CLOUDFLARE_MODEL) {
163
+ provider = 'cloudflare';
164
+ }
165
+ else if (process.env.OLLAMA_URI) {
166
+ provider = 'ollama';
167
+ }
168
+ else if (process.env.LLAMA_CPP_MODEL_PATH) {
169
+ provider = 'llama.cpp';
170
+ }
171
+ else {
172
+ throw new Error('No available LLM found.');
162
173
  }
163
174
  }
164
- // If PROVIDER is not set, use the default priority order.
165
- // Check what LLM to use, based on the environment variables.
166
- if (process.env.OPENAI_API_KEY) {
167
- // If openai key is available, use openai.
168
- return await generate_openai(messages);
169
- }
170
- else if (process.env.CLOUDFLARE_ACCOUNT_ID && process.env.CLOUDFLARE_AUTH_KEY && process.env.CLOUDFLARE_MODEL) {
171
- // If cloudflare keys are available, use cloudflare.
172
- return await generate_cloudflare(messages);
173
- }
174
- else if (process.env.OLLAMA_URI) {
175
- // If ollama is available, use ollama.
176
- return await generate_ollama(messages);
177
- }
178
- else if (process.env.LLAMA_CPP_MODEL_PATH) {
179
- // If llama_cpp is available, use llama_cpp.
180
- return await generate_llama_cpp(messages);
181
- }
182
- else {
183
- // Throw an error if no LLM is available.
184
- throw new Error('No available LLM found.');
175
+ // Now provider is always set - handle each provider with a single switch.
176
+ switch (provider) {
177
+ case 'openai':
178
+ if (isExplicitProvider && !process.env.OPENAI_API_KEY) {
179
+ throw new Error('LLM_PROVIDER is set to "openai" but OPENAI_API_KEY is not configured.');
180
+ }
181
+ return await generate_openai(messages);
182
+ case 'cloudflare':
183
+ if (isExplicitProvider && (!process.env.CLOUDFLARE_ACCOUNT_ID || !process.env.CLOUDFLARE_AUTH_KEY || !process.env.CLOUDFLARE_MODEL)) {
184
+ throw new Error('LLM_PROVIDER is set to "cloudflare" but required credentials (CLOUDFLARE_ACCOUNT_ID, CLOUDFLARE_AUTH_KEY, CLOUDFLARE_MODEL) are not fully configured.');
185
+ }
186
+ return await generate_cloudflare(messages);
187
+ case 'ollama':
188
+ // No validation needed - generate_ollama has default host
189
+ return await generate_ollama(messages);
190
+ case 'llama.cpp':
191
+ if (isExplicitProvider && !process.env.LLAMA_CPP_MODEL_PATH) {
192
+ throw new Error('LLM_PROVIDER is set to "llama.cpp" but LLAMA_CPP_MODEL_PATH is not configured.');
193
+ }
194
+ return await generate_llama_cpp(messages);
195
+ default:
196
+ throw new Error(`Invalid LLM_PROVIDER: "${process.env.LLM_PROVIDER || process.env.PROVIDER}". Valid options are: openai, cloudflare, ollama, llama.cpp`);
185
197
  }
186
198
  }
187
199
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,GAAG,OAAO,GAAG,iBAAiB,CAAC;AAqIzF;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAmDxF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,MAAM,iBAAiB,GAAG;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,0BAA0B,GAAG,OAAO,GAAG,iBAAiB,CAAC;AAqJzF;;;;;GAKG;AACH,wBAAsB,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,EAAE,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4CxF"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@derogab/llm-proxy",
3
3
  "description": "A simple and lightweight proxy for seamless integration with multiple LLM providers including OpenAI, Ollama, and Cloudflare AI",
4
- "version": "0.4.0",
4
+ "version": "0.4.2",
5
5
  "type": "module",
6
6
  "author": "derogab",
7
7
  "license": "MIT",
@@ -45,15 +45,15 @@
45
45
  ],
46
46
  "devDependencies": {
47
47
  "@types/node": "25.0.6",
48
- "@vitest/coverage-v8": "4.0.16",
48
+ "@vitest/coverage-v8": "4.0.18",
49
49
  "typescript": "5.9.3",
50
- "vitest": "4.0.16"
50
+ "vitest": "4.0.18"
51
51
  },
52
52
  "dependencies": {
53
- "axios": "1.13.2",
53
+ "axios": "1.13.4",
54
54
  "dotenv": "17.2.3",
55
55
  "node-llama-cpp": "3.15.0",
56
56
  "ollama": "0.6.3",
57
- "openai": "6.16.0"
57
+ "openai": "6.17.0"
58
58
  }
59
59
  }