From fcc8836c9567c60bb0a4da165b8d6e4d033a63e8 Mon Sep 17 00:00:00 2001 From: MyPrototypeWhat Date: Mon, 21 Jul 2025 14:43:48 +0800 Subject: [PATCH] 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. --- packages/aiCore/package.json | 2 +- packages/aiCore/src/core/providers/registry.ts | 12 ++++++++++-- packages/aiCore/src/core/providers/types.ts | 1 + packages/aiCore/src/utils/model.ts | 4 +++- 4 files changed, 15 insertions(+), 4 deletions(-) diff --git a/packages/aiCore/package.json b/packages/aiCore/package.json index 13cf655963..42246a4761 100644 --- a/packages/aiCore/package.json +++ b/packages/aiCore/package.json @@ -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", diff --git a/packages/aiCore/src/core/providers/registry.ts b/packages/aiCore/src/core/providers/registry.ts index a5e7573472..556863324d 100644 --- a/packages/aiCore/src/core/providers/registry.ts +++ b/packages/aiCore/src/core/providers/registry.ts @@ -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') } /** diff --git a/packages/aiCore/src/core/providers/types.ts b/packages/aiCore/src/core/providers/types.ts index 81c6bd392f..ec9bdf82a4 100644 --- a/packages/aiCore/src/core/providers/types.ts +++ b/packages/aiCore/src/core/providers/types.ts @@ -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 diff --git a/packages/aiCore/src/utils/model.ts b/packages/aiCore/src/utils/model.ts index 8bed8ab443..85800eea16 100644 --- a/packages/aiCore/src/utils/model.ts +++ b/packages/aiCore/src/utils/model.ts @@ -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')) {