LangChain Reference home pageLangChain ReferenceLangChain Reference
  • GitHub
  • Main Docs
Deep Agents
LangChain
LangGraph
Integrations
LangSmith
LangChain
  • Browser
  • Universal
  • Hub
  • Node
  • Load
  • Serializable
  • Encoder Backed
  • File System
  • In Memory
  • Tools
LangChain Core
  • Agents
  • Caches
  • Base
  • Dispatch
  • Web
  • Manager
  • Promises
  • Chat History
  • Context
  • Base
  • Langsmith
  • Documents
  • Embeddings
  • Errors
  • Example Selectors
  • Indexing
  • Base
  • Chat Models
  • Compat
  • Event
  • Llms
  • Openai Completions Stream
  • Profile
  • Stream
  • Structured Output
  • Load
  • Serializable
  • Memory
  • Messages
  • Tool
  • Output Parsers
  • Openai Functions
  • Openai Tools
  • Outputs
  • Prompt Values
  • Prompts
  • Retrievers
  • Document Compressors
  • Runnables
  • Graph
  • Singletons
  • Stores
  • Structured Query
  • Testing
  • Tools
  • Base
  • Console
  • Log Stream
  • Run Collector
  • Tracer Langchain
  • Stream
  • Async Caller
  • Chunk Array
  • Context
  • Env
  • Event Source Parse
  • Format
  • Function Calling
  • Gateway
  • Hash
  • Json Patch
  • Json Schema
  • Math
  • Ssrf
  • Standard Schema
  • Stream
  • Testing
  • Tiktoken
  • Types
  • Uuid
  • Vectorstores
Text Splitters
MCP Adapters
⌘I

LangChain Assistant

Ask a question to get started

Enter to send•Shift+Enter new line

Menu

LangChain
BrowserUniversalHubNodeLoadSerializableEncoder BackedFile SystemIn MemoryTools
LangChain Core
AgentsCachesBaseDispatchWebManagerPromisesChat HistoryContextBaseLangsmithDocumentsEmbeddingsErrorsExample SelectorsIndexingBaseChat ModelsCompatEventLlmsOpenai Completions StreamProfileStreamStructured OutputLoadSerializableMemoryMessagesToolOutput ParsersOpenai FunctionsOpenai ToolsOutputsPrompt ValuesPromptsRetrieversDocument CompressorsRunnablesGraphSingletonsStoresStructured QueryTestingToolsBaseConsoleLog StreamRun CollectorTracer LangchainStreamAsync CallerChunk ArrayContextEnvEvent Source ParseFormatFunction CallingGatewayHashJson PatchJson SchemaMathSsrfStandard SchemaStreamTestingTiktokenTypesUuidVectorstores
Text Splitters
MCP Adapters
Language
Theme
JavaScript@langchain/coremessagesMessage
Interfaceā—Since v1.0

Message

Represents a message object that organizes context for an LLM.

Copy
interface Message

Example

Copy
// 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?" }
    }
  ]
};

Properties

property
content: $InferMessageContent<TStructure, TRole>

Array of content blocks that make up the message content

property
id: string

Unique identifier for this message

property
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.

Copy
// 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"
});
property
response_metadata: Partial<$InferResponseMetadata<TStructure, TRole>>

Metadata about the message

property
type: TRole

The message type/role

View source on GitHub