@convo-lang/convo-lang
Version:
The language of AI
83 lines (82 loc) • 4.57 kB
TypeScript
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;
}