ReqLLM.Message.ReasoningDetails (ReqLLM v1.17.1)

View Source

Normalized reasoning/thinking data from LLM providers.

Fields

  • text - Human-readable reasoning/thinking text (may be summarized)
  • signature - Opaque signature/token for multi-turn continuity
  • encrypted? - Whether the signature contains encrypted reasoning tokens
  • provider - Source provider (:anthropic, :google, :openai, :openrouter)
  • format - Provider-specific format version identifier
  • index - Position index for ordered reasoning blocks
  • provider_data - Raw provider-specific fields for lossless round-trips

Summary

Functions

Builds normalized reasoning details from an OpenAI-compatible wire map.

Encodes normalized reasoning details to an OpenAI-compatible wire map.

Types

t()

@type t() :: %ReqLLM.Message.ReasoningDetails{
  encrypted?: boolean(),
  format: nil | nil | binary(),
  index: integer(),
  provider: nil | nil | atom(),
  provider_data: map(),
  signature: nil | nil | binary(),
  text: nil | nil | binary()
}

Functions

from_openai_compatible(raw, provider, fallback_index, default_format \\ "openai-compatible-v1")

@spec from_openai_compatible(map(), atom() | nil, non_neg_integer(), String.t()) ::
  t()

Builds normalized reasoning details from an OpenAI-compatible wire map.

OpenAI-compatible providers such as OpenRouter attach provider-specific fields to reasoning_details entries. ReqLLM keeps common fields on the struct and stores unknown provider fields in provider_data so the entry can be encoded back to the provider without losing wire metadata.

schema()

to_openai_compatible(detail)

@spec to_openai_compatible(t()) :: map()

Encodes normalized reasoning details to an OpenAI-compatible wire map.