# `LLMProxy.Protocol.Request`
[🔗](https://github.com/elixir-vibe/llm_proxy/blob/v0.3.1/lib/llm_proxy/protocol/request.ex#L1)

Boundary parser that normalizes OpenAI Chat, Anthropic Messages, and OpenAI Responses requests.

# `protocol`

```elixir
@type protocol() :: :openai_chat | :anthropic_messages | :openai_responses
```

# `t`

```elixir
@type t() :: %LLMProxy.Protocol.Request{
  body: map(),
  max_tokens: non_neg_integer() | nil,
  messages: [ReqLLM.Message.t()],
  metadata: map() | nil,
  model: String.t() | nil,
  protocol: protocol(),
  reasoning_effort:
    :none | :minimal | :low | :medium | :high | :xhigh | :max | nil,
  stop: [String.t()] | String.t() | nil,
  stream: boolean() | nil,
  tags: [String.t()] | nil,
  temperature: number() | nil,
  tool_choice: term(),
  tools: [map()] | nil,
  top_p: number() | nil
}
```

# `native_body`

```elixir
@spec native_body(t()) :: map()
```

# `parse`

```elixir
@spec parse(protocol(), map()) ::
  {:ok, t()} | {:error, LLMProxy.Protocol.Request.Error.t()}
```

# `user_text`

```elixir
@spec user_text(t()) :: String.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
