langchain.js
    Preparing search index...

    Interface Message<TStructure, TRole>

    Represents a message object that organizes context for an LLM.

    // Basic message with text content
    const message: Message = {
    id: "msg-123",
    name: "user",
    type: "human",
    content: [{ type: "text", text: "Hello!" }]
    };

    // Basic ai message interface extension
    interface MyMessage extends Message<StandardMessageStructure, "ai"> {
    // Additional AI-specific properties can be added here
    }
    `
    // Custom message structure
    interface CustomStructure extends MessageStructure {
    content: {
    ai: ContentBlock.Text | ContentBlock.ToolCall<"search", { query: string }>;
    human: ContentBlock.Text | ContentBlock.Multimodal.Image;
    };
    }

    // Create a message with custom structure
    const message: Message<CustomStructure> = {
    id: "msg-123",
    name: "user",
    type: "ai",
    content: [
    { type: "text", text: "Hello!" },
    {
    type: "tool_call",
    name: "search",
    args: { query: "What is the capital of France?" }
    }
    ]
    };
    interface Message<
        TStructure extends MessageStructure = StandardMessageStructure,
        TRole extends MessageType = MessageType,
    > {
        content: $InferMessageContent<TStructure, TRole>;
        id?: string;
        name?: string;
        response_metadata?: Partial<$InferResponseMetadata<TStructure, TRole>>;
        type: TRole;
    }

    Type Parameters

    Implemented by

    Index

    Properties

    Array of content blocks that make up the message content

    id?: string

    Unique identifier for this message

    name?: string

    An optional name for the message participant.

    This property is primarily used to:

    1. Identify agent roles in multi-agent systems: When multiple agents collaborate, setting name helps distinguish which agent produced a message, preventing confusion about who said what.

    2. Pass participant names to model providers: Some providers (notably OpenAI, e.g. see OpenAI Chat Completions API) use this field to differentiate between participants with the same role. For example, when using OpenAI's Chat Completions API, the name is included in the message payload sent to the model.

    // Setting name on an AIMessage to identify the agent
    const message = new AIMessage({
    content: "I'll handle the calendar scheduling.",
    name: "calendar_agent"
    });

    // In a multi-agent system, this helps track message origins
    const researcherMessage = new AIMessage({
    content: "Here are the findings...",
    name: "researcher"
    });
    const writerMessage = new AIMessage({
    content: "I've drafted the report.",
    name: "writer"
    });
    response_metadata?: Partial<$InferResponseMetadata<TStructure, TRole>>

    Metadata about the message

    type: TRole

    The message type/role