From 7e08bb4ffbefa07ed81929d7d590f8f992fac802 Mon Sep 17 00:00:00 2001 From: Ophiuchus Date: Sat, 9 Nov 2024 04:13:43 -0600 Subject: [PATCH 1/4] Added OpenRouter model provider --- .env.example | 8 ++++++++ packages/agent/src/index.ts | 5 +++++ packages/core/src/generation.ts | 25 +++++++++++++++++++++++++ packages/core/src/models.ts | 19 +++++++++++++++++++ packages/core/src/types.ts | 2 ++ 5 files changed, 59 insertions(+) diff --git a/.env.example b/.env.example index 7b3137b9b85..4b1e92cf2c9 100644 --- a/.env.example +++ b/.env.example @@ -4,6 +4,7 @@ DISCORD_API_TOKEN= # Bot token OPENAI_API_KEY=sk-* # OpenAI API key, starting with sk- REDPILL_API_KEY= # REDPILL API Key GROQ_API_KEY=gsk_* +OPENROUTER_API_KEY= ELEVENLABS_XI_API_KEY= # API key from elevenlabs @@ -27,6 +28,13 @@ X_SERVER_URL= XAI_API_KEY= XAI_MODEL= +#OpenRouter (Use one model for everything or set individual for small, medium, large tasks) +#leave blank to use defaults hermes 70b for small tasks & 405b for medium/large tasks +OPENROUTER_MODEL= +SMALL_OPENROUTER_MODEL= +MEDIUM_OLLAMA_MODEL= +LARGE_OLLAMA_MODEL= + #Set to Use for New OLLAMA provider OLLAMA_SERVER_URL= #Leave blank for default localhost:11434 diff --git a/packages/agent/src/index.ts b/packages/agent/src/index.ts index 5737448fb39..0c2a8e36bc7 100644 --- a/packages/agent/src/index.ts +++ b/packages/agent/src/index.ts @@ -128,6 +128,11 @@ export function getTokenForProvider( character.settings?.secrets?.REDPILL_API_KEY || settings.REDPILL_API_KEY ); + case ModelProviderName.OPENROUTER: + return ( + character.settings?.secrets?.OPENROUTER || + settings.OPENROUTER_API_KEY + ); } } diff --git a/packages/core/src/generation.ts b/packages/core/src/generation.ts index 388973d1b16..f6cdbf72273 100644 --- a/packages/core/src/generation.ts +++ b/packages/core/src/generation.ts @@ -214,6 +214,31 @@ export async function generateText({ break; } + + case ModelProviderName.OPENROUTER: { + elizaLogger.log("Initializing OpenRouter model."); + const serverUrl = models[provider].endpoint; + const openrouter = createOpenAI({ apiKey, baseURL: serverUrl }); + + const { text: openrouterResponse } = await aiGenerateText({ + model: openrouter.languageModel(model), + prompt: context, + temperature: temperature, + system: + runtime.character.system ?? + settings.SYSTEM_PROMPT ?? + undefined, + maxTokens: max_response_length, + frequencyPenalty: frequency_penalty, + presencePenalty: presence_penalty, + }); + + response = openrouterResponse; + elizaLogger.log("Received response from OpenRouter model."); + break; + } + + case ModelProviderName.OLLAMA: { console.log("Initializing Ollama model."); diff --git a/packages/core/src/models.ts b/packages/core/src/models.ts index 17c6f35589c..4617bb5a3cd 100644 --- a/packages/core/src/models.ts +++ b/packages/core/src/models.ts @@ -162,6 +162,25 @@ const models: Models = { [ModelClass.EMBEDDING]: "text-embedding-3-small", }, }, + [ModelProviderName.OPENROUTER]: { + endpoint: "https://openrouter.ai/api/v1", + settings: { + stop: [], + maxInputTokens: 128000, + maxOutputTokens: 8192, + frequency_penalty: 0.0, + presence_penalty: 0.0, + temperature: 0.6, + }, + // Available models: https://docs.red-pill.ai/get-started/supported-models + // To test other models, change the models below + model: { + [ModelClass.SMALL]: "nousresearch/hermes-3-llama-3.1-70b", + [ModelClass.MEDIUM]: "nousresearch/hermes-3-llama-3.1-405b", + [ModelClass.LARGE]: "nousresearch/hermes-3-llama-3.1-405b", + [ModelClass.EMBEDDING]: "text-embedding-3-small", + }, + }, [ModelProviderName.OLLAMA]: { settings: { stop: [], diff --git a/packages/core/src/types.ts b/packages/core/src/types.ts index 28ee98d4159..4fa54fcb90e 100644 --- a/packages/core/src/types.ts +++ b/packages/core/src/types.ts @@ -112,6 +112,7 @@ export type Models = { [ModelProviderName.GOOGLE]: Model; [ModelProviderName.CLAUDE_VERTEX]: Model; [ModelProviderName.REDPILL]: Model; + [ModelProviderName.OPENROUTER]: Model; [ModelProviderName.OLLAMA]: Model; }; @@ -125,6 +126,7 @@ export enum ModelProviderName { GOOGLE = "google", CLAUDE_VERTEX = "claude_vertex", REDPILL = "redpill", + OPENROUTER = "openrouter", OLLAMA = "ollama", } From 1fc9c3e85c2df859601c114198839a401671f3ed Mon Sep 17 00:00:00 2001 From: Ophiuchus Date: Sat, 9 Nov 2024 04:28:28 -0600 Subject: [PATCH 2/4] OpenRouter corrected model defaults --- packages/core/src/models.ts | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/packages/core/src/models.ts b/packages/core/src/models.ts index 4617bb5a3cd..764e0d25c62 100644 --- a/packages/core/src/models.ts +++ b/packages/core/src/models.ts @@ -175,10 +175,20 @@ const models: Models = { // Available models: https://docs.red-pill.ai/get-started/supported-models // To test other models, change the models below model: { - [ModelClass.SMALL]: "nousresearch/hermes-3-llama-3.1-70b", - [ModelClass.MEDIUM]: "nousresearch/hermes-3-llama-3.1-405b", - [ModelClass.LARGE]: "nousresearch/hermes-3-llama-3.1-405b", - [ModelClass.EMBEDDING]: "text-embedding-3-small", + [ModelClass.SMALL]: + settings.SMALL_OPENROUTER_MODEL || + settings.OPENROUTER_MODEL || + "nousresearch/hermes-3-llama-3.1-70b", + [ModelClass.MEDIUM]: + settings.MEDIUM_OPENROUTER_MODEL || + settings.OPENROUTER_MODEL || + "nousresearch/hermes-3-llama-3.1-405b", + [ModelClass.LARGE]: + settings.LARGE_OPENROUTER_MODEL || + settings.OPENROUTER_MODEL || + "nousresearch/hermes-3-llama-3.1-405b", + [ModelClass.EMBEDDING]: + "text-embedding-3-small", }, }, [ModelProviderName.OLLAMA]: { From 1f80cbb7a91a9986cd490781be1328bf186cdab1 Mon Sep 17 00:00:00 2001 From: Ophiuchus Date: Sat, 9 Nov 2024 04:34:01 -0600 Subject: [PATCH 3/4] corrected link for available openrouter models --- packages/core/src/models.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/src/models.ts b/packages/core/src/models.ts index 764e0d25c62..4112c1b0d1f 100644 --- a/packages/core/src/models.ts +++ b/packages/core/src/models.ts @@ -172,7 +172,7 @@ const models: Models = { presence_penalty: 0.0, temperature: 0.6, }, - // Available models: https://docs.red-pill.ai/get-started/supported-models + // Available models: https://openrouter.ai/models // To test other models, change the models below model: { [ModelClass.SMALL]: From 2fb624c5a344557f8331f5b9b1131a0ba6def4b5 Mon Sep 17 00:00:00 2001 From: Ophiuchus Date: Sat, 9 Nov 2024 12:31:39 -0600 Subject: [PATCH 4/4] Added the BASE_MINT var needed on TrustScoreProvider --- .env.example | 1 + 1 file changed, 1 insertion(+) diff --git a/.env.example b/.env.example index 4b1e92cf2c9..444bf1a79a1 100644 --- a/.env.example +++ b/.env.example @@ -55,6 +55,7 @@ BIRDEYE_API_KEY= SOL_ADDRESS=So11111111111111111111111111111111111111112 SLIPPAGE=1 +BASE_MINT=So11111111111111111111111111111111111111112 RPC_URL=https://api.mainnet-beta.solana.com HELIUS_API_KEY=