Python · OpenAI
Python 接入 Tikway:用标准库调用 OpenAI 兼容 Chat Completions API
更新日期:
用 Python 标准库完成 Tikway 文本对话 API 的首次接入,包含环境变量、请求体、结果读取和常见错误排查。无需安装第三方 SDK,适合给脚本或后端增加一段 AI 文本生成功能。
先确认地址、模型和 API Key
Tikway 提供 AI 模型 API 接入。本例使用它的 OpenAI 兼容 Chat Completions 接口,以一个 Tikway API Key 发出文本对话请求。先在官网控制台创建或取得自己的 API Key,并在模型目录确认所选模型支持该接口,以及当前参数和计费规则。
本例采用官网首页展示的 openai/gpt-5.4-mini。这是 Tikway 的模型标识,复制时保留 openai/ 前缀;更换模型时,从目录复制准确标识。不同模型支持的参数可能不同,不要只替换型号后继续沿用所有可选参数。
| 项目 | 本例配置 |
|---|---|
| 方法 | POST |
| 完整请求地址 | https://api.tikway.ai/v1/chat/completions |
| 鉴权 | Authorization: Bearer <你的 Tikway API Key> |
| 请求格式 | Content-Type: application/json |
| 最小主要字段 | model、至少一条 messages |
| 返回方式 | stream: false,接收普通 JSON |
这里的完整请求地址已经包含 /v1/chat/completions。如果之后改用 SDK,文档给出的 base URL 是 https://api.tikway.ai/v1,两种配置不要混用。
1. 安装 Python,配置环境变量
安装 Python 3.10 或更新版本,并确认终端中的 python --version 能输出版本。本例只使用 Python 自带的 urllib、json 和 os,不需要执行 pip install。
在终端设置 API Key。下方字符串是占位符,应替换为你自己的 Key,不要把 Key 写入代码仓库或文章评论。
Windows PowerShell:
$env:TIKWAY_API_KEY = "替换为你的 Tikway API Key"
macOS / Linux:
export TIKWAY_API_KEY='替换为你的 Tikway API Key'
这些命令只影响当前终端及其子进程。接下来请在同一个终端运行脚本。
2. 保存并运行完整示例
把下面代码保存为 tikway_chat.py,也可使用配套脚本。脚本读取环境变量,发送一条短提示,然后输出第一条回答。运行脚本会发起真实模型请求,费用和额度以你的账户及模型目录为准。
import json
import os
import sys
from urllib import error, request
ENDPOINT = "https://api.tikway.ai/v1/chat/completions"
def main():
api_key = os.environ.get("TIKWAY_API_KEY", "").strip()
if not api_key:
raise RuntimeError("请先在当前终端设置 TIKWAY_API_KEY。")
payload = {
"model": os.environ.get("TIKWAY_MODEL", "").strip() or "openai/gpt-5.4-mini",
"messages": [
{"role": "user", "content": "请用一句中文解释什么是 API。"}
],
"stream": False,
}
req = request.Request(
ENDPOINT,
data=json.dumps(payload, ensure_ascii=False).encode("utf-8"),
headers={
"Authorization": f"Bearer {api_key}",
"Content-Type": "application/json",
},
method="POST",
)
try:
with request.urlopen(req, timeout=60) as response:
result = json.loads(response.read().decode("utf-8"))
except error.HTTPError as exc:
request_id = exc.headers.get("x-request-id", "未提供")
detail = "请查看错误码文档。"
try:
body = json.loads(exc.read().decode("utf-8"))
api_error = body.get("error", {}) if isinstance(body, dict) else {}
if isinstance(api_error, dict):
code = api_error.get("code") or api_error.get("type") or "unknown"
message = str(api_error.get("message", ""))[:300]
detail = f"{code}: {message}"
except (ValueError, UnicodeError):
pass
raise RuntimeError(
f"HTTP {exc.code};request_id={request_id};{detail}"
) from None
except error.URLError as exc:
raise RuntimeError(f"网络或 TLS 连接失败:{exc.reason}") from None
if not isinstance(result, dict):
raise RuntimeError("响应不是 JSON 对象,请检查接口地址。")
choices = result.get("choices")
if not isinstance(choices, list) or not choices:
raise RuntimeError("响应没有可读取的 choices。")
choice = choices[0]
message = choice.get("message", {}) if isinstance(choice, dict) else {}
text = message.get("content") if isinstance(message, dict) else None
if not isinstance(text, str):
raise RuntimeError("未返回文本 content,请检查模型能力及响应结构。")
print(text)
if __name__ == "__main__":
try:
main()
except (RuntimeError, TimeoutError, ValueError, UnicodeError) as exc:
print(f"调用未完成:{exc}", file=sys.stderr)
sys.exit(1)
运行:
python tikway_chat.py
返回的具体文字由模型生成。普通文本对话通常从 choices[0].message.content 读取;如果使用工具调用等其他能力,需要按对应的响应字段处理。
代码暂时省略 temperature、输出长度等可选设置,让首次接入只涉及地址、鉴权和消息结构。需要增加参数时,先确认当前模型的参数要求;接口兼容并不代表每个模型接受完全相同的参数。
3. 如何更换模型或增加对话上下文
如果目录中另一个模型支持该接口,可以设置 TIKWAY_MODEL,不用修改 API Key 读取逻辑。例如在 PowerShell 中:
$env:TIKWAY_MODEL = "从模型目录复制的完整模型标识"
python tikway_chat.py
多轮对话则将历史消息按顺序加入 messages。每次请求都应包含需要模型参考的上下文:
[
{"role": "user", "content": "请解释什么是 API。"},
{"role": "assistant", "content": "API 是程序之间交换数据或调用功能的接口。"},
{"role": "user", "content": "再举一个天气查询的例子。"}
]
这里的助手文字只是说明消息格式的示例。历史消息越多,请求上下文也越长,应按模型的上下文限制和计费规则控制数量。
4. 判断结果是否完整,记录必要用量
能读取 message.content 只说明取得了文本。接入实际业务后,还应检查第一条 choice 的 finish_reason:length 通常表示触及输出限制,tool_calls 则需要应用继续处理工具调用。不要把一段被截断的回答直接当作完整任务结果。
响应可能还包含 usage.prompt_tokens、usage.completion_tokens 与其他细分用量。可以保存这些统计及响应头 x-request-id,供费用复算和排错使用;不要把整个带有用户对话的请求体默认写进公开日志。
如果终端提示 Key 未设置,可以先只检查变量是否存在,而不显示它的值:
python -c "import os; print('set' if os.getenv('TIKWAY_API_KEY', '').strip() else 'missing')"
脚本把未设置、空白的 TIKWAY_MODEL 视为使用示例默认值;模型的有效标识仍需从目录确认。若移入 Web 服务,将 Key 保留在服务端,并让前端通过自己的后端发起请求。
常见错误怎么排查
先同时查看 HTTP 状态、error.code / error.type 和错误消息。状态码只能给出大类,不能单独说明具体原因。
| 现象 | 排查方法 |
|---|---|
未设置 TIKWAY_API_KEY |
在运行脚本的同一个终端重新设置环境变量。 |
401 |
检查 Key 是否有效、是否包含多余空格,以及是否使用 Bearer 鉴权。 |
400 或 422 |
检查 model、消息结构和所选模型支持的参数。 |
403 |
检查 Key 或账户对所请求资源的访问权限。 |
404 |
核对完整路径和模型标识,避免重复添加 /v1。 |
429 |
阅读具体错误字段,区分额度不足与请求限流,再采取充值、降低频率等对应措施。 |
5xx 或超时 |
保留请求 ID 和发生时间进行排查;不要无限重试。 |
| 返回了 JSON,但没有文本 | 查看是否选择了合适的文本模型,或是否返回工具调用等其他内容。 |
脚本不会自动重试。请求超时后,客户端无法仅凭超时判断服务端是否已经处理请求;重复发送前应核对账户记录。
接下来阅读什么
- Tikway 模型目录:查找准确的模型标识、能力和参数。
- 快速开始:了解初次接入流程。
- OpenAI 兼容请求协议:核对请求地址和接入方式。
- 网关鉴权:检查 Key 与请求头的配置。
- 错误码说明:按具体错误内容排查。