# Razonamiento

> Pide al modelo que piense antes de responder y lee el razonamiento que devuelve.


Cada modelo lista los niveles de esfuerzo que acepta en `capabilities.reasoning_efforts` (consulta [Modelos](/es/getting-started/models)). Más esfuerzo consume más tokens de salida, que se cobran a la tarifa de salida. Si omites el campo, el modelo usa su valor por defecto.

| API | Campo |
|---|---|
| Chat completions | `reasoning_effort` |
| Responses | `reasoning.effort` |
| Messages | `thinking: {"type": "enabled", "budget_tokens": N}` o `{"type": "adaptive"}` con `output_config.effort` |

```python test
import os
from openai import OpenAI

client = OpenAI(base_url="https://api.notholy.com/v1", api_key=os.environ["NOTHOLY_API_KEY"])

r = client.chat.completions.create(
    model="notholy-specter",
    reasoning_effort="high",
    messages=[{"role": "user", "content": "Is a JWT signed with alg none ever acceptable? Answer in one line."}],
)
print(r.choices[0].message.content)
```

En chat completions y en Responses, un nivel que el modelo no lista devuelve `400 invalid_request`. Messages asigna `thinking` y `output_config.effort` al nivel más cercano que tenga el modelo: un presupuesto de 16000 tokens o más es high, de 4000 o más es medium, por debajo es low, y `adaptive` es medium.

El texto del razonamiento vuelve como `reasoning_content` en chat completions, como items `reasoning` en Responses y como bloques `thinking` en Messages. Cuando reenvías la conversación, el razonamiento de los turnos anteriores se descarta.

## Siguientes pasos

- [Buenas prácticas de costo](/es/guides/cost)
