主题
curl / 原生 HTTP
不依赖任何客户端,排障时最有用 —— 能把「是服务的问题」和「是客户端配置的问题」分开。
Chat Completions
bash
curl https://jc.jichuanai.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash-0731",
"messages": [{"role": "user", "content": "你好"}]
}'流式
加 -N 关闭 curl 自己的缓冲,否则看起来像卡住:
bash
curl -N https://jc.jichuanai.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash-0731",
"messages": [{"role": "user", "content": "数到十"}],
"stream": true
}'正常会看到一行行 data: {...},最后是 data: [DONE]。
Anthropic Messages
bash
curl https://jc.jichuanai.com/v1/messages \
-H "x-api-key: sk-xxx" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "deepseek-v4-flash-0731",
"max_tokens": 128,
"messages": [{"role": "user", "content": "你好"}]
}'排障用法
看 HTTP 头,确认打到的是 API 不是网页
bash
curl -i -o /dev/null -w "%{http_code} %{content_type}\n" \
-X POST https://jc.jichuanai.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-H "Content-Type: application/json" \
-d '{"model":"你的模型名","messages":[{"role":"user","content":"hi"}],"max_tokens":8}'application/json→ 打对地方了text/html→ 地址填错,打到了站点网页
这就是为什么不能只看状态码
地址填错时服务器返回的是 HTTP 200 的网页。状态码 200 看着像成功, 实际客户端拿到 HTML 当数据解析,报「空响应」或「解析失败」。
量一下首字延迟
bash
curl -N -o /dev/null -s -w "首字 %{time_starttransfer}s / 总计 %{time_total}s\n" \
https://jc.jichuanai.com/v1/chat/completions \
-H "Authorization: Bearer sk-xxx" \
-H "Content-Type: application/json" \
-d '{"model":"你的模型名","messages":[{"role":"user","content":"hi"}],"max_tokens":16,"stream":true}'短提示词的首字通常在 1~2 秒。长上下文会明显更久 —— 模型要先把你发的内容读完(prefill), 发 10 万 token 时首字等几秒是正常的。