Claude Code¶
Claude Code 是 Anthropic 推出的官方智能体编程工具,直接运行在您的终端中。它可以理解您的代码库、编辑文件、运行命令,并帮助您更高效地编写代码。
通过将 Claude Code 指向 vLLM 服务器,您可以使用自己的模型作为后端,而不是 Anthropic API。这在以下场景非常有用:
- 运行完全本地/私有的编程辅助
- 使用具有工具调用功能的开源权重模型
- 使用自定义模型进行测试和开发
工作原理¶
vLLM 实现了 Anthropic Messages API,这正是 Claude Code 与 Anthropic 服务器通信所使用的 API。通过将 ANTHROPIC_BASE_URL 设置为您的 vLLM 服务器地址,Claude Code 会将请求发送给 vLLM 而非 Anthropic。随后,vLLM 会转换这些请求以适配您的本地模型,并以 Claude Code 预期的格式返回响应。
这意味着任何由 vLLM 提供服务且具备完善工具调用支持的模型,都可以作为 Claude Code 中 Claude 模型的直接替代品。
要求¶
Claude Code 要求模型具有强大的工具调用能力。模型必须支持与 OpenAI 兼容的工具调用 API。有关为模型启用工具调用的详细信息,请参阅工具调用 (Tool Calling)。
安装¶
首先,请按照官方安装指南安装 Claude Code。
启动 vLLM 服务器¶
使用支持工具调用的模型启动 vLLM —— 以下是使用 openai/gpt-oss-120b 的示例
vllm serve openai/gpt-oss-120b --served-model-name my-model --enable-auto-tool-choice --tool-call-parser openai
对于其他模型,您需要通过 --enable-auto-tool-choice 和正确的 --tool-call-parser 显式启用工具调用。有关适配您模型的正确标志(flag),请参考工具调用文档。
配置 Claude Code¶
通过指向 vLLM 服务器的环境变量启动 Claude Code
ANTHROPIC_BASE_URL=https://:8000 \
ANTHROPIC_API_KEY=dummy \
ANTHROPIC_AUTH_TOKEN=dummy \
ANTHROPIC_DEFAULT_OPUS_MODEL=my-model \
ANTHROPIC_DEFAULT_SONNET_MODEL=my-model \
ANTHROPIC_DEFAULT_HAIKU_MODEL=my-model \
claude
环境变量说明
| 可变 | 描述 |
|---|---|
ANTHROPIC_BASE_URL | 指向您的 vLLM 服务器(默认端口为 8000) |
ANTHROPIC_API_KEY | 可以是任意值,因为 vLLM 默认不需要身份验证 |
ANTHROPIC_AUTH_TOKEN | 必须设置。可以是任意值。 |
ANTHROPIC_DEFAULT_OPUS_MODEL | Opus 级别请求的模型名称 |
ANTHROPIC_DEFAULT_SONNET_MODEL | Sonnet 级别请求的模型名称 |
ANTHROPIC_DEFAULT_HAIKU_MODEL | Haiku 级别请求的模型名称 |
提示
您可以将这些环境变量添加到您的 Shell 配置文件中(如 .bashrc、.zshrc)、Claude Code 配置文件 (~/.claude/settings.json),或者为了方便起见,创建一个包装脚本。
警告
Claude Code 最近开始在系统提示词 (system prompt) 中注入按请求生成的哈希值,这可能会破坏前缀缓存 (prefix caching),因为提示词在每次请求时都会改变,从而导致性能大幅下降。vLLM 版本 > 0.17.1 中已自动解决了此问题,但对于旧版本,应在 ~/.claude/settings.json 的 "env" 部分添加 "CLAUDE_CODE_ATTRIBUTION_HEADER": "0"(参见 Unsloth 的这篇博客文章)。
测试配置¶
Claude Code 启动后,尝试输入一个简单的提示词来验证连接
如果模型响应正常,说明您的配置已生效。现在,您可以将 Claude Code 与 vLLM 托管的模型一起用于编程任务了。
故障排除¶
连接被拒绝 (Connection refused):确保 vLLM 正在运行且可通过指定的 URL 访问。检查端口是否匹配。
工具调用无法工作:验证您的模型是否支持工具调用,并确认您已通过正确的 --tool-call-parser 标志启用了它。请参阅工具调用 (Tool Calling)。
找不到模型 (Model not found):确保 --served-model-name 与环境变量中的模型名称匹配。Claude Code 有一个限制:不能直接使用名称中带有 / 的模型(例如 Huggingface 上的 openai/gpt-oss-120b),请注意这一点。
