import * as Core from 'openai/core'; import { type CompletionUsage } from 'openai/resources/completions'; import { type Completions, type ChatCompletion, type ChatCompletionMessage, type ChatCompletionMessageParam, type ChatCompletionCreateParams } from 'openai/resources/chat/completions'; import { APIUserAbortError, OpenAIError } from 'openai/error'; import { type BaseFunctionsArgs } from "./RunnableFunction.js"; import { ChatCompletionFunctionRunnerParams, ChatCompletionToolRunnerParams } from "./ChatCompletionRunner.js"; import { ChatCompletionStreamingFunctionRunnerParams, ChatCompletionStreamingToolRunnerParams } from "./ChatCompletionStreamingRunner.js"; export interface RunnerOptions extends Core.RequestOptions { /** How many requests to make before canceling. Default 10. */ maxChatCompletions?: number; } export declare abstract class AbstractChatCompletionRunner = AbstractChatCompletionRunnerEvents> { #private; controller: AbortController; protected _chatCompletions: ChatCompletion[]; messages: ChatCompletionMessageParam[]; constructor(); protected _run(executor: () => Promise): void; protected _addChatCompletion(chatCompletion: ChatCompletion): ChatCompletion; protected _addMessage(message: ChatCompletionMessageParam, emit?: boolean): void; protected _connected(): void; get ended(): boolean; get errored(): boolean; get aborted(): boolean; abort(): void; /** * Adds the listener function to the end of the listeners array for the event. * No checks are made to see if the listener has already been added. Multiple calls passing * the same combination of event and listener will result in the listener being added, and * called, multiple times. * @returns this ChatCompletionStream, so that calls can be chained */ on(event: Event, listener: ListenerForEvent): this; /** * Removes the specified listener from the listener array for the event. * off() will remove, at most, one instance of a listener from the listener array. If any single * listener has been added multiple times to the listener array for the specified event, then * off() must be called multiple times to remove each instance. * @returns this ChatCompletionStream, so that calls can be chained */ off(event: Event, listener: ListenerForEvent): this; /** * Adds a one-time listener function for the event. The next time the event is triggered, * this listener is removed and then invoked. * @returns this ChatCompletionStream, so that calls can be chained */ once(event: Event, listener: ListenerForEvent): this; /** * This is similar to `.once()`, but returns a Promise that resolves the next time * the event is triggered, instead of calling a listener callback. * @returns a Promise that resolves the next time given event is triggered, * or rejects if an error is emitted. (If you request the 'error' event, * returns a promise that resolves with the error). * * Example: * * const message = await stream.emitted('message') // rejects if the stream errors */ emitted(event: Event): Promise extends [infer Param] ? Param : EventParameters extends [] ? void : EventParameters>; done(): Promise; /** * @returns a promise that resolves with the final ChatCompletion, or rejects * if an error occurred or the stream ended prematurely without producing a ChatCompletion. */ finalChatCompletion(): Promise; /** * @returns a promise that resolves with the content of the final ChatCompletionMessage, or rejects * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage. */ finalContent(): Promise; /** * @returns a promise that resolves with the the final assistant ChatCompletionMessage response, * or rejects if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage. */ finalMessage(): Promise; /** * @returns a promise that resolves with the content of the final FunctionCall, or rejects * if an error occurred or the stream ended prematurely without producing a ChatCompletionMessage. */ finalFunctionCall(): Promise; finalFunctionCallResult(): Promise; totalUsage(): Promise; allChatCompletions(): ChatCompletion[]; protected _emit(event: Event, ...args: EventParameters): void; protected _emitFinal(): void; protected _createChatCompletion(completions: Completions, params: ChatCompletionCreateParams, options?: Core.RequestOptions): Promise; protected _runChatCompletion(completions: Completions, params: ChatCompletionCreateParams, options?: Core.RequestOptions): Promise; protected _runFunctions(completions: Completions, params: ChatCompletionFunctionRunnerParams | ChatCompletionStreamingFunctionRunnerParams, options?: RunnerOptions): Promise; protected _runTools(completions: Completions, params: ChatCompletionToolRunnerParams | ChatCompletionStreamingToolRunnerParams, options?: RunnerOptions): Promise; } type CustomEvents = { [k in Event]: k extends keyof AbstractChatCompletionRunnerEvents ? AbstractChatCompletionRunnerEvents[k] : (...args: any[]) => void; }; type ListenerForEvent, Event extends keyof Events> = Event extends (keyof AbstractChatCompletionRunnerEvents) ? AbstractChatCompletionRunnerEvents[Event] : Events[Event]; type EventParameters, Event extends keyof Events> = Parameters>; export interface AbstractChatCompletionRunnerEvents { connect: () => void; functionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void; message: (message: ChatCompletionMessageParam) => void; chatCompletion: (completion: ChatCompletion) => void; finalContent: (contentSnapshot: string) => void; finalMessage: (message: ChatCompletionMessageParam) => void; finalChatCompletion: (completion: ChatCompletion) => void; finalFunctionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void; functionCallResult: (content: string) => void; finalFunctionCallResult: (content: string) => void; error: (error: OpenAIError) => void; abort: (error: APIUserAbortError) => void; end: () => void; totalUsage: (usage: CompletionUsage) => void; } export {}; //# sourceMappingURL=AbstractChatCompletionRunner.d.ts.map