mirror of
https://github.com/CherryHQ/cherry-studio.git
synced 2025-12-28 05:11:24 +08:00
feat: update OpenAI provider integration and enhance type definitions
- Bumped version of `@ai-sdk/openai-compatible` to 1.0.0-beta.8 in package.json. - Introduced a new provider configuration for 'OpenAI Responses' in AiProviderRegistry, allowing for more flexible response handling. - Updated type definitions to include 'openai-responses' in ProviderSettingsMap for improved type safety. - Refactored getModelToProviderId function to return a more specific ProviderId type.
This commit is contained in:
parent
61e3309cd2
commit
fcc8836c95
@ -36,7 +36,7 @@
|
||||
"@ai-sdk/deepseek": "1.0.0-beta.6",
|
||||
"@ai-sdk/google": "2.0.0-beta.11",
|
||||
"@ai-sdk/openai": "2.0.0-beta.9",
|
||||
"@ai-sdk/openai-compatible": "1.0.0-beta.6",
|
||||
"@ai-sdk/openai-compatible": "1.0.0-beta.8",
|
||||
"@ai-sdk/provider": "2.0.0-beta.1",
|
||||
"@ai-sdk/provider-utils": "3.0.0-beta.3",
|
||||
"@ai-sdk/xai": "2.0.0-beta.8",
|
||||
|
||||
@ -7,7 +7,7 @@ import { createAnthropic } from '@ai-sdk/anthropic'
|
||||
import { createAzure } from '@ai-sdk/azure'
|
||||
import { createDeepSeek } from '@ai-sdk/deepseek'
|
||||
import { createGoogleGenerativeAI } from '@ai-sdk/google'
|
||||
import { createOpenAI } from '@ai-sdk/openai'
|
||||
import { createOpenAI, type OpenAIProviderSettings } from '@ai-sdk/openai'
|
||||
import { createOpenAICompatible } from '@ai-sdk/openai-compatible'
|
||||
import { createXai } from '@ai-sdk/xai'
|
||||
|
||||
@ -41,6 +41,14 @@ export class AiProviderRegistry {
|
||||
creator: createOpenAI,
|
||||
supportsImageGeneration: true
|
||||
},
|
||||
{
|
||||
id: 'openai-responses',
|
||||
name: 'OpenAI Responses',
|
||||
creator: (options: OpenAIProviderSettings) => {
|
||||
return createOpenAI(options).responses
|
||||
},
|
||||
supportsImageGeneration: true
|
||||
},
|
||||
{
|
||||
id: 'openai-compatible',
|
||||
name: 'OpenAI Compatible',
|
||||
@ -208,7 +216,7 @@ export class AiProviderRegistry {
|
||||
* 根据 ID 获取 Provider 配置
|
||||
*/
|
||||
public getProvider(id: string): ProviderConfig | undefined {
|
||||
return this.registry.get(id)
|
||||
return this.registry.get(id) || this.registry.get('openai-compatible')
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -48,6 +48,7 @@ export class ProviderError extends Error {
|
||||
// 类型安全的 Provider Settings 映射
|
||||
export type ProviderSettingsMap = {
|
||||
openai: OpenAIProviderSettings
|
||||
'openai-responses': OpenAIProviderSettings
|
||||
'openai-compatible': OpenAICompatibleProviderSettings
|
||||
// openrouter: OpenRouterProviderSettings
|
||||
anthropic: AnthropicProviderSettings
|
||||
|
||||
@ -1,3 +1,5 @@
|
||||
import { type ProviderId } from '../types'
|
||||
|
||||
export function isOpenAIChatCompletionOnlyModel(modelId: string): boolean {
|
||||
if (!modelId) {
|
||||
return false
|
||||
@ -28,7 +30,7 @@ export function isOpenAILLMModel(modelId: string): boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
export function getModelToProviderId(modelId: string): string | 'openai-compatible' {
|
||||
export function getModelToProviderId(modelId: string): ProviderId | 'openai-compatible' {
|
||||
const id = modelId.toLowerCase()
|
||||
|
||||
if (id.startsWith('claude')) {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user