// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. import * as Core from '../../../core'; import { APIResource } from '../../../resource'; import { ChatCompletionRunner, ChatCompletionFunctionRunnerParams } from '../../../lib/ChatCompletionRunner'; import { ChatCompletionStreamingRunner, ChatCompletionStreamingFunctionRunnerParams, } from '../../../lib/ChatCompletionStreamingRunner'; import { BaseFunctionsArgs } from '../../../lib/RunnableFunction'; import { RunnerOptions } from '../../../lib/AbstractChatCompletionRunner'; import { ChatCompletionToolRunnerParams } from '../../../lib/ChatCompletionRunner'; import { ChatCompletionStreamingToolRunnerParams } from '../../../lib/ChatCompletionStreamingRunner'; import { ChatCompletionStream, type ChatCompletionStreamParams } from '../../../lib/ChatCompletionStream'; import { ChatCompletion, ChatCompletionCreateParamsNonStreaming, ChatCompletionMessage, ChatCompletionMessageToolCall, } from '../../chat/completions'; import { ExtractParsedContentFromParams, parseChatCompletion, validateInputTools } from '../../../lib/parser'; export { ChatCompletionStreamingRunner, type ChatCompletionStreamingFunctionRunnerParams, } from '../../../lib/ChatCompletionStreamingRunner'; export { type RunnableFunction, type RunnableFunctions, type RunnableFunctionWithParse, type RunnableFunctionWithoutParse, ParsingFunction, ParsingToolFunction, } from '../../../lib/RunnableFunction'; export { type ChatCompletionToolRunnerParams } from '../../../lib/ChatCompletionRunner'; export { type ChatCompletionStreamingToolRunnerParams } from '../../../lib/ChatCompletionStreamingRunner'; export { ChatCompletionStream, type ChatCompletionStreamParams } from '../../../lib/ChatCompletionStream'; export { ChatCompletionRunner, type ChatCompletionFunctionRunnerParams, } from '../../../lib/ChatCompletionRunner'; export interface ParsedFunction extends ChatCompletionMessageToolCall.Function { parsed_arguments?: unknown; } export interface ParsedFunctionToolCall extends ChatCompletionMessageToolCall { function: ParsedFunction; } export interface ParsedChatCompletionMessage extends ChatCompletionMessage { parsed: ParsedT | null; tool_calls?: Array; } export interface ParsedChoice extends ChatCompletion.Choice { message: ParsedChatCompletionMessage; } export interface ParsedChatCompletion extends ChatCompletion { choices: Array>; } export type ChatCompletionParseParams = ChatCompletionCreateParamsNonStreaming; export class Completions extends APIResource { parse>( body: Params, options?: Core.RequestOptions, ): Core.APIPromise> { 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( body: ChatCompletionFunctionRunnerParams, options?: Core.RequestOptions, ): ChatCompletionRunner; runFunctions( body: ChatCompletionStreamingFunctionRunnerParams, options?: Core.RequestOptions, ): ChatCompletionStreamingRunner; runFunctions( body: | ChatCompletionFunctionRunnerParams | ChatCompletionStreamingFunctionRunnerParams, options?: Core.RequestOptions, ): ChatCompletionRunner | ChatCompletionStreamingRunner { if (body.stream) { return ChatCompletionStreamingRunner.runFunctions( this._client, body as ChatCompletionStreamingFunctionRunnerParams, options, ); } return ChatCompletionRunner.runFunctions( this._client, body as ChatCompletionFunctionRunnerParams, 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, ParsedT = ExtractParsedContentFromParams, >(body: Params, options?: RunnerOptions): ChatCompletionRunner; runTools< Params extends ChatCompletionStreamingToolRunnerParams, ParsedT = ExtractParsedContentFromParams, >(body: Params, options?: RunnerOptions): ChatCompletionStreamingRunner; runTools< Params extends ChatCompletionToolRunnerParams | ChatCompletionStreamingToolRunnerParams, ParsedT = ExtractParsedContentFromParams, >( body: Params, options?: RunnerOptions, ): ChatCompletionRunner | ChatCompletionStreamingRunner { if (body.stream) { return ChatCompletionStreamingRunner.runTools( this._client, body as ChatCompletionStreamingToolRunnerParams, options, ); } return ChatCompletionRunner.runTools(this._client, body as ChatCompletionToolRunnerParams, options); } /** * Creates a chat completion stream */ stream>( body: Params, options?: Core.RequestOptions, ): ChatCompletionStream { return ChatCompletionStream.createChatCompletion(this._client, body, options); } }