/** * AI SDK Provider 工厂与格式转换器 * * 根据 model.api_format 使用官方 SDK 直接调用 API: * 1 → OpenAI Chat Completions (openai SDK) * 2 → Anthropic Messages (@anthropic-ai/sdk) * 3 → OpenAI Responses (openai SDK) */ import Anthropic from '@anthropic-ai/sdk'; import type { Message, MessageParam, MessageStreamEvent, Tool } from '@anthropic-ai/sdk/resources/messages/messages'; import OpenAI from 'openai'; export interface ModelRow { id: number; name: string; model_name: string; url: string; max_content_length: number; max_token: number; api_key: string; sort_index: number; api_format: number; model_label_id: number | null; capabilities: string | null; isLock: number; isDisable: number; user_id?: number; created_at: string; } export declare const LOCK_DURATION_MS: number; export interface AIProvider { type: 'anthropic' | 'openai-chat' | 'openai-responses'; client: Anthropic | OpenAI; modelName: string; } /** * 根据 api_format 创建官方 SDK 客户端 */ export declare function createModelProvider(model: ModelRow): AIProvider; export interface OpenAIMessage { role: string; content: string | Array> | null; tool_calls?: Array<{ id: string; type: string; function: { name: string; arguments: string; }; }>; tool_call_id?: string; name?: string; } export interface OpenAITool { type: string; function: { name: string; description?: string; parameters: Record; }; } export declare function convertToAnthropicMessages(messages: OpenAIMessage[], system?: string): { system?: string; messages: MessageParam[]; }; export interface GenericMessage { role: 'system' | 'user' | 'assistant' | 'tool'; content: string | null; tool_call_id?: string; tool_calls?: Array<{ id: string; type: 'function'; function: { name: string; arguments: string; }; }>; } export declare function convertToOpenAIChatMessages(messages: OpenAIMessage[]): GenericMessage[]; export declare function convertToAnthropicTools(tools: OpenAITool[]): Tool[]; export declare function convertToOpenAITools(tools: OpenAITool[]): Record[]; export declare function convertAnthropicToChatCompletion(response: Message, modelName: string): Record; export declare function convertAnthropicStreamEvent(event: MessageStreamEvent): Record | null; export declare function isModelLocked(isLock: number): { locked: boolean; expired: boolean; }; //# sourceMappingURL=aiSdkProvider.d.ts.map