Unified provider sends `max_tokens` to OpenAI reasoning models
- Langage dominant
- TypeScript
- Étoiles
- 1.2k
- Forks
- 345
- Merge moyen
- 13 h 31 min
- PR mergées (30 j)
- 1
Description
`ai-gateway-provider`’s Unified route currently creates its models via `@ai-sdk/openai-compatible`:
```ts
const unified = createUnified();
const model = aigateway(unified('openai/o1-mini'));
```
When used with AI SDK’s standardized `maxOutputTokens`, the outgoing Chat Completions request contains:
```json
{
"model": "openai/o1-mini",
"max_tokens": 1000
}
```
OpenAI reasoning models reject this field and require `max_completion_tokens` instead:
```text
Unsupported parameter: 'max_tokens' is not supported with this model.
Use 'max_completion_tokens' instead.
```
The native Cloudflare OpenAI adapter does not have the issue:
```ts
const openai = createOpenAI();
const model = aigateway(openai.chat('o1-mini'));
```
That route uses `@ai-sdk/openai`, which performs the correct OpenAI-specific parameter mapping.
Suggested fix: have `createUnified()` supply `transformRequestBody` to its `createOpenAICompatible` instance. When Cloudflare’s model-capability metadata identifies an OpenAI reasoning model, move `max_tokens` to `max_completion_tokens`.
Guide de contribution
Ouvrir le guide de contribution
Piste de recherche
Commencez par createUnified() et son instance createOpenAICompatible, puis suivez la manière dont transformRequestBody reçoit les métadonnées de capacité du modèle de Cloudflare et mappe maxOutputTokens standardisé. Reproduisez la requête openai/o1-mini et vérifiez que les modèles de raisonnement envoient max_completion_tokens, tandis que les autres modèles conservent leur comportement actuel des paramètres.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Évaluation
- Stack technique
- typescript
- Domaine
- ai, api
- Type d'issue
- Bug
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Activité
- Active
- Clarté
- Plutôt claire
- Accessibilité débutants
- 70/100