GPT-5.5 vs GPT-5.6 Luna
Lequel choisir, et quand
gpt-5.6-luna est de très loin le moins cher : $0.2 contre $5 par million de tokens en entrée, $1.2 contre $30 en sortie et $0.02 contre $0.5 pour les lectures de cache, soit 25 fois moins sur chaque ligne, alors que les deux partagent le même contexte de 1050000 tokens et 128000 tokens de sortie maximum. gpt-5.5 conserve le computer use et les appels d’outils parallèles, que gpt-5.6-luna ne liste pas : c’est donc celui à fixer pour le travail piloté par des outils ou par l’écran ; pour du texte et du code en volume ordinaire, le modèle récent offre la même fenêtre 25 fois moins cher.
Benchmarks
41 mesurés sur les deux.
Chiffres publiés par les fournisseurs : Alibaba (Qwen) Anthropic ByteDance DeepSeek Google MiniMax Moonshot OpenAI Tencent Z.ai
Tarifs
| GPT-5.5 | GPT-5.6 Luna | Δ | |
|---|---|---|---|
| Entrée / 1M de tokens | $5 | $0.2 | 25× |
| Sortie / 1M de tokens | $30 | $1.2 | 25× |
| Lecture de cache / 1M de tokens | $0.5 | $0.02 | 25× |
| Écriture de cache | pas de frais distincts | pas de frais distincts | - |
Tarifs relevés dans le catalogue en direct à la génération du site ; la page de chaque modèle affiche la grille tarifaire à jour.
Leur position : prix en entrée pour 1M de tokens, parmi les 78 modèles de chat facturés dans cette unité (échelle logarithmique)
Capacités
| GPT-5.5 | GPT-5.6 Luna | |
|---|---|---|
| Appel d'outils | oui | oui |
| Contrôle de la réflexion | configurable | configurable |
| Sortie structurée | oui | oui |
| Mise en cache des prompts | implicite (automatique) | implicite (automatique) |
| Durée de vie du cache | 5-10m, up to 1h | 5-10m, up to 1h |
| Préfixe minimal mis en cache | 1024 tokens | 1024 tokens |
Spécifications
| GPT-5.5 | GPT-5.6 Luna | |
|---|---|---|
| Modalités d'entrée | texte image | texte image |
| Modalités de sortie | texte | texte |
| Date de sortie | 2026-04-24 | 2026-07-09 |
| Coupure des connaissances | 2025-12 | 2026-02 |
| Fenêtre de contexte | 1.1M | 1.1M |
| Sortie maximale | 128K | 128K |
| Paramètre de réflexion | reasoning.effort | reasoning.effort |
| Valeurs acceptées | reasoning.effort
| reasoning.effort
|
| Valeur par défaut | medium | medium |
Les spécifications sont reprises de la documentation de chaque fournisseur ; quand un fournisseur ne publie pas une valeur, la ligne est omise et non déduite. Sources complètes : GPT-5.5 · GPT-5.6 Luna
Un prompt, deux modèles, mesurés via la passerelle
GPT-5.5 réussi · 3 sentences
Enabling reasoning makes the model do additional internal “thinking” before producing the final answer, which consumes more compute and billable tokens. Even if user volume and output length stayed the same, each request now costs more because the model is spending extra capacity to solve the problem. In short, we bought higher-quality answers, but the unit cost per answer increased enough to double the total LLM bill.
sortie 131 tok (+42 réflexion) latence 2.9 s
GPT-5.6 Luna réussi · 3 sentences
Enabling reasoning causes the model to use substantially more computational steps and generated tokens per request, even when the visible answer is similar. Because our provider charges based largely on token consumption and compute, that increased processing translated into roughly twice the cost. We can control the expense by reserving reasoning for complex tasks, setting token and effort limits, and monitoring cost per successful outcome.
sortie 146 tok (+60 réflexion) latence 3.1 s
Le respect de la consigne (exactement trois phrases, ça se compte), l'adaptation au public visé (le registre d'un directeur financier) et l'écart de facturation dû à la réflexion masquée, que révèlent les compteurs de tokens ci-dessous.
GPT-5.5 réussi · 8/8 cases
```python def longest_run(xs): if not xs: return 0 best = 1 cur = 1 for i in range(1, len(xs)): if xs[i] == xs[i - 1]: cur += 1 else: cur = 1 best = max(best, cur) return best ``` The bug was that `cur` and `best` were counting the number of equal *adjacent comparisons*, not the number of items in the run. A run of one item has length `1`, but the original code initialized both values to `0`, so single-element inputs returned `0`. Similarly, a run like `[2, 2, 2]` has length `3`, but only two adjacent equal comparisons, so the result was off by one. Also, `best` should be updated after every element is processed, not only inside the equality branch, so runs that continue through the final index are properly considered.
sortie 401 tok (+182 réflexion) latence 5.9 s
GPT-5.6 Luna réussi · 8/8 cases
```python def longest_run(xs): if not xs: return 0 best = cur = 1 for i in range(1, len(xs)): if xs[i] == xs[i - 1]: cur += 1 else: best = max(best, cur) cur = 1 return max(best, cur) ``` The bug is that `cur` counts equal *transitions* rather than the number of items in the current run, so a single-element run returns `0` and a run of length `n` returns `n - 1`; additionally, `best` is only updated when a run is interrupted, so a run continuing through the final element is not finalized before returning. Initializing the current run to one item, resetting it to one after a change, and taking a final `max` fixes both issues.
sortie 356 tok (+161 réflexion) latence 4.7 s
La justesse réelle du correctif (il s'exécute), la densité de l'explication et l'économie de tokens sur une tâche bien délimitée.
GPT-5.5 réussi · 5/5 fields, guidance "withheld pending the Q4 close"
{"company":"Meridian Robotics","quarter":"September quarter","revenue_usd_m":412,"growth_pct":11,"guidance":"withheld pending the Q4 close"}
sortie 557 tok (+512 réflexion) latence 6.7 s
GPT-5.6 Luna réussi · 5/5 fields, guidance "Withheld pending the Q4 close"
{"company":"Meridian Robotics","quarter":"September quarter","revenue_usd_m":412,"growth_pct":null,"guidance":"Withheld pending the Q4 close"}
sortie 227 tok (+181 réflexion) latence 3.6 s
Le respect du schéma (aucun champ inventé), la tentation d'halluciner (le texte indique que la guidance n'est pas communiquée) et les différences entre les mécanismes de sortie structurée.
GPT-5.5 réussi · 120 words, 0 banned, 1 question
Today we’re introducing Prompt Cache Routing, a new API gateway feature that stores reusable prompt prefixes and applies them across leading model providers. Teams can reduce latency, lower token spend, and keep application logic portable without rewriting requests for each vendor. Have you ever paid twice to send the same system instructions? With shared cache keys, provider-aware metadata, and automatic fallback handling, the gateway detects eligible prompt segments, reuses cached context, and records savings in your existing observability dashboards. Policies let admins set retention windows, data boundaries, and provider allowlists by workspace or environment. Prompt Cache Routing is available now in beta for Pro and Enterprise customers, with SDK support, Terraform resources, and clear migration guides included at launch worldwide.
sortie 859 tok (+700 réflexion) latence 8.7 s
GPT-5.6 Luna réussi · 120 words, 0 banned, 1 question
Introducing PromptCache, an API gateway feature that caches prompts across providers, helping teams reduce latency, control spend, and deliver consistent results. How much faster could your applications respond when repeated prompts are served from a shared cache instead of being sent upstream? PromptCache supports provider-aware routing, configurable time-to-live policies, encrypted storage, cache invalidation, and usage analytics through one operational layer. It works with language-model providers while preserving your authentication, observability, and fallback workflows. Developers can enable caching by endpoint, model, tenant, or prompt pattern, then monitor hit rates and savings in real time. Built for production workloads, PromptCache gives platform teams controls for performance and cost without requiring application rewrites. […]
sortie 948 tok (+778 réflexion) latence 8.0 s
Le respect des contraintes (nombre de mots, liste de mots interdits, une seule question), l'empreinte stylistique et la maîtrise de la longueur.
Passez de l'un à l'autre en changeant une seule ligne
Les deux identifiants figurent dans chaque onglet ci-dessous : les deux lignes surlignées sont le seul changement. Même endpoint, même clé, même format de requête.
from openai import OpenAI
client = OpenAI(
base_url="https://synthorai.io/v1",
api_key="sk-syn-...",
)
resp = client.chat.completions.create(
model="gpt-5.5",
# model="gpt-5.6-luna", # décommentez cette ligne, commentez celle du dessus
messages=[{"role": "user", "content": "Summarize this diff"}],
reasoning_effort="medium",
)
print(resp.choices[0].message.content)import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://synthorai.io/v1",
apiKey: "sk-syn-...",
});
const resp = await client.chat.completions.create({
model: "gpt-5.5",
// model: "gpt-5.6-luna", // décommentez cette ligne, commentez celle du dessus
messages: [{ role: "user", content: "Summarize this diff" }],
reasoning_effort: "medium",
});
console.log(resp.choices[0].message.content);curl https://synthorai.io/v1/chat/completions \
-H "Authorization: Bearer sk-syn-..." \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.5",
# "model": "gpt-5.6-luna", # décommentez cette ligne, commentez celle du dessus
"messages": [{"role": "user", "content": "Hello"}],
"reasoning_effort": "medium"
}'package main
import (
"context"
"fmt"
"github.com/openai/openai-go/v3"
"github.com/openai/openai-go/v3/option"
)
func main() {
client := openai.NewClient(
option.WithBaseURL("https://synthorai.io/v1"),
option.WithAPIKey("sk-syn-..."),
)
resp, _ := client.Chat.Completions.New(context.TODO(), openai.ChatCompletionNewParams{
Model: "gpt-5.5",
// Model: "gpt-5.6-luna", // décommentez cette ligne, commentez celle du dessus
Messages: []openai.ChatCompletionMessageParamUnion{
openai.UserMessage("Summarize this diff"),
},
ReasoningEffort: openai.ReasoningEffortMedium,
})
fmt.Println(resp.Choices[0].Message.Content)
}import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.*;
import com.openai.models.ReasoningEffort;
OpenAIClient client = OpenAIOkHttpClient.builder()
.baseUrl("https://synthorai.io/v1")
.apiKey("sk-syn-...")
.build();
ChatCompletion resp = client.chat().completions().create(
ChatCompletionCreateParams.builder()
.model("gpt-5.5")
// .model("gpt-5.6-luna") // décommentez cette ligne, commentez celle du dessus
.addUserMessage("Summarize this diff")
.reasoningEffort(ReasoningEffort.MEDIUM)
.build());
System.out.println(resp.choices().get(0).message().content().orElse(""));FAQ
Lequel est le moins cher, GPT-5.5 ou GPT-5.6 Luna ?
GPT-5.6 Luna est moins cher sur la ligne « Entrée / 1M de tokens » ($0.2 contre $5, soit un écart de 25×). D'autres lignes peuvent dire l'inverse : le tableau ci-dessus donne la grille tarifaire complète, et le coût réel dépend de la composition de votre trafic.
Puis-je faire un test A/B entre GPT-5.5 et GPT-5.6 Luna sans deux intégrations ?
Oui. Les deux passent par le même endpoint compatible OpenAI, avec une seule clé API. Pour passer de l'un à l'autre, il suffit de changer l'identifiant du modèle, soit une ligne : vous pouvez donc envoyer une part du trafic à chacun et comparer directement les factures.
GPT-5.5 et GPT-5.6 Luna prennent-ils en charge la mise en cache des prompts ?
Oui. Les deux facturent les lectures de cache moins cher que leur tarif d'entrée : une charge de travail dont le préfixe est déjà en cache coûte donc moins que ne le laissent penser les tarifs publics. Les lignes de lecture de cache figurent dans le tableau des tarifs ci-dessus.