@elizaos/plugin-openrouter 1.5.17 → 2.0.0-alpha.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/LICENSE +1 -1
- package/dist/browser/index.browser.js +319 -919
- package/dist/browser/index.browser.js.map +13 -15
- package/dist/cjs/index.node.cjs +320 -554
- package/dist/cjs/index.node.cjs.map +19 -0
- package/dist/index.d.ts +4 -6
- package/dist/node/index.node.js +319 -564
- package/dist/node/index.node.js.map +13 -14
- package/package.json +39 -22
- package/README.md +0 -122
- package/dist/cjs/index.node.js.map +0 -20
- package/dist/index.browser.d.ts +0 -2
- package/dist/index.node.d.ts +0 -2
- package/dist/init.d.ts +0 -6
- package/dist/models/embedding.d.ts +0 -5
- package/dist/models/image.d.ts +0 -14
- package/dist/models/index.d.ts +0 -4
- package/dist/models/object.d.ts +0 -9
- package/dist/models/text.d.ts +0 -17
- package/dist/providers/index.d.ts +0 -1
- package/dist/providers/openrouter.d.ts +0 -8
- package/dist/types/index.d.ts +0 -28
- package/dist/utils/config.d.ts +0 -64
- package/dist/utils/events.d.ts +0 -6
- package/dist/utils/helpers.d.ts +0 -21
- package/dist/utils/image-storage.d.ts +0 -8
- package/dist/utils/index.d.ts +0 -2
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
{
|
|
2
2
|
"version": 3,
|
|
3
|
-
"sources": ["../../
|
|
3
|
+
"sources": ["../../plugin.ts", "../../init.ts", "../../utils/config.ts", "../../models/embedding.ts", "../../utils/events.ts", "../../models/image.ts", "../../providers/openrouter.ts", "../../models/object.ts", "../../utils/helpers.ts", "../../models/text.ts"],
|
|
4
4
|
"sourcesContent": [
|
|
5
|
-
"import {\n
|
|
6
|
-
"import {
|
|
7
|
-
"import type { IAgentRuntime } from
|
|
8
|
-
"import type {
|
|
9
|
-
"import {
|
|
10
|
-
"import
|
|
11
|
-
"import
|
|
12
|
-
"import {
|
|
13
|
-
"import {
|
|
14
|
-
"import {
|
|
15
|
-
"import type { IAgentRuntime, TextEmbeddingParams } from '@elizaos/core';\nimport { logger, ModelType, VECTOR_DIMS } from '@elizaos/core';\nimport { getSetting, getBaseURL, getApiKey, getEmbeddingModel } from '../utils/config';\nimport { emitModelUsageEvent } from '../utils/events';\n\n/**\n * TEXT_EMBEDDING model handler for OpenRouter\n */\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModelName = getEmbeddingModel(runtime);\n const embeddingDimension = Number.parseInt(\n getSetting(runtime, 'OPENROUTER_EMBEDDING_DIMENSIONS') ??\n getSetting(runtime, 'EMBEDDING_DIMENSIONS') ??\n '1536',\n 10\n ) as (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\n if (!Object.values(VECTOR_DIMS).includes(embeddingDimension)) {\n const errorMsg = `Invalid embedding dimension: ${embeddingDimension}. Must be one of: ${Object.values(VECTOR_DIMS).join(', ')}`;\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n if (params === null) {\n logger.debug('Creating test embedding for initialization');\n const testVector = Array(embeddingDimension).fill(0);\n testVector[0] = 0.1;\n return testVector;\n }\n\n let text: string;\n if (typeof params === 'string') {\n text = params;\n } else if (typeof params === 'object' && params.text) {\n text = params.text;\n } else {\n const errorMsg = 'Invalid input format for embedding';\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0);\n fallbackVector[0] = 0.2;\n return fallbackVector;\n }\n\n if (!text.trim()) {\n const errorMsg = 'Empty text for embedding';\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0);\n fallbackVector[0] = 0.3;\n return fallbackVector;\n }\n\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n const errorMsg = 'OPENROUTER_API_KEY is not set';\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n const baseURL = getBaseURL(runtime);\n\n try {\n const response = await fetch(`${baseURL}/embeddings`, {\n method: 'POST',\n headers: {\n Authorization: `Bearer ${apiKey}`,\n 'Content-Type': 'application/json',\n 'HTTP-Referer': getSetting(runtime, 'OPENROUTER_HTTP_REFERER') || '',\n 'X-Title': getSetting(runtime, 'OPENROUTER_X_TITLE') || 'ElizaOS',\n },\n body: JSON.stringify({\n model: embeddingModelName,\n input: text,\n }),\n });\n\n if (!response.ok) {\n logger.error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n throw new Error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n }\n\n const data = (await response.json()) as {\n data: [{ embedding: number[] }];\n usage?: { prompt_tokens: number; total_tokens: number };\n };\n\n if (!data?.data?.[0]?.embedding) {\n logger.error('API returned invalid structure');\n throw new Error('API returned invalid structure');\n }\n\n const embedding = data.data[0].embedding;\n\n if (!Array.isArray(embedding) || embedding.length !== embeddingDimension) {\n const errorMsg = `Embedding length ${embedding?.length ?? 0} does not match configured dimension ${embeddingDimension}`;\n logger.error(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0);\n fallbackVector[0] = 0.4;\n return fallbackVector;\n }\n\n if (data.usage) {\n const usage = {\n inputTokens: data.usage.prompt_tokens,\n outputTokens: 0,\n totalTokens: data.usage.total_tokens,\n };\n\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, text, usage);\n }\n\n logger.log(`Got valid embedding with length ${embedding.length}`);\n return embedding;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating embedding: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n"
|
|
5
|
+
"import {\n type GenerateTextParams,\n type IAgentRuntime,\n type ImageDescriptionParams,\n type ImageGenerationParams,\n type JsonValue,\n logger,\n ModelType,\n type ObjectGenerationParams,\n type Plugin,\n type TextEmbeddingParams,\n} from \"@elizaos/core\";\n\nimport { initializeOpenRouter } from \"./init\";\nimport { handleTextEmbedding } from \"./models/embedding\";\nimport { handleImageDescription, handleImageGeneration } from \"./models/image\";\nimport { handleObjectLarge, handleObjectSmall } from \"./models/object\";\nimport { handleTextLarge, handleTextSmall } from \"./models/text\";\n\ntype ProcessEnvLike = Record<string, string | undefined>;\n\nfunction getProcessEnv(): ProcessEnvLike {\n if (typeof process === \"undefined\" || !process.env) {\n return {};\n }\n return process.env as ProcessEnvLike;\n}\n\nconst env = getProcessEnv();\n\nexport const openrouterPlugin: Plugin = {\n name: \"openrouter\",\n description: \"OpenRouter multi-model AI gateway plugin\",\n\n config: {\n OPENROUTER_API_KEY: env.OPENROUTER_API_KEY ?? null,\n OPENROUTER_BASE_URL: env.OPENROUTER_BASE_URL ?? null,\n OPENROUTER_SMALL_MODEL: env.OPENROUTER_SMALL_MODEL ?? null,\n OPENROUTER_LARGE_MODEL: env.OPENROUTER_LARGE_MODEL ?? null,\n OPENROUTER_IMAGE_MODEL: env.OPENROUTER_IMAGE_MODEL ?? null,\n OPENROUTER_IMAGE_GENERATION_MODEL: env.OPENROUTER_IMAGE_GENERATION_MODEL ?? null,\n OPENROUTER_EMBEDDING_MODEL: env.OPENROUTER_EMBEDDING_MODEL ?? null,\n OPENROUTER_EMBEDDING_DIMENSIONS: env.OPENROUTER_EMBEDDING_DIMENSIONS ?? null,\n OPENROUTER_AUTO_CLEANUP_IMAGES: env.OPENROUTER_AUTO_CLEANUP_IMAGES ?? null,\n SMALL_MODEL: env.SMALL_MODEL ?? null,\n LARGE_MODEL: env.LARGE_MODEL ?? null,\n IMAGE_MODEL: env.IMAGE_MODEL ?? null,\n IMAGE_GENERATION_MODEL: env.IMAGE_GENERATION_MODEL ?? null,\n EMBEDDING_MODEL: env.EMBEDDING_MODEL ?? null,\n EMBEDDING_DIMENSIONS: env.EMBEDDING_DIMENSIONS ?? null,\n },\n\n async init(config: Record<string, unknown>, runtime: IAgentRuntime) {\n initializeOpenRouter(config, runtime);\n },\n\n models: {\n [ModelType.TEXT_SMALL]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextSmall(runtime, params);\n },\n\n [ModelType.TEXT_LARGE]: async (runtime: IAgentRuntime, params: GenerateTextParams) => {\n return handleTextLarge(runtime, params);\n },\n\n [ModelType.OBJECT_SMALL]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, JsonValue>> => {\n return handleObjectSmall(runtime, params);\n },\n\n [ModelType.OBJECT_LARGE]: async (\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n ): Promise<Record<string, JsonValue>> => {\n return handleObjectLarge(runtime, params);\n },\n\n [ModelType.IMAGE_DESCRIPTION]: async (\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n ) => {\n const description = await handleImageDescription(runtime, params);\n return { title: \"\", description };\n },\n\n [ModelType.IMAGE]: async (runtime: IAgentRuntime, params: ImageGenerationParams) => {\n const result = await handleImageGeneration(runtime, params);\n return [{ url: result.imageUrl }];\n },\n\n [ModelType.TEXT_EMBEDDING]: async (\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n ) => {\n return handleTextEmbedding(runtime, params);\n },\n },\n\n tests: [\n {\n name: \"openrouter_plugin_tests\",\n tests: [\n {\n name: \"openrouter_test_text_small\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_SMALL, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_small\");\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_small: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"openrouter_test_text_large\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const text = await runtime.useModel(ModelType.TEXT_LARGE, {\n prompt: \"What is the nature of reality in 10 words?\",\n });\n if (text.length === 0) {\n throw new Error(\"Failed to generate text\");\n }\n logger.log({ text }, \"generated with test_text_large\");\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_large: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"openrouter_test_object_small\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const result = await runtime.useModel(ModelType.OBJECT_SMALL, {\n prompt: \"Create a simple JSON object with a message field saying hello\",\n schema: { type: \"object\" },\n });\n logger.log({ result }, \"Generated object with test_object_small\");\n if (!result || (typeof result === \"object\" && \"error\" in result)) {\n throw new Error(\"Failed to generate object\");\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_object_small: ${message}`);\n throw error;\n }\n },\n },\n {\n name: \"openrouter_test_text_embedding\",\n fn: async (runtime: IAgentRuntime) => {\n try {\n const embedding = await runtime.useModel(ModelType.TEXT_EMBEDDING, {\n text: \"Hello, world!\",\n });\n logger.log({ embedding }, \"embedding\");\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error in test_text_embedding: ${message}`);\n throw error;\n }\n },\n },\n ],\n },\n ],\n};\n",
|
|
6
|
+
"import { type IAgentRuntime, logger } from \"@elizaos/core\";\nimport { getApiKey, getBaseURL } from \"./utils/config\";\n\n(globalThis as Record<string, unknown>).AI_SDK_LOG_WARNINGS ??= false;\n\nexport function initializeOpenRouter(\n _config: Record<string, unknown>,\n runtime: IAgentRuntime\n): void {\n (async () => {\n try {\n const isBrowser =\n typeof globalThis !== \"undefined\" && (globalThis as Record<string, unknown>).document;\n if (isBrowser) {\n return;\n }\n\n if (!getApiKey(runtime)) {\n logger.warn(\n \"OPENROUTER_API_KEY is not set in environment - OpenRouter functionality will be limited\"\n );\n return;\n }\n\n const baseURL = getBaseURL(runtime);\n const response = await fetch(`${baseURL}/models`, {\n headers: { Authorization: `Bearer ${getApiKey(runtime)}` },\n });\n\n if (!response.ok) {\n logger.warn(`OpenRouter API key validation failed: ${response.statusText}`);\n } else {\n logger.log(\"OpenRouter API key validated successfully\");\n }\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.warn(`Error validating OpenRouter API key: ${message}`);\n }\n })();\n}\n",
|
|
7
|
+
"import type { IAgentRuntime } from \"@elizaos/core\";\n\nexport const DEFAULT_BASE_URL = \"https://openrouter.ai/api/v1\";\nexport const DEFAULT_SMALL_MODEL = \"google/gemini-2.0-flash-001\";\nexport const DEFAULT_LARGE_MODEL = \"google/gemini-2.5-flash\";\nexport const DEFAULT_IMAGE_MODEL = \"x-ai/grok-2-vision-1212\";\nexport const DEFAULT_IMAGE_GENERATION_MODEL = \"google/gemini-2.5-flash-image-preview\";\nexport const DEFAULT_EMBEDDING_MODEL = \"openai/text-embedding-3-small\";\nexport const DEFAULT_EMBEDDING_DIMENSIONS = 1536;\n\nfunction getEnvValue(key: string): string | undefined {\n if (typeof process === \"undefined\" || !process.env) {\n return undefined;\n }\n const value = process.env[key];\n return value === undefined ? undefined : String(value);\n}\n\nexport function getSetting(\n runtime: IAgentRuntime,\n key: string,\n defaultValue?: string\n): string | undefined {\n const value = runtime.getSetting(key);\n if (value !== undefined && value !== null) {\n return String(value);\n }\n return getEnvValue(key) ?? defaultValue;\n}\n\nexport function getBaseURL(runtime: IAgentRuntime): string {\n const browserURL = getSetting(runtime, \"OPENROUTER_BROWSER_BASE_URL\");\n if (\n typeof globalThis !== \"undefined\" &&\n (globalThis as Record<string, unknown>).document &&\n browserURL\n ) {\n return browserURL;\n }\n return getSetting(runtime, \"OPENROUTER_BASE_URL\", DEFAULT_BASE_URL) || DEFAULT_BASE_URL;\n}\n\nexport function getApiKey(runtime: IAgentRuntime): string | undefined {\n return getSetting(runtime, \"OPENROUTER_API_KEY\");\n}\n\nexport function getSmallModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_SMALL_MODEL\") ??\n getSetting(runtime, \"SMALL_MODEL\", DEFAULT_SMALL_MODEL) ??\n DEFAULT_SMALL_MODEL\n );\n}\n\nexport function getLargeModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_LARGE_MODEL\") ??\n getSetting(runtime, \"LARGE_MODEL\", DEFAULT_LARGE_MODEL) ??\n DEFAULT_LARGE_MODEL\n );\n}\n\nexport function getImageModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_IMAGE_MODEL\") ??\n getSetting(runtime, \"IMAGE_MODEL\", DEFAULT_IMAGE_MODEL) ??\n DEFAULT_IMAGE_MODEL\n );\n}\n\nexport function getImageGenerationModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_IMAGE_GENERATION_MODEL\") ??\n getSetting(runtime, \"IMAGE_GENERATION_MODEL\", DEFAULT_IMAGE_GENERATION_MODEL) ??\n DEFAULT_IMAGE_GENERATION_MODEL\n );\n}\n\nexport function getEmbeddingModel(runtime: IAgentRuntime): string {\n return (\n getSetting(runtime, \"OPENROUTER_EMBEDDING_MODEL\") ??\n getSetting(runtime, \"EMBEDDING_MODEL\", DEFAULT_EMBEDDING_MODEL) ??\n DEFAULT_EMBEDDING_MODEL\n );\n}\n\nexport function getEmbeddingDimensions(runtime: IAgentRuntime): number {\n const setting =\n getSetting(runtime, \"OPENROUTER_EMBEDDING_DIMENSIONS\") ??\n getSetting(runtime, \"EMBEDDING_DIMENSIONS\");\n return setting ? parseInt(setting, 10) : DEFAULT_EMBEDDING_DIMENSIONS;\n}\n\nexport function shouldAutoCleanupImages(runtime: IAgentRuntime): boolean {\n const setting = getSetting(runtime, \"OPENROUTER_AUTO_CLEANUP_IMAGES\", \"false\");\n return setting?.toLowerCase() === \"true\";\n}\n",
|
|
8
|
+
"import type { IAgentRuntime, TextEmbeddingParams } from \"@elizaos/core\";\nimport { logger, ModelType, VECTOR_DIMS } from \"@elizaos/core\";\n\nimport { getApiKey, getBaseURL, getEmbeddingModel, getSetting } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nexport async function handleTextEmbedding(\n runtime: IAgentRuntime,\n params: TextEmbeddingParams | string | null\n): Promise<number[]> {\n const embeddingModelName = getEmbeddingModel(runtime);\n const embeddingDimension = Number.parseInt(\n getSetting(runtime, \"OPENROUTER_EMBEDDING_DIMENSIONS\") ??\n getSetting(runtime, \"EMBEDDING_DIMENSIONS\") ??\n \"1536\",\n 10\n ) as (typeof VECTOR_DIMS)[keyof typeof VECTOR_DIMS];\n\n if (!Object.values(VECTOR_DIMS).includes(embeddingDimension)) {\n const errorMsg = `Invalid embedding dimension: ${embeddingDimension}. Must be one of: ${Object.values(VECTOR_DIMS).join(\", \")}`;\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n if (params === null) {\n const testVector = Array(embeddingDimension).fill(0) as number[];\n testVector[0] = 0.1;\n return testVector;\n }\n\n let text: string;\n if (typeof params === \"string\") {\n text = params;\n } else if (typeof params === \"object\" && params.text) {\n text = params.text;\n } else {\n const errorMsg = \"Invalid input format for embedding\";\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0) as number[];\n fallbackVector[0] = 0.2;\n return fallbackVector;\n }\n\n if (!text.trim()) {\n const errorMsg = \"Empty text for embedding\";\n logger.warn(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0) as number[];\n fallbackVector[0] = 0.3;\n return fallbackVector;\n }\n\n const apiKey = getApiKey(runtime);\n if (!apiKey) {\n const errorMsg = \"OPENROUTER_API_KEY is not set\";\n logger.error(errorMsg);\n throw new Error(errorMsg);\n }\n\n const baseURL = getBaseURL(runtime);\n\n try {\n const response = await fetch(`${baseURL}/embeddings`, {\n method: \"POST\",\n headers: {\n Authorization: `Bearer ${apiKey}`,\n \"Content-Type\": \"application/json\",\n \"HTTP-Referer\": getSetting(runtime, \"OPENROUTER_HTTP_REFERER\") || \"\",\n \"X-Title\": getSetting(runtime, \"OPENROUTER_X_TITLE\") || \"ElizaOS\",\n },\n body: JSON.stringify({\n model: embeddingModelName,\n input: text,\n }),\n });\n\n if (!response.ok) {\n logger.error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n throw new Error(`OpenRouter API error: ${response.status} - ${response.statusText}`);\n }\n\n const data = (await response.json()) as {\n data: [{ embedding: number[] }];\n usage?: { prompt_tokens: number; total_tokens: number };\n };\n\n if (!data?.data?.[0]?.embedding) {\n logger.error(\"API returned invalid structure\");\n throw new Error(\"API returned invalid structure\");\n }\n\n const embedding = data.data[0].embedding;\n\n if (!Array.isArray(embedding) || embedding.length !== embeddingDimension) {\n const errorMsg = `Embedding length ${embedding?.length ?? 0} does not match configured dimension ${embeddingDimension}`;\n logger.error(errorMsg);\n const fallbackVector = Array(embeddingDimension).fill(0) as number[];\n fallbackVector[0] = 0.4;\n return fallbackVector;\n }\n\n if (data.usage) {\n const usage = {\n inputTokens: data.usage.prompt_tokens,\n outputTokens: 0,\n totalTokens: data.usage.total_tokens,\n };\n\n emitModelUsageEvent(runtime, ModelType.TEXT_EMBEDDING, text, usage);\n }\n\n return embedding;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating embedding: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n",
|
|
9
|
+
"import type { IAgentRuntime, ModelType } from \"@elizaos/core\";\nimport { logger } from \"@elizaos/core\";\n\ninterface AIUsage {\n inputTokens?: number;\n outputTokens?: number;\n promptTokens?: number;\n completionTokens?: number;\n totalTokens?: number;\n}\n\nexport function emitModelUsageEvent(\n _runtime: IAgentRuntime,\n modelType: (typeof ModelType)[keyof typeof ModelType],\n prompt: string,\n usage: AIUsage\n): void {\n const inputTokens = usage.inputTokens ?? usage.promptTokens ?? 0;\n const outputTokens = usage.outputTokens ?? usage.completionTokens ?? 0;\n const totalTokens = usage.totalTokens ?? inputTokens + outputTokens;\n\n logger.debug({\n event: \"model:usage\",\n modelType,\n provider: \"openrouter\",\n prompt: prompt.substring(0, 100),\n usage: {\n promptTokens: inputTokens,\n completionTokens: outputTokens,\n totalTokens,\n },\n timestamp: Date.now(),\n });\n}\n",
|
|
10
|
+
"import type { IAgentRuntime, ImageDescriptionParams, ImageGenerationParams } from \"@elizaos/core\";\nimport { logger, ModelType } from \"@elizaos/core\";\nimport { generateText, type LanguageModel } from \"ai\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getImageGenerationModel, getImageModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nexport async function handleImageDescription(\n runtime: IAgentRuntime,\n params: ImageDescriptionParams | string\n): Promise<string> {\n const openrouter = createOpenRouterProvider(runtime);\n const modelName = getImageModel(runtime);\n\n const imageUrl = typeof params === \"string\" ? params : params.imageUrl;\n const prompt =\n typeof params === \"string\" ? \"Describe this image\" : params.prompt || \"Describe this image\";\n\n try {\n const generateParams = {\n model: openrouter.chat(modelName) as LanguageModel,\n messages: [\n {\n role: \"user\" as const,\n content: [\n { type: \"text\" as const, text: prompt },\n { type: \"image\" as const, image: imageUrl },\n ],\n },\n ],\n };\n\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, ModelType.IMAGE_DESCRIPTION, prompt, response.usage);\n }\n\n return response.text;\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error describing image: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n\nexport async function handleImageGeneration(\n runtime: IAgentRuntime,\n params: ImageGenerationParams\n): Promise<{ imageUrl: string; caption?: string }> {\n const openrouter = createOpenRouterProvider(runtime);\n const modelName = getImageGenerationModel(runtime);\n\n try {\n const generateParams = {\n model: openrouter.chat(modelName) as LanguageModel,\n prompt: `Generate an image: ${params.prompt}`,\n };\n\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, ModelType.IMAGE, params.prompt, response.usage);\n }\n\n return {\n imageUrl: response.text,\n caption: params.prompt,\n };\n } catch (error: unknown) {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating image: ${message}`);\n throw error instanceof Error ? error : new Error(message);\n }\n}\n",
|
|
11
|
+
"import type { IAgentRuntime } from \"@elizaos/core\";\nimport { createOpenRouter } from \"@openrouter/ai-sdk-provider\";\nimport { getApiKey, getBaseURL } from \"../utils/config\";\n\nexport function createOpenRouterProvider(runtime: IAgentRuntime) {\n const apiKey = getApiKey(runtime);\n const isBrowser =\n typeof globalThis !== \"undefined\" && (globalThis as Record<string, unknown>).document;\n const baseURL = getBaseURL(runtime);\n\n return createOpenRouter({\n apiKey: isBrowser ? undefined : apiKey,\n baseURL,\n });\n}\n",
|
|
12
|
+
"import {\n type IAgentRuntime,\n type JsonValue,\n ModelType,\n type ObjectGenerationParams,\n} from \"@elizaos/core\";\nimport { generateObject, jsonSchema } from \"ai\";\nimport type { JSONSchema7 } from \"json-schema\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\nimport { handleObjectGenerationError } from \"../utils/helpers\";\n\nasync function generateObjectWithModel(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.OBJECT_SMALL | typeof ModelType.OBJECT_LARGE,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n const openrouter = createOpenRouterProvider(runtime);\n const modelName =\n modelType === ModelType.OBJECT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);\n\n const temperature = params.temperature ?? 0.7;\n\n try {\n const generateParams = {\n model: openrouter.chat(modelName),\n ...(params.schema && {\n schema: jsonSchema(params.schema as JSONSchema7),\n }),\n output: params.schema ? \"object\" : \"no-schema\",\n prompt: params.prompt,\n temperature: temperature,\n };\n\n // @ts-expect-error - AI SDK type compatibility issue with OpenRouter provider\n const { object, usage } = await generateObject(generateParams);\n\n if (usage) {\n emitModelUsageEvent(runtime, modelType, params.prompt, usage);\n }\n return object as Record<string, JsonValue>;\n } catch (error: unknown) {\n return handleObjectGenerationError(error);\n }\n}\n\nexport async function handleObjectSmall(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectWithModel(runtime, ModelType.OBJECT_SMALL, params);\n}\n\nexport async function handleObjectLarge(\n runtime: IAgentRuntime,\n params: ObjectGenerationParams\n): Promise<Record<string, JsonValue>> {\n return generateObjectWithModel(runtime, ModelType.OBJECT_LARGE, params);\n}\n",
|
|
13
|
+
"import { type JsonValue, logger } from \"@elizaos/core\";\n\nexport function getJsonRepairFunction(): ((text: string) => string) | undefined {\n try {\n const { jsonrepair } = require(\"jsonrepair\");\n return jsonrepair;\n } catch {\n return undefined;\n }\n}\n\nexport function handleObjectGenerationError(error: unknown): Record<string, JsonValue> {\n const message = error instanceof Error ? error.message : String(error);\n logger.error(`Error generating object: ${message}`);\n return { error: message };\n}\n\nexport function extractJsonFromText(text: string): Record<string, JsonValue> {\n try {\n return JSON.parse(text) as Record<string, JsonValue>;\n } catch {}\n\n const jsonBlockMatch = text.match(/```json\\s*([\\s\\S]*?)\\s*```/);\n if (jsonBlockMatch?.[1]) {\n try {\n return JSON.parse(jsonBlockMatch[1].trim()) as Record<string, JsonValue>;\n } catch {}\n }\n\n const codeBlockMatch = text.match(/```\\w*\\s*([\\s\\S]*?)\\s*```/);\n if (codeBlockMatch?.[1]) {\n const content = codeBlockMatch[1].trim();\n if (content.startsWith(\"{\") && content.endsWith(\"}\")) {\n try {\n return JSON.parse(content) as Record<string, JsonValue>;\n } catch {}\n }\n }\n\n const jsonMatch = text.match(/\\{[\\s\\S]*\\}/);\n if (jsonMatch?.[0]) {\n try {\n return JSON.parse(jsonMatch[0]) as Record<string, JsonValue>;\n } catch {}\n }\n\n return {};\n}\n",
|
|
14
|
+
"import type { GenerateTextParams, IAgentRuntime, JsonValue, TextStreamResult } from \"@elizaos/core\";\nimport { ModelType } from \"@elizaos/core\";\nimport { generateText, streamText } from \"ai\";\n\nimport { createOpenRouterProvider } from \"../providers\";\nimport { getLargeModel, getSmallModel } from \"../utils/config\";\nimport { emitModelUsageEvent } from \"../utils/events\";\n\nfunction buildGenerateParams(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n params: GenerateTextParams\n) {\n const { prompt, stopSequences = [] } = params;\n const temperature = params.temperature ?? 0.7;\n const frequencyPenalty = params.frequencyPenalty ?? 0.7;\n const presencePenalty = params.presencePenalty ?? 0.7;\n const paramsWithMax = params as GenerateTextParams & {\n maxOutputTokens?: number;\n maxTokens?: number;\n };\n const resolvedMaxOutput = paramsWithMax.maxOutputTokens ?? paramsWithMax.maxTokens ?? 8192;\n\n const openrouter = createOpenRouterProvider(runtime);\n const modelName =\n modelType === ModelType.TEXT_SMALL ? getSmallModel(runtime) : getLargeModel(runtime);\n const modelLabel = modelType === ModelType.TEXT_SMALL ? \"TEXT_SMALL\" : \"TEXT_LARGE\";\n\n const generateParams = {\n model: openrouter.chat(modelName),\n prompt: prompt,\n system: runtime.character?.system ?? undefined,\n temperature: temperature,\n frequencyPenalty: frequencyPenalty,\n presencePenalty: presencePenalty,\n stopSequences: stopSequences,\n maxOutputTokens: resolvedMaxOutput,\n };\n\n return { generateParams, modelName, modelLabel, prompt };\n}\n\nfunction handleStreamingGeneration(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n generateParams: Record<string, JsonValue | object>,\n prompt: string,\n _modelLabel: string\n): TextStreamResult {\n // @ts-expect-error - AI SDK type compatibility issue with OpenRouter provider\n const streamResult = streamText(generateParams);\n\n return {\n textStream: streamResult.textStream,\n text: Promise.resolve(streamResult.text),\n usage: Promise.resolve(streamResult.usage).then((usage) => {\n if (usage) {\n emitModelUsageEvent(runtime, modelType, prompt, usage);\n const inputTokens = usage.inputTokens ?? 0;\n const outputTokens = usage.outputTokens ?? 0;\n return {\n promptTokens: inputTokens,\n completionTokens: outputTokens,\n totalTokens: inputTokens + outputTokens,\n };\n }\n return undefined;\n }),\n finishReason: Promise.resolve(streamResult.finishReason) as Promise<string | undefined>,\n };\n}\n\nasync function generateTextWithModel(\n runtime: IAgentRuntime,\n modelType: typeof ModelType.TEXT_SMALL | typeof ModelType.TEXT_LARGE,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n const {\n generateParams,\n modelName: _modelName,\n modelLabel,\n prompt,\n } = buildGenerateParams(runtime, modelType, params);\n\n if (params.stream) {\n return handleStreamingGeneration(runtime, modelType, generateParams, prompt, modelLabel);\n }\n\n // @ts-expect-error - AI SDK type compatibility issue with OpenRouter provider\n const response = await generateText(generateParams);\n\n if (response.usage) {\n emitModelUsageEvent(runtime, modelType, prompt, response.usage);\n }\n\n return response.text;\n}\n\nexport async function handleTextSmall(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, ModelType.TEXT_SMALL, params);\n}\n\nexport async function handleTextLarge(\n runtime: IAgentRuntime,\n params: GenerateTextParams\n): Promise<string | TextStreamResult> {\n return generateTextWithModel(runtime, ModelType.TEXT_LARGE, params);\n}\n"
|
|
16
15
|
],
|
|
17
|
-
"mappings": "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",
|
|
18
|
-
"debugId": "
|
|
16
|
+
"mappings": "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",
|
|
17
|
+
"debugId": "22E4EFC6A1BE14DB64756E2164756E21",
|
|
19
18
|
"names": []
|
|
20
19
|
}
|
package/package.json
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@elizaos/plugin-openrouter",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-alpha.2",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"main": "dist/
|
|
5
|
+
"main": "dist/node/index.node.js",
|
|
6
6
|
"module": "dist/node/index.node.js",
|
|
7
|
-
"types": "dist/
|
|
7
|
+
"types": "dist/index.d.ts",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|
|
10
10
|
"url": "git+https://github.com/elizaos-plugins/plugin-openrouter.git"
|
|
@@ -12,42 +12,58 @@
|
|
|
12
12
|
"exports": {
|
|
13
13
|
"./package.json": "./package.json",
|
|
14
14
|
".": {
|
|
15
|
-
"types": "./dist/
|
|
16
|
-
"
|
|
15
|
+
"types": "./dist/index.d.ts",
|
|
16
|
+
"browser": {
|
|
17
|
+
"types": "./dist/browser/index.d.ts",
|
|
18
|
+
"import": "./dist/browser/index.browser.js",
|
|
19
|
+
"default": "./dist/browser/index.browser.js"
|
|
20
|
+
},
|
|
21
|
+
"node": {
|
|
22
|
+
"types": "./dist/node/index.d.ts",
|
|
23
|
+
"import": "./dist/node/index.node.js",
|
|
24
|
+
"default": "./dist/node/index.node.js"
|
|
25
|
+
},
|
|
26
|
+
"bun": {
|
|
27
|
+
"types": "./dist/node/index.d.ts",
|
|
28
|
+
"default": "./dist/node/index.node.js"
|
|
29
|
+
},
|
|
17
30
|
"require": "./dist/cjs/index.node.cjs",
|
|
18
|
-
"browser": "./dist/browser/index.browser.js",
|
|
19
|
-
"node": "./dist/node/index.node.js",
|
|
20
31
|
"default": "./dist/node/index.node.js"
|
|
21
32
|
}
|
|
22
33
|
},
|
|
23
34
|
"files": [
|
|
24
35
|
"dist"
|
|
25
36
|
],
|
|
37
|
+
"sideEffects": false,
|
|
26
38
|
"dependencies": {
|
|
27
|
-
"@ai-sdk/openai": "^
|
|
28
|
-
"@ai-sdk/ui-utils": "1.2.
|
|
29
|
-
"@elizaos/core": "
|
|
39
|
+
"@ai-sdk/openai": "^3.0.9",
|
|
40
|
+
"@ai-sdk/ui-utils": "^1.2.8",
|
|
41
|
+
"@elizaos/core": "2.0.0-alpha.2",
|
|
30
42
|
"@openrouter/ai-sdk-provider": "^1.2.0",
|
|
31
|
-
"ai": "^
|
|
43
|
+
"ai": "^6.0.30",
|
|
32
44
|
"undici": "^7.16.0"
|
|
33
45
|
},
|
|
34
46
|
"devDependencies": {
|
|
35
|
-
"@
|
|
47
|
+
"@biomejs/biome": "^2.3.11",
|
|
48
|
+
"@types/bun": "^1.3.5",
|
|
36
49
|
"@types/json-schema": "^7.0.15",
|
|
37
|
-
"@types/node": "^
|
|
38
|
-
"dotenv": "^17.2.
|
|
39
|
-
"prettier": "3.6.2",
|
|
50
|
+
"@types/node": "^25.0.3",
|
|
51
|
+
"dotenv": "^17.2.3",
|
|
40
52
|
"typescript": "^5.9.3"
|
|
41
53
|
},
|
|
42
54
|
"scripts": {
|
|
43
|
-
"build": "bun run build.ts",
|
|
44
55
|
"dev": "bun --hot build.ts",
|
|
45
|
-
"lint": "
|
|
56
|
+
"lint": "bunx @biomejs/biome check --write --unsafe .",
|
|
46
57
|
"clean": "rm -rf dist .turbo node_modules .turbo-tsconfig.json tsconfig.tsbuildinfo",
|
|
47
|
-
"format": "
|
|
48
|
-
"format:check": "
|
|
49
|
-
"
|
|
50
|
-
"test
|
|
58
|
+
"format": "bunx @biomejs/biome format --write .",
|
|
59
|
+
"format:check": "bunx @biomejs/biome format .",
|
|
60
|
+
"typecheck": "tsc --noEmit -p tsconfig.json",
|
|
61
|
+
"test": "vitest run",
|
|
62
|
+
"test:unit": "vitest run __tests__/",
|
|
63
|
+
"test:watch": "vitest",
|
|
64
|
+
"lint:check": "bunx @biomejs/biome check .",
|
|
65
|
+
"build": "bun run build.ts",
|
|
66
|
+
"build:ts": "bun run build.ts"
|
|
51
67
|
},
|
|
52
68
|
"publishConfig": {
|
|
53
69
|
"access": "public"
|
|
@@ -172,5 +188,6 @@
|
|
|
172
188
|
"sensitive": false
|
|
173
189
|
}
|
|
174
190
|
}
|
|
175
|
-
}
|
|
191
|
+
},
|
|
192
|
+
"gitHead": "bc6cac8d36845d7cbde51a64307c6a57c16378ad"
|
|
176
193
|
}
|
package/README.md
DELETED
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
# @elizaos/plugin-openrouter
|
|
2
|
-
|
|
3
|
-
This plugin provides integration with various models available through the OpenRouter API via the ElizaOS platform.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
Add the plugin to your character configuration:
|
|
8
|
-
|
|
9
|
-
```json
|
|
10
|
-
"plugins": ["@elizaos/plugin-openrouter"]
|
|
11
|
-
```
|
|
12
|
-
|
|
13
|
-
## Configuration
|
|
14
|
-
|
|
15
|
-
The plugin requires the OpenRouter API key and can be configured via environment variables or character settings.
|
|
16
|
-
|
|
17
|
-
**Character Settings Example:**
|
|
18
|
-
|
|
19
|
-
```json
|
|
20
|
-
"settings": {
|
|
21
|
-
"OPENROUTER_API_KEY": "your_openrouter_api_key",
|
|
22
|
-
"OPENROUTER_BASE_URL": "https://openrouter.ai/api/v1", // Optional: Default is OpenRouter endpoint
|
|
23
|
-
"OPENROUTER_SMALL_MODEL": "google/gemini-flash", // Optional: Overrides default small model
|
|
24
|
-
"OPENROUTER_LARGE_MODEL": "google/gemini-pro", // Optional: Overrides default large model
|
|
25
|
-
"OPENROUTER_IMAGE_MODEL": "x-ai/grok-2-vision-1212", // Optional: Overrides default image model
|
|
26
|
-
"OPENROUTER_IMAGE_GENERATION_MODEL": "google/gemini-2.5-flash-image-preview", // Optional: Overrides default image generation model
|
|
27
|
-
"OPENROUTER_EMBEDDING_MODEL": "openai/text-embedding-3-small", // Optional: Overrides default embedding model
|
|
28
|
-
"OPENROUTER_EMBEDDING_DIMENSIONS": "1536", // Optional: Sets embedding vector dimensions (256, 384, 512, 768, 1024, 1536, 2048, 3072)
|
|
29
|
-
"OPENROUTER_BROWSER_BASE_URL": "https://your-proxy.example.com/openrouter"
|
|
30
|
-
// Fallbacks if specific OPENROUTER models are not set
|
|
31
|
-
"SMALL_MODEL": "google/gemini-flash",
|
|
32
|
-
"LARGE_MODEL": "google/gemini-pro",
|
|
33
|
-
"IMAGE_MODEL": "x-ai/grok-2-vision-1212",
|
|
34
|
-
"IMAGE_GENERATION_MODEL": "google/gemini-2.5-flash-image-preview",
|
|
35
|
-
"EMBEDDING_MODEL": "openai/text-embedding-3-small",
|
|
36
|
-
"EMBEDDING_DIMENSIONS": "1536"
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**`.env` File Example:**
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
OPENROUTER_API_KEY=your_openrouter_api_key
|
|
44
|
-
# Optional overrides:
|
|
45
|
-
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
|
|
46
|
-
OPENROUTER_SMALL_MODEL=google/gemini-flash
|
|
47
|
-
OPENROUTER_LARGE_MODEL=google/gemini-pro
|
|
48
|
-
OPENROUTER_IMAGE_MODEL=x-ai/grok-2-vision-1212
|
|
49
|
-
OPENROUTER_IMAGE_GENERATION_MODEL=google/gemini-2.5-flash-image-preview
|
|
50
|
-
OPENROUTER_EMBEDDING_MODEL=openai/text-embedding-3-small
|
|
51
|
-
OPENROUTER_EMBEDDING_DIMENSIONS=1536
|
|
52
|
-
# Browser proxy (frontend builds only)
|
|
53
|
-
OPENROUTER_BROWSER_BASE_URL=https://your-proxy.example.com/openrouter
|
|
54
|
-
# Fallbacks if specific OPENROUTER models are not set
|
|
55
|
-
SMALL_MODEL=google/gemini-flash
|
|
56
|
-
LARGE_MODEL=google/gemini-pro
|
|
57
|
-
IMAGE_MODEL=x-ai/grok-2-vision-1212
|
|
58
|
-
IMAGE_GENERATION_MODEL=google/gemini-2.5-flash-image-preview
|
|
59
|
-
EMBEDDING_MODEL=openai/text-embedding-3-small
|
|
60
|
-
EMBEDDING_DIMENSIONS=1536
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
### Configuration Options
|
|
64
|
-
|
|
65
|
-
- `OPENROUTER_API_KEY` (required): Your OpenRouter API key.
|
|
66
|
-
- `OPENROUTER_BASE_URL`: Custom API endpoint (default: https://openrouter.ai/api/v1).
|
|
67
|
-
- `OPENROUTER_BROWSER_BASE_URL`: Browser-only base URL to a proxy endpoint that forwards requests to OpenRouter without exposing keys.
|
|
68
|
-
### Browser mode and proxying
|
|
69
|
-
|
|
70
|
-
When bundled for the browser, this plugin avoids sending Authorization headers. Set `OPENROUTER_BROWSER_BASE_URL` to a server-side proxy you control that injects the OpenRouter API key. This prevents exposing secrets in frontend builds.
|
|
71
|
-
|
|
72
|
-
Example minimal proxy (Express):
|
|
73
|
-
|
|
74
|
-
```ts
|
|
75
|
-
import express from 'express';
|
|
76
|
-
import fetch from 'node-fetch';
|
|
77
|
-
|
|
78
|
-
const app = express();
|
|
79
|
-
app.use(express.json());
|
|
80
|
-
|
|
81
|
-
app.post('/openrouter/*', async (req, res) => {
|
|
82
|
-
const url = `https://openrouter.ai/api/v1/${req.params[0]}`;
|
|
83
|
-
const r = await fetch(url, {
|
|
84
|
-
method: 'POST',
|
|
85
|
-
headers: {
|
|
86
|
-
'Authorization': `Bearer ${process.env.OPENROUTER_API_KEY}`,
|
|
87
|
-
'Content-Type': 'application/json',
|
|
88
|
-
},
|
|
89
|
-
body: JSON.stringify(req.body),
|
|
90
|
-
});
|
|
91
|
-
res.status(r.status).set(Object.fromEntries(r.headers)).send(await r.text());
|
|
92
|
-
});
|
|
93
|
-
|
|
94
|
-
app.listen(3000);
|
|
95
|
-
```
|
|
96
|
-
- `OPENROUTER_SMALL_MODEL`: Specific model to use for `TEXT_SMALL` and `OBJECT_SMALL`. Overrides `SMALL_MODEL` if set.
|
|
97
|
-
- `OPENROUTER_LARGE_MODEL`: Specific model to use for `TEXT_LARGE` and `OBJECT_LARGE`. Overrides `LARGE_MODEL` if set.
|
|
98
|
-
- `OPENROUTER_IMAGE_MODEL`: Specific model to use for `IMAGE_DESCRIPTION`. Overrides `IMAGE_MODEL` if set.
|
|
99
|
-
- `OPENROUTER_IMAGE_GENERATION_MODEL`: Specific model to use for `IMAGE` generation. Overrides `IMAGE_GENERATION_MODEL` if set.
|
|
100
|
-
- `OPENROUTER_EMBEDDING_MODEL`: Specific model to use for `TEXT_EMBEDDING`. Overrides `EMBEDDING_MODEL` if set.
|
|
101
|
-
- `OPENROUTER_EMBEDDING_DIMENSIONS`: Number of dimensions for embedding vectors. Supported values: 256, 384, 512, 768, 1024, 1536, 2048, 3072. Defaults to 1536.
|
|
102
|
-
- `OPENROUTER_AUTO_CLEANUP_IMAGES`: Whether to automatically delete generated images after 30 seconds (default: "false"). Set to "true" to enable auto-cleanup.
|
|
103
|
-
- `SMALL_MODEL`: Fallback model for small tasks (default: "google/gemini-2.0-flash-001"). Used if `OPENROUTER_SMALL_MODEL` is not set.
|
|
104
|
-
- `LARGE_MODEL`: Fallback model for large tasks (default: "openai/gpt-4.1-nano"). Used if `OPENROUTER_LARGE_MODEL` is not set.
|
|
105
|
-
- `IMAGE_MODEL`: Fallback model for image analysis (default: "x-ai/grok-2-vision-1212"). Used if `OPENROUTER_IMAGE_MODEL` is not set.
|
|
106
|
-
- `IMAGE_GENERATION_MODEL`: Fallback model for image generation (default: "google/gemini-2.5-flash-image-preview"). Used if `OPENROUTER_IMAGE_GENERATION_MODEL` is not set.
|
|
107
|
-
- `EMBEDDING_MODEL`: Fallback model for text embeddings (default: "openai/text-embedding-3-small"). Used if `OPENROUTER_EMBEDDING_MODEL` is not set.
|
|
108
|
-
- `EMBEDDING_DIMENSIONS`: Fallback dimension setting for embeddings (default: "1536"). Used if `OPENROUTER_EMBEDDING_DIMENSIONS` is not set.
|
|
109
|
-
|
|
110
|
-
## Provided Models
|
|
111
|
-
|
|
112
|
-
The plugin currently provides these model types:
|
|
113
|
-
|
|
114
|
-
- `TEXT_SMALL`: Optimized for fast, cost-effective text generation using the configured small model.
|
|
115
|
-
- `TEXT_LARGE`: For more complex text generation tasks requiring larger models, using the configured large model.
|
|
116
|
-
- `OBJECT_SMALL`: Generates structured JSON objects based on a prompt, using the configured small model.
|
|
117
|
-
- `OBJECT_LARGE`: Generates structured JSON objects based on a prompt, using the configured large model.
|
|
118
|
-
- `IMAGE_DESCRIPTION`: Analyzes images and provides descriptive text and titles, using the configured image model.
|
|
119
|
-
- `IMAGE`: Generates images from text prompts using the configured image generation model (e.g., Gemini 2.5 Flash Image Preview).
|
|
120
|
-
- `TEXT_EMBEDDING`: Generates vector embeddings for text input, supporting configurable dimensions from 256 to 3072, using the configured embedding model.
|
|
121
|
-
|
|
122
|
-
_Note: Audio Transcription is not currently implemented in this specific OpenRouter plugin._
|