resources/beta/chat/completions.ts (162 lines of code) (raw):

// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import * as Core from "../../../core.ts"; import { APIResource } from "../../../resource.ts"; import { ChatCompletionFunctionRunnerParams, ChatCompletionRunner, } from "../../../lib/ChatCompletionRunner.ts"; export { type ChatCompletionFunctionRunnerParams, ChatCompletionRunner, } from "../../../lib/ChatCompletionRunner.ts"; import { ChatCompletionStreamingFunctionRunnerParams, ChatCompletionStreamingRunner, } from "../../../lib/ChatCompletionStreamingRunner.ts"; export { type ChatCompletionStreamingFunctionRunnerParams, ChatCompletionStreamingRunner, } from "../../../lib/ChatCompletionStreamingRunner.ts"; import { BaseFunctionsArgs } from "../../../lib/RunnableFunction.ts"; export { ParsingFunction, ParsingToolFunction, type RunnableFunction, type RunnableFunctions, type RunnableFunctionWithoutParse, type RunnableFunctionWithParse, } from "../../../lib/RunnableFunction.ts"; import { RunnerOptions } from "../../../lib/AbstractChatCompletionRunner.ts"; import { ChatCompletionToolRunnerParams } from "../../../lib/ChatCompletionRunner.ts"; export { type ChatCompletionToolRunnerParams } from "../../../lib/ChatCompletionRunner.ts"; import { ChatCompletionStreamingToolRunnerParams } from "../../../lib/ChatCompletionStreamingRunner.ts"; export { type ChatCompletionStreamingToolRunnerParams } from "../../../lib/ChatCompletionStreamingRunner.ts"; import { ChatCompletionStream, type ChatCompletionStreamParams, } from "../../../lib/ChatCompletionStream.ts"; import { ChatCompletion, ChatCompletionCreateParamsNonStreaming, ChatCompletionMessage, ChatCompletionMessageToolCall, } from "../../chat/completions.ts"; import { ExtractParsedContentFromParams, parseChatCompletion, validateInputTools, } from "../../../lib/parser.ts"; export { ChatCompletionStream, type ChatCompletionStreamParams, } from "../../../lib/ChatCompletionStream.ts"; export interface ParsedFunction extends ChatCompletionMessageToolCall.Function { parsed_arguments?: unknown; } export interface ParsedFunctionToolCall extends ChatCompletionMessageToolCall { function: ParsedFunction; } export interface ParsedChatCompletionMessage<ParsedT> extends ChatCompletionMessage { parsed: ParsedT | null; tool_calls: Array<ParsedFunctionToolCall>; } export interface ParsedChoice<ParsedT> extends ChatCompletion.Choice { message: ParsedChatCompletionMessage<ParsedT>; } export interface ParsedChatCompletion<ParsedT> extends ChatCompletion { choices: Array<ParsedChoice<ParsedT>>; } export type ChatCompletionParseParams = ChatCompletionCreateParamsNonStreaming; export class Completions extends APIResource { parse< Params extends ChatCompletionParseParams, ParsedT = ExtractParsedContentFromParams<Params>, >( body: Params, options?: Core.RequestOptions, ): Core.APIPromise<ParsedChatCompletion<ParsedT>> { validateInputTools(body.tools); return this._client.chat.completions .create(body, { ...options, headers: { ...options?.headers, "X-Stainless-Helper-Method": "beta.chat.completions.parse", }, }) ._thenUnwrap((completion) => parseChatCompletion(completion, body)); } /** * @deprecated - use `runTools` instead. */ runFunctions<FunctionsArgs extends BaseFunctionsArgs>( body: ChatCompletionFunctionRunnerParams<FunctionsArgs>, options?: Core.RequestOptions, ): ChatCompletionRunner<null>; runFunctions<FunctionsArgs extends BaseFunctionsArgs>( body: ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>, options?: Core.RequestOptions, ): ChatCompletionStreamingRunner<null>; runFunctions<FunctionsArgs extends BaseFunctionsArgs>( body: | ChatCompletionFunctionRunnerParams<FunctionsArgs> | ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>, options?: Core.RequestOptions, ): ChatCompletionRunner<null> | ChatCompletionStreamingRunner<null> { if (body.stream) { return ChatCompletionStreamingRunner.runFunctions( this._client, body as ChatCompletionStreamingFunctionRunnerParams<FunctionsArgs>, options, ); } return ChatCompletionRunner.runFunctions( this._client, body as ChatCompletionFunctionRunnerParams<FunctionsArgs>, options, ); } /** * A convenience helper for using tool calls with the /chat/completions endpoint * which automatically calls the JavaScript functions you provide and sends their * results back to the /chat/completions endpoint, looping as long as the model * requests function calls. * * For more details and examples, see * [the docs](https://github.com/openai/openai-node#automated-function-calls) */ runTools< Params extends ChatCompletionToolRunnerParams<any>, ParsedT = ExtractParsedContentFromParams<Params>, >(body: Params, options?: RunnerOptions): ChatCompletionRunner<ParsedT>; runTools< Params extends ChatCompletionStreamingToolRunnerParams<any>, ParsedT = ExtractParsedContentFromParams<Params>, >( body: Params, options?: RunnerOptions, ): ChatCompletionStreamingRunner<ParsedT>; runTools< Params extends | ChatCompletionToolRunnerParams<any> | ChatCompletionStreamingToolRunnerParams<any>, ParsedT = ExtractParsedContentFromParams<Params>, >( body: Params, options?: RunnerOptions, ): ChatCompletionRunner<ParsedT> | ChatCompletionStreamingRunner<ParsedT> { if (body.stream) { return ChatCompletionStreamingRunner.runTools( this._client, body as ChatCompletionStreamingToolRunnerParams<any>, options, ); } return ChatCompletionRunner.runTools( this._client, body as ChatCompletionToolRunnerParams<any>, options, ); } /** * Creates a chat completion stream */ stream< Params extends ChatCompletionStreamParams, ParsedT = ExtractParsedContentFromParams<Params>, >( body: Params, options?: Core.RequestOptions, ): ChatCompletionStream<ParsedT> { return ChatCompletionStream.createChatCompletion( this._client, body, options, ); } }