A message authored by the LLM, optionally carrying tool calls.
:thinking holds the extended-thinking text that produced this reply
(nil when thinking was disabled or the provider does not expose it) —
per-reply reasoning stays auditable instead of being lost in usage
accounting. Providers are NOT sent this field back on subsequent turns.
Summary
Types
@type t() :: %LangEx.Message.AI{ content: String.t() | nil, id: String.t() | nil, thinking: String.t() | nil, tool_calls: [LangEx.Message.ToolCall.t()] }