cloudflare / cloudflare/ai

Unified provider sends `max_tokens` to OpenAI reasoning models

Ouverte
#653 0 commentaires 0 réactions 0 personnes assignées Voir sur GitHub
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

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.