实测说明:本文完整代码在 Windows、Python 3.14.3 环境向 Ahri API 发起两次真实请求,两次均返回 AHRI_OK(2026-10-05 20:29 UTC)。仅验证本文的非流式文本请求,不代表其他 API 或所有 SDK 功能兼容。
快速运行(Windows PowerShell)
将完整代码保存为 first_request.py,然后在同一个终端运行。这里只需 Python,无须 pip 安装。
$env:AHRI_API_KEY="替换成你自己的 Ahri Key"
python first_request.py提示缺少 AHRI_API_KEY 或出现同名 KeyError 时,先在当前终端设置上面的环境变量。请求显式设置 User-Agent 为 AhriTutorial/1.0;本次 Windows 实测中 urllib 默认 User-Agent 返回 403,使用本文标识后成功。鉴权失败仍需检查密钥和账户权限。
适用场景
如果你正在用 Python 编写一个小型服务、脚本或联调工具,又不希望安装第三方 HTTP 库,可以先用标准库 urllib.request 发出一次非流式文本请求。本教程只验证一次聊天请求和文本响应读取,不涉及 Responses、流式输出、图片或其他能力。
前置条件
- Python 3,且运行环境可以访问 HTTPS。
- 准备 Ahri API Key,并通过环境变量
AHRI_API_KEY注入;不要把密钥写入源代码。 - 将下面代码保存为
first_request.py。
操作步骤
- 设置环境变量。Linux 或 macOS 可执行
export AHRI_API_KEY='你的密钥';Windows PowerShell 可执行$env:AHRI_API_KEY='你的密钥'。 - 代码使用已联调的地址
https://ahriapi.com/v1/chat/completions,请求模型为gpt-6.1-sol。 - 使用
Request设置 JSON 请求体、Bearer 鉴权、内容类型和AhriTutorial/1.0User-Agent。 - 运行
python first_request.py,检查终端是否输出AHRI_OK。
完整代码
import json
import os
from urllib.error import HTTPError, URLError
from urllib.request import Request, urlopen
api_key = os.environ["AHRI_API_KEY"]
payload = {"model": "gpt-6.1-sol", "messages": [{"role": "user", "content": "Reply with only AHRI_OK"}]}
request = Request(
"https://ahriapi.com/v1/chat/completions",
data=json.dumps(payload).encode("utf-8"),
headers={"Authorization": f"Bearer {api_key}", "Content-Type": "application/json", "User-Agent": "AhriTutorial/1.0"},
method="POST",
)
try:
with urlopen(request, timeout=90) as response:
result = json.load(response)
content = result["choices"][0]["message"]["content"]
if not isinstance(content, str) or not content.strip():
raise ValueError("The gateway returned no text")
print(content.strip())
except HTTPError as error:
raise SystemExit(f"HTTP {error.code}: check the API key, model access and quota") from error
except URLError as error:
raise SystemExit("Network error: check connectivity and proxy settings") from error成功标准
请求返回 HTTP 成功响应,JSON 中存在 choices[0].message.content,程序打印 AHRI_OK。代码用 json.load(response) 解析响应,设置 90 秒超时,输出时去除首尾空白。
常见问题
- 提示未设置 AHRI_API_KEY:检查变量是否设置在当前终端会话中,并确认变量名完全一致。
- 返回 401 或 403:检查密钥是否有效,以及 Authorization 是否保持
Bearer 你的密钥的格式;不要把尖括号占位符作为实际密钥发送。 - 超时或 URLError:检查网络、代理和 DNS。
urllib.request可能读取环境中的代理配置;必要时检查http_proxy、https_proxy等变量。
来源与边界
HTTP 请求对象、超时、上下文管理器、异常处理和响应字节读取方式参考 Python 官方文档。Ahri 的地址、模型、鉴权格式、请求字段和响应路径来自本次真实联调记录,记录范围仅为非流式文本聊天,不代表其他接口或能力已获得官方兼容性承诺。