diff --git a/src/browser.ts b/src/browser.ts index 7fa23cd..45987d0 100644 --- a/src/browser.ts +++ b/src/browser.ts @@ -157,7 +157,7 @@ async encodeImage(image: Uint8Array | string): Promise { ): Promise> { if (request.messages) { for (const message of request.messages) { - if (message.images) { + if ("images" in message && message.images) { message.images = await Promise.all( message.images.map(this.encodeImage.bind(this)), ) diff --git a/src/interfaces.ts b/src/interfaces.ts index 5b7b115..450bc00 100644 --- a/src/interfaces.ts +++ b/src/interfaces.ts @@ -60,13 +60,30 @@ export interface GenerateRequest { options?: Partial } -export interface Message { - role: string +export type Message = SystemMessage | AssistantMessage | UserMessage | ToolResponseMessage + +export interface SystemMessage { + role: "system", + content: string +} + +export interface AssistantMessage { + role: "assistant" content: string - images?: Uint8Array[] | string[] tool_calls?: ToolCall[] } +export interface UserMessage { + role: "user", + content: string, + images?: Uint8Array[] | string[] +} + +export interface ToolResponseMessage { + role: "tool", + content: string +} + export interface ToolCall { function: { name: string;