Skip to content

Commit e60862d

Browse files
feat: add @langchain/openrouter provider support
- Create OpenRouter provider with static createInstance() factory - Add env vars: OPENROUTER_MODEL, OPENROUTER_API_KEY, OPENROUTER_TEMPERATURE, OPENROUTER_BASE_URL - Update LLMProviderType union to include ChatOpenRouter - Add package.json exports and typesVersions entries Co-authored-by: opencode <opencode-agent[bot]@users.noreply.github.com>
1 parent 9fa902b commit e60862d

7 files changed

Lines changed: 100 additions & 1 deletion

File tree

package-lock.json

Lines changed: 51 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
"type": "./dist/sub-modules/providers/groq/index.d.ts",
4242
"default": "./dist/sub-modules/providers/groq/index.js"
4343
},
44+
"./openrouter": {
45+
"type": "./dist/sub-modules/providers/openrouter/index.d.ts",
46+
"default": "./dist/sub-modules/providers/openrouter/index.js"
47+
},
4448
"./pg": {
4549
"type": "./dist/sub-modules/providers/pg/index.d.ts",
4650
"default": "./dist/sub-modules/providers/pg/index.js"
@@ -77,6 +81,9 @@
7781
"groq": [
7882
"dist/sub-modules/providers/groq/index.d.ts"
7983
],
84+
"openrouter": [
85+
"dist/sub-modules/providers/openrouter/index.d.ts"
86+
],
8087
"pg": [
8188
"dist/sub-modules/providers/pg/index.d.ts"
8289
],
@@ -153,6 +160,7 @@
153160
"@langchain/groq": "^1.2.0",
154161
"@langchain/ollama": "^1.2.6",
155162
"@langchain/openai": "^1.4.4",
163+
"@langchain/openrouter": "^0.2.2",
156164
"@langfuse/core": "^5.1.0",
157165
"@langfuse/langchain": "^5.1.0",
158166
"@loopback/build": "^11.0.9",
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './llms';
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
export * from './openrouter.provider';
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
import {Provider} from '@loopback/core';
2+
import {ChatOpenRouter} from '@langchain/openrouter';
3+
import {LLMProvider} from '../../../../types';
4+
import {OpenRouterInstanceConfig} from '../types';
5+
6+
export class OpenRouter implements Provider<LLMProvider> {
7+
static createInstance(config: OpenRouterInstanceConfig): ChatOpenRouter {
8+
return new ChatOpenRouter({
9+
model: config.model,
10+
...config.config,
11+
});
12+
}
13+
value(): LLMProvider {
14+
if (!process.env.OPENROUTER_MODEL || !process.env.OPENROUTER_API_KEY) {
15+
throw new Error(
16+
'OPENROUTER_MODEL and OPENROUTER_API_KEY environment variables must be set.',
17+
);
18+
}
19+
return OpenRouter.createInstance({
20+
model: process.env.OPENROUTER_MODEL,
21+
config: {
22+
apiKey: process.env.OPENROUTER_API_KEY,
23+
temperature: Number.parseFloat(
24+
process.env.OPENROUTER_TEMPERATURE ?? '0',
25+
),
26+
baseURL: process.env.OPENROUTER_BASE_URL,
27+
},
28+
});
29+
}
30+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
import {ChatOpenRouterInput} from '@langchain/openrouter';
2+
3+
export type OpenRouterInstanceConfig = {
4+
model: string;
5+
config: Omit<ChatOpenRouterInput, 'model'>;
6+
};

src/types.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import {Provider} from '@loopback/core';
1212
import {AnyObject} from '@loopback/repository';
1313
import {IGraphTool} from './graphs/types';
1414
import {ChatGroq} from '@langchain/groq';
15+
import {ChatOpenRouter} from '@langchain/openrouter';
1516

1617
export enum SupportedDBs {
1718
PostgreSQL = 'PostgreSQL',
@@ -43,7 +44,8 @@ export type LLMProviderType =
4344
| ChatAnthropic
4445
| ChatBedrockConverse
4546
| ChatGoogleGenerativeAI
46-
| ChatGroq;
47+
| ChatGroq
48+
| ChatOpenRouter;
4749

4850
export type LLMProvider = LLMProviderType & {
4951
getFile?: FileMessageBuilder;

0 commit comments

Comments
 (0)