langchain.js
    Preparing search index...

    Interface ToolMessageFields<TStructure>

    interface ToolMessageFields<
        TStructure extends MessageStructure = MessageStructure,
    > {
        additional_kwargs?: {
            function_call?: FunctionCall;
            tool_calls?: OpenAIToolCall[];
            [key: string]: unknown;
        };
        artifact?: any;
        content?: $InferMessageContent<TStructure, "tool">;
        contentBlocks?: ContentBlock.Standard[];
        id?: string;
        metadata?: Record<string, unknown>;
        name?: string;
        response_metadata?: Partial<$InferResponseMetadata<TStructure, "tool">>;
        status?: "success" | "error";
        tool_call_id: string;
    }

    Type Parameters

    Hierarchy (View Summary)

    Index

    Properties

    additional_kwargs?: {
        function_call?: FunctionCall;
        tool_calls?: OpenAIToolCall[];
        [key: string]: unknown;
    }

    Type Declaration

    • [key: string]: unknown
    • Optionalfunction_call?: FunctionCall

      Use "tool_calls" field on AIMessages instead

    • Optionaltool_calls?: OpenAIToolCall[]

      Use "tool_calls" field on AIMessages instead

    artifact?: any

    Artifact of the Tool execution which is not meant to be sent to the model.

    Should only be specified if it is different from the message content, e.g. if only a subset of the full tool output is being passed as message content but the full output is needed in other parts of the code.

    content?: $InferMessageContent<TStructure, "tool">
    contentBlocks?: ContentBlock.Standard[]
    id?: string

    Unique identifier for this message

    metadata?: Record<string, unknown>
    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, "tool">>
    status?: "success" | "error"
    tool_call_id: string