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.
This commit is contained in:
suyao 2025-06-29 21:29:57 +08:00
parent 6c87b42607
commit 007de81928
No known key found for this signature in database
6 changed files with 68 additions and 44 deletions

View File

@ -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",

View File

@ -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)
}

View File

@ -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<string, unknown>
/**
* 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
}
}

View File

@ -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<T extends keyof LanguageModelV1ProviderMetadata> = LanguageModelV1ProviderMetadata[T]
/**
@ -12,6 +14,7 @@ export type ProviderOptionsMap = {
openai: OpenAIResponsesProviderOptions
anthropic: AnthropicProviderOptions
google: GoogleGenerativeAIProviderOptions
openrouter: OpenRouterProviderOptions
}
// 工具类型用于从ProviderOptionsMap中提取特定供应商的选项类型

View File

@ -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,

View File

@ -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