diff --git a/src/lib/AbstractChatCompletionRunner.ts b/src/lib/AbstractChatCompletionRunner.ts index 28875e7..67052d4 100644 --- a/src/lib/AbstractChatCompletionRunner.ts +++ b/src/lib/AbstractChatCompletionRunner.ts @@ -6,6 +6,8 @@ import { type ChatCompletionMessageParam, type CompletionCreateParams, type ChatCompletionTool, + type ChatCompletionStructuredMessageText, + type ChatCompletionStructuredMessageImageURL, } from 'together-ai/resources/chat/completions'; import { APIUserAbortError, TogetherError } from 'together-ai/error'; import { @@ -214,7 +216,7 @@ export abstract class AbstractChatCompletionRunner< return completion; } - #getFinalContent(): string | null { + #getFinalContent(): string | (ChatCompletionStructuredMessageText | ChatCompletionStructuredMessageImageURL)[] | null { return this.#getFinalMessage().content ?? null; } @@ -222,7 +224,7 @@ export abstract class AbstractChatCompletionRunner< * @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. */ - async finalContent(): Promise { + async finalContent(): Promise { await this.done(); return this.#getFinalContent(); } @@ -270,7 +272,7 @@ export abstract class AbstractChatCompletionRunner< return this.#getFinalFunctionCall(); } - #getFinalFunctionCallResult(): string | undefined { + #getFinalFunctionCallResult(): string | (ChatCompletionStructuredMessageText | ChatCompletionStructuredMessageImageURL)[] | undefined { for (let i = this.messages.length - 1; i >= 0; i--) { const message = this.messages[i]; if (isFunctionMessage(message) && message.content != null) { @@ -292,7 +294,7 @@ export abstract class AbstractChatCompletionRunner< return; } - async finalFunctionCallResult(): Promise { + async finalFunctionCallResult(): Promise { await this.done(); return this.#getFinalFunctionCallResult(); } @@ -674,12 +676,12 @@ export interface AbstractChatCompletionRunnerEvents { functionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void; message: (message: ChatCompletionMessageParam) => void; chatCompletion: (completion: ChatCompletion) => void; - finalContent: (contentSnapshot: string) => void; + finalContent: (contentSnapshot: string | (ChatCompletionStructuredMessageText | ChatCompletionStructuredMessageImageURL)[]) => void; finalMessage: (message: ChatCompletionMessageParam) => void; finalChatCompletion: (completion: ChatCompletion) => void; finalFunctionCall: (functionCall: ChatCompletionMessage.FunctionCall) => void; functionCallResult: (content: string) => void; - finalFunctionCallResult: (content: string) => void; + finalFunctionCallResult: (content: string | (ChatCompletionStructuredMessageText | ChatCompletionStructuredMessageImageURL)[]) => void; error: (error: TogetherError) => void; abort: (error: APIUserAbortError) => void; end: () => void; diff --git a/src/resources/chat/completions.ts b/src/resources/chat/completions.ts index 26fcf5c..e4684db 100644 --- a/src/resources/chat/completions.ts +++ b/src/resources/chat/completions.ts @@ -67,7 +67,13 @@ export namespace ChatCompletion { export interface ChatCompletionAssistantMessageParam { role: 'assistant'; - content?: string | null; + content?: + | string + | Array< + | ChatCompletionsAPI.ChatCompletionStructuredMessageText + | ChatCompletionsAPI.ChatCompletionStructuredMessageImageURL + > + | null; /** * @deprecated @@ -123,7 +129,13 @@ export namespace ChatCompletionChunk { export interface Delta { role: 'system' | 'user' | 'assistant' | 'function' | 'tool'; - content?: string | null; + content?: + | string + | Array< + | ChatCompletionsAPI.ChatCompletionStructuredMessageText + | ChatCompletionsAPI.ChatCompletionStructuredMessageImageURL + > + | null; /** * @deprecated @@ -160,7 +172,13 @@ export interface ChatCompletionFunctionMessageParam { } export interface ChatCompletionMessage { - content: string | null; + content: + | string + | Array< + | ChatCompletionsAPI.ChatCompletionStructuredMessageText + | ChatCompletionsAPI.ChatCompletionStructuredMessageImageURL + > + | null; role: 'assistant'; @@ -191,7 +209,12 @@ export type ChatCompletionMessageParam = | ChatCompletionFunctionMessageParam; export interface ChatCompletionSystemMessageParam { - content: string; + content: + | string + | Array< + | ChatCompletionsAPI.ChatCompletionStructuredMessageText + | ChatCompletionsAPI.ChatCompletionStructuredMessageImageURL + >; role: 'system'; @@ -215,7 +238,12 @@ export namespace ChatCompletionTool { } export interface ChatCompletionToolMessageParam { - content?: string; + content?: + | string + | Array< + | ChatCompletionsAPI.ChatCompletionStructuredMessageText + | ChatCompletionsAPI.ChatCompletionStructuredMessageImageURL + >; required?: unknown; @@ -254,7 +282,12 @@ export interface ChatCompletionUsage { } export interface ChatCompletionUserMessageParam { - content: string; + content: + | string + | Array< + | ChatCompletionsAPI.ChatCompletionStructuredMessageText + | ChatCompletionsAPI.ChatCompletionStructuredMessageImageURL + >; role: 'user';