---
title: 可直接运行的代码示例
description: Python 与 Node.js 的完整 Chat Completions 程序，包含环境准备、模型选择、错误处理和执行命令。
---

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

文档由 [1折AI](https://1zheai.com/editorial/#publisher) 维护。[来源与纠错说明](https://1zheai.com/editorial/)。

发现错误？[联系支持](mailto:support@1zheai.com)，请附页面地址和问题说明。不要发送密钥或账号资料。

</aside>

下面两个程序完成同一件事：读取环境变量，发出一次非流式文本请求，输出回答或可定位的错误。示例关闭自动重试，方便确认单次请求结果。

## 1. 准备环境变量

在运行程序的同一个终端设置；`ONEZHE_MODEL` 可替换为[密钥可用模型](/docs/api-models/)中的 ID。

<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. 选择语言运行

### Python

安装 `python -m pip install openai`，保存为 `chat.py`，执行 `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

安装 `npm install openai`，保存为 `chat.mjs`，执行 `node chat.mjs`。使用 `.mjs` 扩展名可以直接启用 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. 核对结果

应看到一段回答和结束原因。`finish_reason` 不是 `stop` 时，检查是否为工具调用或截断。SDK 的请求 ID 可能为空；服务器也可能将追踪 ID 放在错误正文里，排错时从脱敏后的原始响应补充。

到[调用日志](/docs/usage-logs/)核对调用。程序的退出状态与是否有普通文本并不能覆盖所有业务成功条件；按你的任务检查结构与内容。

## 继续扩展

- [Chat Completions](/docs/api-chat-completions/)：多轮历史和字段说明。
- [Messages](/docs/api-messages/)：Claude 原生内容块。
- [Responses](/docs/api-responses/)：GPT Responses 与流式事件。
- [图片生成](/docs/api-images/)：生成并保存图片文件。
- [超时与重试](/docs/retries/)：上线前配置失败处理。
