diff --git a/content/docs/07-reference/ai-sdk-core/30-core-message.mdx b/content/docs/07-reference/ai-sdk-core/30-core-message.mdx new file mode 100644 index 000000000000..a1e64a916be4 --- /dev/null +++ b/content/docs/07-reference/ai-sdk-core/30-core-message.mdx @@ -0,0 +1,151 @@ +--- +title: CoreMessage +description: Core message types for AI interactions (API Reference) +--- + +# `CoreMessage` + +`CoreMessage` represents the fundamental message structure used with AI SDK Core functions. It encompasses various message types that can be used in the `messages` field of any AI SDK Core functions. + +## `CoreMessage` Types + +### `CoreSystemMessage` + +A system message that can contain system information. + +```typescript +type CoreSystemMessage = { + role: 'system'; + content: string; +}; +``` + + + {' '} + Using the "system" part of the prompt is strongly recommended to enhance resilience + against prompt injection attacks and because not all providers support multiple + system messages. + + +### `CoreUserMessage` + +A user message that can contain text or a combination of text and images. + +```typescript +type CoreUserMessage = { + role: 'user'; + content: UserContent; +}; + +type UserContent = string | Array; +``` + +### `CoreAssistantMessage` + +An assistant message that can contain text, tool calls, or a combination of both. + +```typescript +type CoreAssistantMessage = { + role: 'assistant'; + content: AssistantContent; +}; + +type AssistantContent = string | Array; +``` + +### `CoreToolMessage` + +A tool message that contains the result of one or more tool calls. + +```typescript +type CoreToolMessage = { + role: 'tool'; + content: ToolContent; +}; + +type ToolContent = Array; +``` + +## `CoreMessage` Parts + +### `TextPart` + +Represents a text content part of a prompt. It contains a string of text. + +```typescript +export interface TextPart { + type: 'text'; + /** + * The text content. + */ + text: string; +} +``` + +### `ImagePart` + +Represents an image part in a user message. + +```typescript +export interface ImagePart { + type: 'image'; + /** + * Image data. Can either be: + * - data: a base64-encoded string, a Uint8Array, an ArrayBuffer, or a Buffer + * - URL: a URL that points to the image + */ + image: DataContent | URL; + /** + * Optional mime type of the image. + */ + mimeType?: string; +} +``` + +### `ToolCallPart` + +Represents a tool call content part of a prompt, typically generated by the AI model. + +```typescript +export interface ToolCallPart { + type: 'tool-call'; + /** + * ID of the tool call. This ID is used to match the tool call with the tool result. + */ + toolCallId: string; + /** + * Name of the tool that is being called. + */ + toolName: string; + /** + * Arguments of the tool call. This is a JSON-serializable object that matches the tool's input schema. + */ + args: unknown; +} +``` + +### `ToolResultPart` + +Represents the result of a tool call in a tool message. + +```typescript +export interface ToolResultPart { + type: 'tool-result'; + /** + * ID of the tool call that this result is associated with. + */ + toolCallId: string; + /** + * Name of the tool that generated this result. + */ + toolName: string; + /** + * Result of the tool call. This is a JSON-serializable object. + */ + result: unknown; + /** + * Optional flag if the result is an error or an error message. + */ + isError?: boolean; +} +``` diff --git a/content/docs/07-reference/ai-sdk-ui/31-convert-to-core-message.mdx b/content/docs/07-reference/ai-sdk-ui/31-convert-to-core-message.mdx new file mode 100644 index 000000000000..65c2f4969e65 --- /dev/null +++ b/content/docs/07-reference/ai-sdk-ui/31-convert-to-core-message.mdx @@ -0,0 +1,56 @@ +--- +title: convertToCoreMessages +description: Convert useChat messages to CoreMessages for AI core functions (API Reference) +--- + +# `convertToCoreMessages()` + +The `convertToCoreMessages` function is used to transform an array of UI messages from the `useChat` hook into an array of `CoreMessage` objects. These `CoreMessage` objects are compatible with AI core functions like `streamText`. + +```ts filename="app/api/chat/route.ts" +import { openai } from '@ai-sdk/openai'; +import { convertToCoreMessages, streamText } from 'ai'; + +export async function POST(req: Request) { + const { messages } = await req.json(); + + const result = await streamText({ + model: openai('gpt-4o'), + messages: convertToCoreMessages(messages), + }); + + return result.toAIStreamResponse(); +} +``` + +## Import + + + +## API Signature + +### Parameters + + + +### Returns + +An array of [`CoreMessage`](/docs/reference/ai-sdk-core/core-message) objects. + +