UNPKG

@convo-lang/convo-lang

Version:
83 lines (82 loc) 4.57 kB
import { SecretManager } from "@iyio/common"; import { ChatCompletionRequest } from "./convo-openai-types.js"; import { ConvoCompletionCtx, ConvoCompletionService, ConvoCompletionServiceFeatureSupport, ConvoEmbeddingsGenerationRequest, ConvoEmbeddingsGenerationResult, ConvoEmbeddingsGenerationSupportRequest, ConvoEmbeddingsService, ConvoModelInfo, ConvoTranscriptionRequest, ConvoTranscriptionResult, ConvoTranscriptionService, ConvoTranscriptionSupportRequest, ConvoTtsRequest, ConvoTtsResult, ConvoTtsService, FlatConvoConversationBase } from "./convo-types.js"; import { ChatCompletion } from './open-ai/resources/chat/index.js'; import { PromiseResultType, ResultType } from "./result-type.js"; export interface BaseOpenAiConvoCompletionServiceOptions { apiKey?: string; apiBaseUrl?: string; completionsEndpoint?: string; secretManager?: SecretManager; secretsName?: string; models?: ConvoModelInfo[]; getModelsAsync?: () => Promise<ConvoModelInfo[]>; inputType: string; outputType: string; apiKeyHeader?: string; apiKeyHeaderValuePrefix?: string | null; headers?: Record<string, string>; updateRequest?: (requestBody: Record<string, any>, headers: Record<string, string | undefined>) => void; completeAsync?: (input: ChatCompletionRequest, flat: FlatConvoConversationBase, apiKey: string | undefined, url: string) => Promise<ChatCompletion | undefined>; isFallback?: boolean; serviceId: string; /** Whether to log HTTP requests and responses for debugging purposes */ logRequests?: boolean; canComplete?: (model: string | undefined, flat: FlatConvoConversationBase) => boolean; supportsTranscription?: boolean; supportsTts?: boolean; } export declare class BaseOpenAiConvoCompletionService implements ConvoCompletionService<ChatCompletionRequest, ChatCompletion>, ConvoTranscriptionService, ConvoTtsService, ConvoEmbeddingsService { readonly serviceId: string; readonly inputType: string; readonly outputType: string; private readonly secretManager?; private readonly apiKey?; private readonly apiBaseUrl; private readonly completionsEndpoint; private readonly secretsName?; private readonly models?; private readonly apiKeyHeader; private readonly apiKeyHeaderValuePrefix?; private readonly headers; private readonly isFallback; private readonly logRequests; private readonly supportsTranscription; private readonly supportsTts; private readonly updateRequest?; private readonly completeAsync?; private readonly _getModelsAsync?; private readonly _canComplete?; constructor({ apiKey, secretManager, secretsName, apiBaseUrl, completionsEndpoint, inputType, outputType, models, isFallback, apiKeyHeader, apiKeyHeaderValuePrefix, headers, serviceId, logRequests, completeAsync, updateRequest, getModelsAsync, canComplete, supportsTranscription, supportsTts, }: BaseOpenAiConvoCompletionServiceOptions); getSupportAsync(modelName: string): Promise<ConvoCompletionServiceFeatureSupport>; canComplete(model: string | undefined, flat: FlatConvoConversationBase): boolean; private clientPromises; private getApiClientAsync; completeConvoAsync(input: ChatCompletionRequest, flat: FlatConvoConversationBase, ctx: ConvoCompletionCtx<ChatCompletionRequest, ChatCompletion>): Promise<ChatCompletion>; private mergeToolCallsAsync; getModelsAsync(): Promise<ConvoModelInfo[]>; protected maxSpeakerRefs: number; canTranscribe(request: ConvoTranscriptionSupportRequest): Promise<boolean>; protected canTranscribeAsync(request: ConvoTranscriptionSupportRequest): Promise<boolean>; transcribeAsync({ audio, labelSpeakers, includeSegments, speakerRefs, model, }: ConvoTranscriptionRequest): Promise<ConvoTranscriptionResult>; canConvertToSpeech(request: ConvoTtsRequest): Promise<boolean>; protected canConvertToSpeechAsync(request: ConvoTtsRequest): Promise<boolean>; convertToSpeechAsync(request: ConvoTtsRequest): Promise<ConvoTtsResult>; canGenerateEmbeddings(request: ConvoEmbeddingsGenerationSupportRequest): ResultType<boolean>; generateEmbeddingsAsync(request: ConvoEmbeddingsGenerationRequest): PromiseResultType<ConvoEmbeddingsGenerationResult>; } export interface OpenAIEmbeddingsResponse { object: string; data: Datum[]; model: string; usage: Usage; } export interface Datum { object: string; index: number; embedding: number[]; } export interface Usage { prompt_tokens: number; total_tokens: number; }