---
title: "Ejemplos de código ejecutables directamente"
description: "Programas completos de Chat Completions en Python y Node.js, con preparación del entorno, selección de modelo, manejo de errores y comandos de ejecución."
headingIds: {"1. Preparar las variables de entorno":"section-1","2. Ejecutar según el lenguaje elegido":"section-2","Python":"section-3","Node.js":"section-4","3. Verificar los resultados":"section-5","Continuar ampliando":"section-6"}
---

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

Documentación mantenida por [1ZheAI](https://1zheai.com/en/editorial/#publisher). [Fuentes y correcciones](https://1zheai.com/en/editorial/).

¿Encontraste un error? [Contacta con soporte](mailto:support@1zheai.com) indicando la dirección de la página y una descripción. No envíes claves de API ni credenciales de cuenta.

</aside>
Los dos programas siguientes hacen lo mismo: leer variables de entorno, realizar una solicitud de texto no en streaming y mostrar la respuesta o un error localizable. Los ejemplos desactivan los reintentos automáticos para facilitar la verificación del resultado de una sola solicitud.

## 1. Preparar las variables de entorno

Configúralas en la misma terminal desde la que ejecutarás el programa; `ONEZHE_MODEL` puede sustituirse por el ID en[los modelos disponibles con clave](/es/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. Ejecutar según el lenguaje elegido

### Python

Instala `python -m pip install openai`, guárdalo como `chat.py` y ejecuta `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

Instala `npm install openai`, guárdalo como `chat.mjs` y ejecuta `node chat.mjs`. Usar la extensión `.mjs` permite habilitar directamente 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. Verificar los resultados

Deberías ver una respuesta y la razón de finalización. Cuando `finish_reason` no sea `stop`, comprueba si se trata de una llamada a herramientas o de una truncación. El ID de solicitud del SDK puede estar vacío; el servidor también puede colocar el ID de seguimiento en el cuerpo del error; para depurar, complétalo a partir de la respuesta original anonimizada.

Consulta[el registro de llamadas](/es/docs/usage-logs/) para verificar las llamadas. El estado de salida del programa y la presencia o ausencia de texto normal no cubren todas las condiciones de éxito del negocio; revisa la estructura y el contenido según tu tarea.

## Continuar ampliando

- [Chat Completions](/es/docs/api-chat-completions/): historial de múltiples turnos y descripción de campos.
- [Messages](/es/docs/api-messages/): bloques de contenido nativos de Claude.
- [Responses](/es/docs/api-responses/): GPT Responses y eventos de streaming.
- [Generación de imágenes](/es/docs/api-images/): generar y guardar archivos de imagen.
- [Tiempo de espera y reintentos](/es/docs/retries/): configurar el manejo de fallos antes de entrar en producción.
