# 快速开始 (/docs/cloud/services/model/quickstart)



用一个云 API Key 调用 `deepseek-flash`，读取实付费用，再找到同一次调用的记录。示例会产生少量费用。

## 1. 准备 Key 与终端 [#1-准备-key-与终端]

在[控制台 → API Keys](https://console.deepraxis.ai/keys)点击「创建 Key」，填写名称并创建，将 Key 安全注入当前终端的 `PRAXIS_API_KEY` 环境变量。不要写入代码或日志。已有 Key 可直接使用。

准备 Python 3.10+ 和 [uv](https://docs.astral.sh/uv/getting-started/installation/)，在 macOS / Linux 终端执行：

```bash
test -n "${PRAXIS_API_KEY:-}"
```

期望：退出码 0；退出码 1 表示变量未设置，先设置再继续。示例默认使用 `https://api.deepraxis.ai`；切换环境时，将 `PRAXIS_API_BASE` 设为对应 API 域名，不带末尾斜杠或 API 路径。

## 2. 发出请求并读取费用 [#2-发出请求并读取费用]

保存为 `quickstart.py`，在该文件所在目录执行 `uv run -q --no-project --with openai --with anthropic --with google-genai python quickstart.py`。

```python
import json
import os
from pathlib import Path
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["PRAXIS_API_KEY"],
    base_url=os.environ.get("PRAXIS_API_BASE", "https://api.deepraxis.ai") + "/openai/v1",
    timeout=90.0,
    max_retries=0,
)
raw = client.chat.completions.with_raw_response.create(
    model="deepseek-flash",
    messages=[{"role": "user", "content": "Reply with exactly: Hello Praxis."}],
    max_tokens=256,
)
reply = raw.parse()
usage = reply.usage.model_dump()
request_id = raw.headers.get("x-request-id")
generation_id = raw.headers.get("x-praxis-generation-id")
assert raw.status_code == 200 and reply.choices[0].message.content
assert request_id and generation_id
assert isinstance(usage.get("cost"), (int, float)) and usage["cost"] >= 0
print(reply.choices[0].message.content)
print("usage:", usage)
print("X-Request-Id:", request_id)
print("X-Praxis-Generation-Id:", generation_id)
Path("quickstart-result.json").write_text(json.dumps({
    "request_id": request_id, "generation_id": generation_id, "cost": usage["cost"],
}))
```

期望：退出码 0，输出非空回答（通常为 `Hello Praxis.`）、`usage` 和两个 ID，并生成 `quickstart-result.json`。该文件只保存本次调用的 ID 与费用，不含 Key。

`usage` 包含输入和输出 token 数；`usage.cost` 是本次实付美元金额，不是每百万 token 的单价。不要把缺失费用当成零。字段定义见 [Chat Completions API](/docs/api/compatible/openai/createChatCompletion)。

## 3. 找到这次调用 [#3-找到这次调用]

打开[控制台 → 模型 → 调用日志](https://console.deepraxis.ai/call-logs)。在「按 X-Request-Id / Generation ID 查找」输入框粘贴上一步的 `X-Request-Id`，按 Enter。此路径与控件名核对于 2026-10-13 的 Console。

期望：出现模型为 `deepseek-flash` 的本次调用，可查看状态、用量与费用。记录可能延迟几秒；使用与 Key 相同的账号及环境，并确保时间范围包含刚才的调用。

不使用浏览器时，可用下面的等价硬验证。保存为 `verify-generation.py`，在同一目录执行 `uv run -q --no-project --with openai --with anthropic --with google-genai python verify-generation.py`。

```python
import json
import os
import time
from decimal import Decimal
from pathlib import Path
import httpx

saved = json.loads(Path("quickstart-result.json").read_text())
base = os.environ.get("PRAXIS_API_BASE", "https://api.deepraxis.ai")
with httpx.Client(timeout=60.0) as client:
    for attempt in range(10):
        response = client.get(
            base + "/model/v1/generation",
            params={"id": saved["generation_id"]},
            headers={"Authorization": "Bearer " + os.environ["PRAXIS_API_KEY"]},
        )
        if response.status_code != 404:
            break
        time.sleep(3)
    response.raise_for_status()
    record = response.json()
    assert record["id"] == saved["generation_id"]
    assert record["model"] == "deepseek-flash"
    assert abs(Decimal(str(record["cost"])) - Decimal(str(saved["cost"]))) <= Decimal("0.0000005")
    print("Verified generation:", record["id"])
    print("cost:", record["cost"])
    print("X-Request-Id:", response.headers.get("x-request-id"))
```

期望：退出码 0，输出 `Verified generation` 和按美元六位小数记录的费用；脚本允许相应舍入差异。查询使用 `X-Praxis-Generation-Id`，不是 `X-Request-Id` 或响应正文的 `id`；详见[生成记录 API](/docs/api/native/model/getGeneration)。

## 失败分支 [#失败分支]

* `404` 查询记录：记录尚未可查时，脚本每 3 秒重试，最多 10 次；仍失败则保留两个 ID，检查 Key、环境及生成 ID 是否来自同一次调用，再查询。
* `Model "gpt-4o" does not exist.`：模型 ID 不自动映射；使用本页的 `deepseek-flash` 或[目录](/docs/cloud/services/model/catalog)中的 ID。

接下来可使用[流式响应](/docs/cloud/services/model/guides/streaming)或[工具调用](/docs/cloud/services/model/guides/tool-calling)。

[API 参考 →](/docs/api/native/model) · [Cookbook →](/docs/cookbook)
