# `LeXtract.LLM.ReqLLM`
[🔗](https://github.com/YgorCastor/lextract.git/blob/main/lib/lextract/llm/req_llm.ex#L2)

Default `LeXtract.LLM` adapter, backed by the `req_llm` library.

Only compiled when the optional `req_llm` dependency is present.

Builds the `"provider:model"` model string from `opts[:provider]` and
`opts[:model]`, unwraps `%ReqLLM.Response{}` into plain text or maps, and
applies OpenAI's strict JSON schema shaping when `opts[:provider] == :openai`.
Translates the legacy `opts[:timeout]` key to ReqLLM's `:receive_timeout`
(without clobbering an explicitly passed `:receive_timeout`).

This adapter makes exactly one `ReqLLM` call per invocation; concurrency
is owned by `LeXtract.Annotator`.

---

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