---
title: "Exemples de code exécutables"
description: "Programmes complets de Chat Completions en Python et Node.js, incluant la préparation de l'environnement, le choix du modèle, la gestion des erreurs et les commandes d'exécution."
headingIds: {"1. Préparer les variables d’environnement":"section-1","2. Choisir le langage et exécuter":"section-2","Python":"section-3","Node.js":"section-4","3. Vérifier les résultats":"section-5","Pour aller plus loin":"section-6"}
---

<aside className="docs-publication" data-pagefind-ignore>

Documentation maintenue par [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Sources et corrections](https://1zheai.com/en/editorial/).

Vous avez trouvé une erreur ? [Contactez l'assistance](mailto:support@1zheai.com) en indiquant l'adresse de la page et une description. N'envoyez pas de clés API ni d'identifiants de compte.

</aside>
Les deux programmes suivants font la même chose : lire les variables d'environnement, émettre une requête texte non en flux, et afficher la réponse ou une erreur localisable. Les exemples désactivent la nouvelle tentative automatique pour faciliter la vérification du résultat d'une seule requête.

## 1. Préparer les variables d’environnement

À définir dans le même terminal que celui où le programme s'exécute ; `ONEZHE_MODEL` peut être remplacé par l'ID dans [modèles disponibles](/fr/docs/api-models/).

<CodeGroup>
```bash title="macOS / Linux"
export ONEZHE_API_KEY="sk-你的Key"
export ONEZHE_MODEL="gpt-5.6-sol"
```
```powershell title="Windows PowerShell"
$env:ONEZHE_API_KEY = "sk-你的Key"
$env:ONEZHE_MODEL = "gpt-5.6-sol"
```
</CodeGroup>

## 2. Choisir le langage et exécuter

### Python

Installer `python -m pip install openai`, enregistrer sous `chat.py`, exécuter `python chat.py`.

```python
import os
import sys
import openai

api_key = os.environ.get("ONEZHE_API_KEY")
if not api_key:
    sys.exit("请先设置 ONEZHE_API_KEY 环境变量。")

client = openai.OpenAI(
    api_key=api_key,
    base_url="https://1zheai.com/v1",
    timeout=120.0,
    max_retries=0,
)
try:
    response = client.chat.completions.create(
        model=os.environ.get("ONEZHE_MODEL", "gpt-5.6-sol"),
        messages=[{"role": "user", "content": "用一句中文解释 DNS。"}],
    )
    if not response.choices:
        sys.exit("响应没有 choices，请检查响应协议。")
    choice = response.choices[0]
    print(choice.message.content or "本次响应没有普通文本。")
    print("finish_reason:", choice.finish_reason)
    print("response_id:", response.id)
except openai.APIStatusError as exc:
    print("HTTP:", exc.status_code, "request_id:", exc.request_id, file=sys.stderr)
    print("请查看控制台日志和错误码文档；不要公开密钥。", file=sys.stderr)
    sys.exit(1)
except openai.APIConnectionError:
    sys.exit("连接失败或超时：检查网络与代理，再核对调用日志。")
```

### Node.js

Installer `npm install openai`, enregistrer sous `chat.mjs`, exécuter `node chat.mjs`. L'extension `.mjs` active directement les ES Module.

```javascript
import OpenAI from "openai";

if (!process.env.ONEZHE_API_KEY) {
  console.error("请先设置 ONEZHE_API_KEY 环境变量。");
  process.exit(1);
}
const client = new OpenAI({
  apiKey: process.env.ONEZHE_API_KEY,
  baseURL: "https://1zheai.com/v1",
  timeout: 120_000,
  maxRetries: 0,
});
try {
  const response = await client.chat.completions.create({
    model: process.env.ONEZHE_MODEL || "gpt-5.6-sol",
    messages: [{ role: "user", content: "用一句中文解释 DNS。" }],
  });
  const choice = response.choices[0];
  if (!choice) throw new Error("响应没有 choices，请检查响应协议。");
  console.log(choice.message.content || "本次响应没有普通文本。");
  console.log("finish_reason:", choice.finish_reason);
  console.log("response_id:", response.id);
} catch (error) {
  if (error instanceof OpenAI.APIError) {
    console.error("HTTP:", error.status, "request_id:", error.request_id);
    console.error("请检查网络、控制台日志和错误码文档。");
  } else {
    console.error(error instanceof Error ? error.message : "未知错误");
  }
  process.exitCode = 1;
}
```

## 3. Vérifier les résultats

Vous devriez voir une réponse et la raison d'arrêt. Lorsque `finish_reason` n'est pas `stop`, vérifiez s'il s'agit d'un appel d'outil ou d'une troncature. L'ID de requête du SDK peut être vide ; le serveur peut également placer l'ID de traçage dans le corps de l'erreur, à compléter depuis la réponse brute désensibilisée lors du débogage.

Consultez [les journaux d'appel](/fr/docs/usage-logs/) pour vérifier les appels. Le code de sortie du programme et la présence ou non de texte normal ne couvrent pas toutes les conditions de succès métier ; vérifiez la structure et le contenu selon votre tâche.

## Pour aller plus loin

- [Chat Completions](/fr/docs/api-chat-completions/) : historique multi-tours et description des champs.
- [Messages](/fr/docs/api-messages/) : blocs de contenu natifs de Claude.
- [Responses](/fr/docs/api-responses/) : GPT Responses et événements en flux.
- [Génération d'images](/fr/docs/api-images/) : générer et enregistrer des fichiers image.
- [Délais d'attente et nouvelles tentatives](/fr/docs/retries/) : configurer la gestion des échecs avant la mise en production.
