跳到内容

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 example chat

如果模型响应正常,说明您的配置已生效。现在,您可以将 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),请注意这一点。