From 007de819285d150d5e7bb192c0d268576543b522 Mon Sep 17 00:00:00 2001 From: suyao Date: Sun, 29 Jun 2025 21:29:57 +0800 Subject: [PATCH] chore: update OpenRouter provider to version 0.7.2 and add support functions - Updated the OpenRouter provider dependency in `package.json` and `yarn.lock` to version 0.7.2. - Added a new function `createOpenRouterOptions` in `factory.ts` for creating OpenRouter provider options. - Updated type definitions in `types.ts` and `registry.ts` to include OpenRouter provider settings, enhancing provider management. --- packages/aiCore/package.json | 2 +- packages/aiCore/src/core/options/factory.ts | 7 +++ .../aiCore/src/core/options/openrouter.ts | 38 ++++++++++++++++ packages/aiCore/src/core/options/types.ts | 3 ++ .../aiCore/src/core/providers/registry.ts | 19 ++++---- yarn.lock | 43 ++++--------------- 6 files changed, 68 insertions(+), 44 deletions(-) create mode 100644 packages/aiCore/src/core/options/openrouter.ts diff --git a/packages/aiCore/package.json b/packages/aiCore/package.json index 74485846fd..baa8f00931 100644 --- a/packages/aiCore/package.json +++ b/packages/aiCore/package.json @@ -42,7 +42,7 @@ "@ai-sdk/togetherai": "^0.2.14", "@ai-sdk/vercel": "^0.0.1", "@ai-sdk/xai": "^1.2.16", - "@openrouter/ai-sdk-provider": "^0.1.0", + "@openrouter/ai-sdk-provider": "^0.7.2", "ai": "^4.3.16", "anthropic-vertex-ai": "^1.0.2", "ollama-ai-provider": "^1.2.0", diff --git a/packages/aiCore/src/core/options/factory.ts b/packages/aiCore/src/core/options/factory.ts index 46107e65f9..45eea32b98 100644 --- a/packages/aiCore/src/core/options/factory.ts +++ b/packages/aiCore/src/core/options/factory.ts @@ -55,3 +55,10 @@ export function createAnthropicOptions(options: ExtractProviderOptions<'anthropi export function createGoogleOptions(options: ExtractProviderOptions<'google'>) { return createProviderOptions('google', options) } + +/** + * 创建OpenRouter供应商选项的便捷函数 + */ +export function createOpenRouterOptions(options: ExtractProviderOptions<'openrouter'>) { + return createProviderOptions('openrouter', options) +} diff --git a/packages/aiCore/src/core/options/openrouter.ts b/packages/aiCore/src/core/options/openrouter.ts new file mode 100644 index 0000000000..b351f8fda1 --- /dev/null +++ b/packages/aiCore/src/core/options/openrouter.ts @@ -0,0 +1,38 @@ +export type OpenRouterProviderOptions = { + models?: string[] + + /** + * https://openrouter.ai/docs/use-cases/reasoning-tokens + * One of `max_tokens` or `effort` is required. + * If `exclude` is true, reasoning will be removed from the response. Default is false. + */ + reasoning?: { + exclude?: boolean + } & ( + | { + max_tokens: number + } + | { + effort: 'high' | 'medium' | 'low' + } + ) + + /** + * A unique identifier representing your end-user, which can + * help OpenRouter to monitor and detect abuse. + */ + user?: string + + extraBody?: Record + + /** + * Enable usage accounting to get detailed token usage information. + * https://openrouter.ai/docs/use-cases/usage-accounting + */ + usage?: { + /** + * When true, includes token usage information in the response. + */ + include: boolean + } +} diff --git a/packages/aiCore/src/core/options/types.ts b/packages/aiCore/src/core/options/types.ts index 567c2c18d6..b1770bdd87 100644 --- a/packages/aiCore/src/core/options/types.ts +++ b/packages/aiCore/src/core/options/types.ts @@ -3,6 +3,8 @@ import { type GoogleGenerativeAIProviderOptions } from '@ai-sdk/google' import { type OpenAIResponsesProviderOptions } from '@ai-sdk/openai' import { type LanguageModelV1ProviderMetadata } from '@ai-sdk/provider' +import { type OpenRouterProviderOptions } from './openrouter' + export type ProviderOptions = LanguageModelV1ProviderMetadata[T] /** @@ -12,6 +14,7 @@ export type ProviderOptionsMap = { openai: OpenAIResponsesProviderOptions anthropic: AnthropicProviderOptions google: GoogleGenerativeAIProviderOptions + openrouter: OpenRouterProviderOptions } // 工具类型,用于从ProviderOptionsMap中提取特定供应商的选项类型 diff --git a/packages/aiCore/src/core/providers/registry.ts b/packages/aiCore/src/core/providers/registry.ts index f4be68da22..9bcf87d863 100644 --- a/packages/aiCore/src/core/providers/registry.ts +++ b/packages/aiCore/src/core/providers/registry.ts @@ -24,7 +24,7 @@ import { type ReplicateProviderSettings } from '@ai-sdk/replicate' import { type TogetherAIProviderSettings } from '@ai-sdk/togetherai' import { type VercelProviderSettings } from '@ai-sdk/vercel' import { type XaiProviderSettings } from '@ai-sdk/xai' -// import { type OpenRouterProviderSettings } from '@openrouter/ai-sdk-provider' +import { type OpenRouterProviderSettings } from '@openrouter/ai-sdk-provider' import { type AnthropicVertexProviderSettings } from 'anthropic-vertex-ai' import { type OllamaProviderSettings } from 'ollama-ai-provider' import { type QwenProviderSettings } from 'qwen-ai-provider' @@ -34,6 +34,7 @@ import { type ZhipuProviderSettings } from 'zhipu-ai-provider' export type ProviderSettingsMap = { openai: OpenAIProviderSettings 'openai-compatible': OpenAICompatibleProviderSettings + openrouter: OpenRouterProviderSettings anthropic: AnthropicProviderSettings google: GoogleGenerativeAIProviderSettings 'google-vertex': GoogleVertexProviderSettings @@ -266,15 +267,14 @@ export class AiProviderRegistry { import: () => import('anthropic-vertex-ai'), creatorFunctionName: 'createAnthropicVertex', supportsImageGeneration: false + }, + { + id: 'openrouter', + name: 'OpenRouter', + import: () => import('@openrouter/ai-sdk-provider'), + creatorFunctionName: 'createOpenRouter', + supportsImageGeneration: false } - // bug太多 - // { - // id: 'openrouter', - // name: 'OpenRouter', - // import: () => import('@openrouter/ai-sdk-provider'), - // creatorFunctionName: 'createOpenRouter', - // supportsImageGeneration: false - // } ] providers.forEach((config) => { @@ -365,6 +365,7 @@ export type { OllamaProviderSettings, OpenAICompatibleProviderSettings, OpenAIProviderSettings, + OpenRouterProviderSettings, PerplexityProviderSettings, QwenProviderSettings, ReplicateProviderSettings, diff --git a/yarn.lock b/yarn.lock index 26bdcb5428..c5ac8018f5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -338,23 +338,6 @@ __metadata: languageName: node linkType: hard -"@ai-sdk/provider-utils@npm:2.1.5": - version: 2.1.5 - resolution: "@ai-sdk/provider-utils@npm:2.1.5" - dependencies: - "@ai-sdk/provider": "npm:1.0.6" - eventsource-parser: "npm:^3.0.0" - nanoid: "npm:^3.3.8" - secure-json-parse: "npm:^2.7.0" - peerDependencies: - zod: ^3.0.0 - peerDependenciesMeta: - zod: - optional: true - checksum: 10c0/6ec33c1f9cc6bb38a7634cdb1b43f49d78ddcb92a8daa4b65193f3309b5a7ad35b134e2d5e82b8576917079a3f8e3b83b5505151cd259ec747ba27458db58356 - languageName: node - linkType: hard - "@ai-sdk/provider-utils@npm:2.2.8, @ai-sdk/provider-utils@npm:^2.0.0, @ai-sdk/provider-utils@npm:^2.1.6": version: 2.2.8 resolution: "@ai-sdk/provider-utils@npm:2.2.8" @@ -377,15 +360,6 @@ __metadata: languageName: node linkType: hard -"@ai-sdk/provider@npm:1.0.6": - version: 1.0.6 - resolution: "@ai-sdk/provider@npm:1.0.6" - dependencies: - json-schema: "npm:^0.4.0" - checksum: 10c0/251c8cd4fa53b89dcf751d0faba5482762d88fcc5ffe1cdb660327c14817a4d94206317e95e6e69fc4ae3071001191b5c418b4b9e1212d6a554a90114db216fc - languageName: node - linkType: hard - "@ai-sdk/provider@npm:1.0.9": version: 1.0.9 resolution: "@ai-sdk/provider@npm:1.0.9" @@ -1012,7 +986,7 @@ __metadata: "@ai-sdk/togetherai": "npm:^0.2.14" "@ai-sdk/vercel": "npm:^0.0.1" "@ai-sdk/xai": "npm:^1.2.16" - "@openrouter/ai-sdk-provider": "npm:^0.1.0" + "@openrouter/ai-sdk-provider": "npm:^0.7.2" ai: "npm:^4.3.16" anthropic-vertex-ai: "npm:^1.0.2" ollama-ai-provider: "npm:^1.2.0" @@ -3839,15 +3813,16 @@ __metadata: languageName: node linkType: hard -"@openrouter/ai-sdk-provider@npm:^0.1.0": - version: 0.1.0 - resolution: "@openrouter/ai-sdk-provider@npm:0.1.0" +"@openrouter/ai-sdk-provider@npm:^0.7.2": + version: 0.7.2 + resolution: "@openrouter/ai-sdk-provider@npm:0.7.2" dependencies: - "@ai-sdk/provider": "npm:1.0.6" - "@ai-sdk/provider-utils": "npm:2.1.5" + "@ai-sdk/provider": "npm:1.1.3" + "@ai-sdk/provider-utils": "npm:2.2.8" peerDependencies: - zod: ^3.0.0 - checksum: 10c0/495c0349d6f42adc8e880651c215a183a4f041808019c6b2710df447ff3c81f5e69f951b589c1bb3c0cc1ce16c0d659b624d18f097b3344bce74eb178fb936a1 + ai: ^4.3.16 + zod: ^3.25.34 + checksum: 10c0/3d941fdc47418d16f74f98d0e1eb8c8c60bb152bdd2804baf4f6856f754237339cc6240b7ff41ce5a35e967214ca2cc0f33d0c60537ec1f0e5b5b5648475bb02 languageName: node linkType: hard