ReqLLM.Message (ReqLLM v1.3.0)
View SourceMessage represents a single conversation message with multi-modal content support.
Content is always a list of ContentPart structs, never a string.
This ensures consistent handling across all providers and eliminates polymorphism.
Reasoning Details
The reasoning_details field contains provider-specific reasoning metadata that must
be preserved across conversation turns for reasoning models. This field is:
nilfor non-reasoning models or models that don't provide structured reasoning metadata- A list of normalized ReasoningDetails for reasoning models
For multi-turn reasoning continuity, include the previous assistant message (with its reasoning_details) in subsequent requests.
Summary
Types
@type t() :: %ReqLLM.Message{ content: [ReqLLM.Message.ContentPart.t()], metadata: map(), name: String.t() | nil, reasoning_details: [ReqLLM.Message.ReasoningDetails.t()] | nil, role: :user | :assistant | :system | :tool, tool_call_id: String.t() | nil, tool_calls: [ReqLLM.ToolCall.t()] | nil }