资讯动态

如何把 Claude Code 等 Anthropic 客户端接入 SGLang 的 /v1/messages 端点?

发布时间:2026/9/13 7:25:13 来源:尧图企业网站定制
如何把 Claude Code 等 Anthropic 客户端接入 SGLang 的 /v1/messages 端点【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang如果你的客户端按 Anthropic Messages API 编写——包括 Anthropic Python SDK 和 Claude Code 这类 agentic CLI——但又想让它们对话到一个自托管的 SGLang 推理服务器这篇文章给出完整接入路径启动一个带/v1/messages端点的 SGLang 服务器用 SDK 验证端点再通过一组环境变量把 Claude Code 指向该服务器并处理前缀缓存失效等接入后的常见问题。SGLang 在每个服务器上自动注册 Anthropic 兼容的/v1/messages端点无需额外开关即可启用它复用与 OpenAI 兼容端点相同的模型、chat template 和 reasoning / tool-call parser支持非流式、流式响应、工具调用以及count_tokens路由。端点与模型无关任何模型都可以本文的示例使用 GLM-5.2-FP8因为它的推理 工具调用输出是 Claude Code 集成场景下文档验证过的组合。启动 SGLang 服务器先安装 SGLang。文档给出的两条安装路径Python 或 Dockerpip install --upgrade pip pip install uv uv pip install --prereleaseallow sglang或者docker pull lmsysorg/sglang:latest然后在终端中启动服务器并等待其完成初始化。以下是文档中单节点 GLM-5.2-FP8 的示例配置TP8带 EAGLE 推测解码sglang serve \ --model-path zai-org/GLM-5.2-FP8 \ --tp 8 \ --speculative-algorithm EAGLE \ --speculative-num-steps 5 \ --speculative-eagle-topk 1 \ --speculative-num-draft-tokens 6 \ --reasoning-parser glm45 \ --tool-call-parser glm47 \ --host 0.0.0.0 \ --port 30000这条命令中各参数的用途按文档说明如下--reasoning-parser/--tool-call-parser是可选的。当模型会输出 reasoning 内容GLM-5.2、Qwen3、DeepSeek-R1 等或需要把工具调用解析成结构化tool_use块时再加。没有 tool-call parser 时tools字段仍会被接受但模型的工具调用会以原始文本返回Claude Code 无法执行它们。上下文长度默认取模型自身的GLM-5.2 为 1M即 1048576--context-length只能用来压低上限不能扩展。SGLang 不校验请求中的model字段服务器启动时加载了什么模型请求就按那个模型服务。其他模型和硬件/量化组合的验证命令可参考 GLM-5.2 cookbook。用 Anthropic SDK 验证端点可用接入 Claude Code 之前先用 Anthropic Python SDK 确认端点工作正常。注意一个容易踩的坑与 OpenAI SDK 不同Anthropic SDK 会自己拼接/v1/messages所以base_url要写服务器根地址不要带/v1后缀。非流式请求from anthropic import Anthropic client Anthropic( base_urlhttp://127.0.0.1:30000, api_keyEMPTY, # SGLang does not require a real key by default ) message client.messages.create( modelzai-org/GLM-5.2-FP8, max_tokens512, messages[{role: user, content: List 3 countries and their capitals.}], ) # A reasoning model may emit a thinking block before the text block — # pick the text block rather than assuming content[0]. print(next(b.text for b in message.content if b.type text))文档示例输出示例结果非固定预期Here are 3 countries and their capitals: 1. **France** - Paris 2. **Japan** - Tokyo 3. **Brazil** - Brasília能打印出 text 块内容说明/v1/messages路由已通。需要流式输出时设streamTruewith client.messages.stream( modelzai-org/GLM-5.2-FP8, max_tokens512, messages[{role: user, content: Say this is a test}], ) as stream: for text in stream.text_stream: print(text, end, flushTrue)此外POST /v1/messages/count_tokens可以在不生成响应的情况下返回请求的分词长度system prompt、tools 和多轮历史都会计入resp client.messages.count_tokens( modelzai-org/GLM-5.2-FP8, messages[{role: user, content: Hello, world}], ) print(resp.input_tokens)配置 Claude Code 指向 SGLang 服务器服务器已经在:30000运行的前提下在启动 Claude Code 的 shell 中导出完整环境变量集合然后运行claudeexport ANTHROPIC_BASE_URLhttp://127.0.0.1:30000 export ANTHROPIC_AUTH_TOKENdummy # required by Claude Code; any non-empty string works export API_TIMEOUT_MS3000000 # long timeout — reasoning 1M-context turns are slow export CLAUDE_CODE_AUTO_COMPACT_WINDOW1000000 # let auto-compact use the full 1M window export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC1 # drop autoupdater/telemetry/error-reporting noise export CLAUDE_CODE_ATTRIBUTION_HEADER0 # required for prefix-cache reuse — see below export ANTHROPIC_DEFAULT_HAIKU_MODELglm-5.2[1m] # [1m] suffix enables Claude Codes 1M-context beta export ANTHROPIC_DEFAULT_SONNET_MODELglm-5.2[1m] # [1m] suffix enables Claude Codes 1M-context beta export ANTHROPIC_DEFAULT_OPUS_MODELglm-5.2[1m] # [1m] suffix enables Claude Codes 1M-context beta claude每个变量的作用均按文档说明ANTHROPIC_BASE_URL— 让 Claude Code 访问你的 SGLang 服务器而不是 Anthropic API。ANTHROPIC_AUTH_TOKEN— Claude Code 要求非空 tokenSGLang 在未用--api-key启动时接受任意值。API_TIMEOUT_MS— 调大超时推理模型的长输出和 1M 上下文回合经常超出默认超时。ANTHROPIC_DEFAULT_{HAIKU,SONNET,OPUS}_MODEL— Claude Code 在各档位发送的模型名。SGLang 不校验该字段任意名字都可以。使用glm-5.2[1m][1m]后缀是客户端侧提示用于启用 Claude Code 的 1M 上下文 beta不加的话上下文会被封顶。CLAUDE_CODE_AUTO_COMPACT_WINDOW— 设为1000000让自动压缩使用完整 1M 窗口而不是默认值从而保住长会话。可选的持久化方式不想在每个 shell 里 export 时把同一组变量写入~/.claude/settings.json的env键对所有 Claude Code 会话生效{ env: { ANTHROPIC_BASE_URL: http://127.0.0.1:30000, ANTHROPIC_AUTH_TOKEN: dummy, CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC: 1, CLAUDE_CODE_ATTRIBUTION_HEADER: 0, ANTHROPIC_DEFAULT_HAIKU_MODEL: glm-5.2[1m], ANTHROPIC_DEFAULT_SONNET_MODEL: glm-5.2[1m], ANTHROPIC_DEFAULT_OPUS_MODEL: glm-5.2[1m] } }必须设置CLAUDE_CODE_ATTRIBUTION_HEADER0以复用前缀缓存只要 Claude Code 经过 SGLang或任何非 Anthropic 网关路由就必须设置这个变量。原因Claude Code 会在 system prompt 开头加一段每请求变化的归因块形如x-anthropic-billing-header: cc_versionver.per-request-hash; cc_entrypoint...; cchhash;。这个每请求哈希是回合之间第一个不同的 tokenradix 前缀缓存只能复用它之前的短前缀导致每一轮都要把 system prompt 加整个对话历史重新 prefill。CLAUDE_CODE_ATTRIBUTION_HEADER0会把整行归因信息从 system prompt 中移除。注意CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC不会移除归因块——它只覆盖自动更新/遥测/错误上报归因头是独立代码路径必须用CLAUDE_CODE_ATTRIBUTION_HEADER0。判断是否生效多轮对话时如果每一轮都整体重新 prefill、响应明显变慢先检查这个变量是否漏设。接入后常见问题的排查文档针对这个接入路径列出了以下现象和对应原因Connection refused /fetch failed— 确认服务器已启动ANTHROPIC_BASE_URL中的端口与--port一致默认 30000。如果ANTHROPIC_BASE_URL指向远程主机确认它可达、且没有被拦截连接的代理挡在中间。Model not found/ 服务器返回 404— SGLang 不校验model字段服务启动时加载的模型所以 404 通常意味着请求根本没有到达/v1/messages路由。确认ANTHROPIC_BASE_URL指向服务器没有漏掉端口且服务器已完成加载。工具调用不生效 / 以原始文本返回— 启动服务器时加上与模型匹配的--tool-call-parser如glm47、qwen3。没有它tools字段仍会被接受但工具调用以文本返回而不是tool_use块Claude Code 无法执行。响应慢 / 每轮都重新 prefill 全部历史— 缺少CLAUDE_CODE_ATTRIBUTION_HEADER0Claude Code 的每请求归因哈希破坏了 radix 前缀缓存复用。上下文被封顶在 1M 以下— 模型名必须以[1m]结尾 Claude Code 才会启用 1M 上下文 beta。检查ANTHROPIC_DEFAULT_*_MODEL是否带[1m]后缀以及所加载模型的原生上下文确实是 1MGLM-5.2 为 1048576--context-length只能压低不能扩展。请求参数与推理模型/v1/messages接受标准 Anthropic Messages API 参数完整列表以 Anthropic Messages API 官方参考为准。推理模型通过 OpenAI 兼容端点相同的--reasoning-parser机制支持在请求里传模型的 reasoning kwarg如 DeepSeek-V3 系模型用thinkingQwen3 系模型用enable_thinking具体 mapping 参见 OpenAI Completions 文档。完整的端点行为与 Claude Code 集成说明见 Anthropic-Compatible API 文档。【免费下载链接】sglangSGLang is a high-performance serving framework for large language models and multimodal models.项目地址: https://gitcode.com/GitHub_Trending/sg/sglang创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价