Skip to content

Commit 7e08bb4

Browse files
committed
Added OpenRouter model provider
1 parent 0419766 commit 7e08bb4

File tree

5 files changed

+59
-0
lines changed

5 files changed

+59
-0
lines changed

.env.example

+8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ DISCORD_API_TOKEN= # Bot token
44
OPENAI_API_KEY=sk-* # OpenAI API key, starting with sk-
55
REDPILL_API_KEY= # REDPILL API Key
66
GROQ_API_KEY=gsk_*
7+
OPENROUTER_API_KEY=
78

89
ELEVENLABS_XI_API_KEY= # API key from elevenlabs
910

@@ -27,6 +28,13 @@ X_SERVER_URL=
2728
XAI_API_KEY=
2829
XAI_MODEL=
2930

31+
#OpenRouter (Use one model for everything or set individual for small, medium, large tasks)
32+
#leave blank to use defaults hermes 70b for small tasks & 405b for medium/large tasks
33+
OPENROUTER_MODEL=
34+
SMALL_OPENROUTER_MODEL=
35+
MEDIUM_OLLAMA_MODEL=
36+
LARGE_OLLAMA_MODEL=
37+
3038

3139
#Set to Use for New OLLAMA provider
3240
OLLAMA_SERVER_URL= #Leave blank for default localhost:11434

packages/agent/src/index.ts

+5
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,11 @@ export function getTokenForProvider(
128128
character.settings?.secrets?.REDPILL_API_KEY ||
129129
settings.REDPILL_API_KEY
130130
);
131+
case ModelProviderName.OPENROUTER:
132+
return (
133+
character.settings?.secrets?.OPENROUTER ||
134+
settings.OPENROUTER_API_KEY
135+
);
131136
}
132137
}
133138

packages/core/src/generation.ts

+25
Original file line numberDiff line numberDiff line change
@@ -214,6 +214,31 @@ export async function generateText({
214214
break;
215215
}
216216

217+
218+
case ModelProviderName.OPENROUTER: {
219+
elizaLogger.log("Initializing OpenRouter model.");
220+
const serverUrl = models[provider].endpoint;
221+
const openrouter = createOpenAI({ apiKey, baseURL: serverUrl });
222+
223+
const { text: openrouterResponse } = await aiGenerateText({
224+
model: openrouter.languageModel(model),
225+
prompt: context,
226+
temperature: temperature,
227+
system:
228+
runtime.character.system ??
229+
settings.SYSTEM_PROMPT ??
230+
undefined,
231+
maxTokens: max_response_length,
232+
frequencyPenalty: frequency_penalty,
233+
presencePenalty: presence_penalty,
234+
});
235+
236+
response = openrouterResponse;
237+
elizaLogger.log("Received response from OpenRouter model.");
238+
break;
239+
}
240+
241+
217242
case ModelProviderName.OLLAMA:
218243
{
219244
console.log("Initializing Ollama model.");

packages/core/src/models.ts

+19
Original file line numberDiff line numberDiff line change
@@ -162,6 +162,25 @@ const models: Models = {
162162
[ModelClass.EMBEDDING]: "text-embedding-3-small",
163163
},
164164
},
165+
[ModelProviderName.OPENROUTER]: {
166+
endpoint: "https://openrouter.ai/api/v1",
167+
settings: {
168+
stop: [],
169+
maxInputTokens: 128000,
170+
maxOutputTokens: 8192,
171+
frequency_penalty: 0.0,
172+
presence_penalty: 0.0,
173+
temperature: 0.6,
174+
},
175+
// Available models: https://docs.red-pill.ai/get-started/supported-models
176+
// To test other models, change the models below
177+
model: {
178+
[ModelClass.SMALL]: "nousresearch/hermes-3-llama-3.1-70b",
179+
[ModelClass.MEDIUM]: "nousresearch/hermes-3-llama-3.1-405b",
180+
[ModelClass.LARGE]: "nousresearch/hermes-3-llama-3.1-405b",
181+
[ModelClass.EMBEDDING]: "text-embedding-3-small",
182+
},
183+
},
165184
[ModelProviderName.OLLAMA]: {
166185
settings: {
167186
stop: [],

packages/core/src/types.ts

+2
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ export type Models = {
112112
[ModelProviderName.GOOGLE]: Model;
113113
[ModelProviderName.CLAUDE_VERTEX]: Model;
114114
[ModelProviderName.REDPILL]: Model;
115+
[ModelProviderName.OPENROUTER]: Model;
115116
[ModelProviderName.OLLAMA]: Model;
116117
};
117118

@@ -125,6 +126,7 @@ export enum ModelProviderName {
125126
GOOGLE = "google",
126127
CLAUDE_VERTEX = "claude_vertex",
127128
REDPILL = "redpill",
129+
OPENROUTER = "openrouter",
128130
OLLAMA = "ollama",
129131
}
130132

0 commit comments

Comments
 (0)