跳到主要内容

你的第一个生产环境 API 调用(成本感知)

进阶

一个玩具级的 API 调用 只需一行代码。而生产环境的调用则需要处理错误、流式输出、监控成本,并妥善保管密钥。让我们一步步把它构建出来。

第 1 步 — 从配置中读取密钥与模型

export ANTHROPIC_API_KEY="sk-ant-..." # never in source control

模型 ID 放在配置里,而不是散落在各处的字面量中,这样迁移就变得轻而易举(原因)。要慎重选择 —— 选择模型

第 2 步 — 一个具备容错能力的流式调用

import os, time, random, anthropic
client = anthropic.Anthropic()
MODEL = os.environ.get("CLAUDE_MODEL", "claude-sonnet-4-6")

def ask_stream(prompt, system=None, max_tokens=1024):
for attempt in range(5):
try:
with client.messages.stream(
model=MODEL, max_tokens=max_tokens,
system=system or anthropic.NOT_GIVEN,
messages=[{"role": "user", "content": prompt}],
) as stream:
for text in stream.text_stream:
print(text, end="", flush=True)
final = stream.get_final_message()
print()
usage = final.usage
print(f"\n[tokens in/out: {usage.input_tokens}/{usage.output_tokens}]")
return final
except (anthropic.RateLimitError, anthropic.APIStatusError):
if attempt == 4: raise
time.sleep(min(2 ** attempt + random.random(), 30))

第 3 步 — 留意成本

  • 记录 token 用量(如上),这样你就能看清每次调用的开销。
  • 合理设置 max_tokens 和模型;用精炼的提示词控制输入。
  • 对于反复出现的稳定前缀,启用 提示词缓存
  • 参见 Token 与定价成本与延迟

第 4 步 — 处理异常路径

  • 瞬时性错误(429/5xx)使用退避策略重试(如上);不要重试 400 错误。
  • 优雅地处理 拒绝响应
  • 为任何具有自主性(agentic)的流程设置超时成本/迭代预算

验证

运行它:你应该能看到流式输出、一行 token 用量信息,并且在你故意触发错误时(例如使用一个错误的密钥 → 得到清晰的提示信息,而不是崩溃)表现得优雅得体。

下一步