- Чтобы подключить Claude Code на вашей машине к существующему шлюзу, см. Подключение Claude Code к LLM-шлюзу
- Информацию о том, что Claude Code отправляет на шлюз и что перенаправлять, см. в справочнике протокола шлюза
Предварительные требования
Для завершения развертывания вам потребуется:- Шлюз, развернутый на вашей инфраструктуре, обслуживающий HTTPS по точному адресу, который вы будете распределять разработчикам, а не адресу, который перенаправляет на него, и настроенный для маршрутизации имен моделей Claude к вашему поставщику
- Учетные данные поставщика для шлюза для перенаправления:
- Для Anthropic API: ключ API из Claude Console
- Для облачного поставщика: облачные учетные данные с доступом к моделям. См. предварительные требования на странице Amazon Bedrock, Google Vertex AI или Microsoft Foundry
- Способ доставки файлов параметров на машины разработчиков, например MDM или управление конфигурацией
- Если у вас его еще нет, как параметры достигают устройств сравнивает варианты
Требования к шлюзу
Какой бы продукт ни предоставлял шлюз, он должен:- Принимать поддерживаемый формат API: один из форматов в таблице форматов API. Шаги развертывания ниже предполагают Anthropic Messages API в
POST /v1/messages, который обслуживает большинство шлюзов - Потоковая передача ответов: передавать события, отправляемые сервером, по мере их поступления вместо буферизации всего ответа
- Маршрутизация имен моделей Claude: сопоставлять каждое имя, которое используют разработчики, с восходящей моделью. Claude Code отправляет имя модели, такое как
claude-sonnet-4-6, в каждом запросе; в большинстве продуктов шлюза сопоставление представляет собой список моделей или таблицу маршрутизации в собственной конфигурации шлюза - Перенаправлять заголовки и тело без изменений: передавать
anthropic-beta,anthropic-versionи тело запроса в обоих направлениях; таблица сквозной передачи функций сопоставляет каждый с функцией, которая нарушается без него - Возвращать ошибки восходящего потока без изменений: автоматическое восстановление Claude Code соответствует формулировке ошибки, поэтому обертывание ошибок в собственный конверт шлюза нарушает его
- Исключить путь из проверки тела запроса WAF: подсказки Claude Code содержат исходный код и теги в стиле XML, которые соответствуют правилам тела для межсайтовых скриптов; WAF перед шлюзом возвращает
403на реальных сеансах, в то время как короткие тестовые запросы проходят
GET /v1/models, чтобы Claude Code мог заполнить средство выбора модели из вашего шлюза с помощью обнаружения моделей.
Шаги развертывания
Развертывание состоит из пяти шагов, каждый с контрольной точкой:- Подтвердить маршрутизацию моделей шлюзом
- Выдать каждому разработчику учетные данные
- Протестировать Claude Code против шлюза
- Распределить базовый URL и учетные данные
- Проверить с машины разработчика
| Учетные данные | Кто их держит | Заполнитель в контрольных точках |
|---|---|---|
| Учетные данные поставщика | Шлюз, который перенаправляет их восходящему поставщику | Настроены на шлюзе; никогда не появляются в командах клиента |
| Административные учетные данные шлюза | Вы, если ваш продукт шлюза выдает их для своего интерфейса администратора или тестирования | <gateway-key> |
| Ключ разработчика | Каждый разработчик, выданный шлюзом в Выдать учетные данные разработчика | <developer-key> |
Подтвердить маршрутизацию моделей шлюзом
Ваш шлюз уже должен быть настроен с учетными данными вашего поставщика, прослушивающий на его базовом URL и перенаправляющий запросы к API вашего поставщика. Протестируйте, что путь работает от конца к концу с минимальным запросом, подставив два значения из вашего развертывания:<gateway-key>— это любые учетные данные, которые позволяют вам вызывать шлюз прямо сейчас: административный ключ, тестовый ключ или ваш собственный ключ разработчика, если вы уже выдали его. Не каждый продукт шлюза имеет отдельные административные учетные данные; если у вас их нет, сначала выдайте себе ключ разработчика в Выдать учетные данные разработчикаmodel— это имя модели Claude, которое ваш шлюз настроен маршрутизировать. В примере используетсяclaude-sonnet-4-6; подставьте имя, которое вы настроили
- Bash или Zsh
- PowerShell
200 с полем content означает, что шлюз достиг поставщика с этим именем модели. 404 означает, что это имя не маршрутизируется на шлюзе; 401 от поставщика означает, что учетные данные поставщика шлюза неправильные.
Повторите запрос один раз для каждого имени модели Claude в конфигурации маршрутизации вашего шлюза. Имя, которое шлюз не маршрутизирует, возвращает 404 любому разработчику, который его выбирает, поэтому протестируйте каждое имя перед развертыванием.
Избегайте обслуживания шлюза за перенаправлением. Перенаправление может отбросить тело запроса или удалить заголовок учетных данных на запросах вывода, и обнаружение моделей рассматривает любое перенаправление как сбой, поэтому учетные данные не могут утечь на цель перенаправления.
Выдать учетные данные разработчика
Каждому разработчику нужен свой собственный ключ шлюза для аутентификации. Создайте учетные данные для каждого разработчика на шлюзе, следуя документации управления учетными данными вашего продукта. Подтвердите, что недавно выданный ключ работает против шлюза с тем же запросом, что и Подтвердить маршрутизацию моделей шлюзом, заменив<gateway-key> на новый <developer-key>:
- Bash или Zsh
- PowerShell
200 с полем content означает, что ключ разработчика достигает шлюза и шлюз его перенаправляет. 401 здесь, когда предыдущий шаг был успешным, означает, что ключ разработчика неправильный или еще не вступил в силу на шлюзе.
Выдача одного ключа на разработчика вместо общего ключа — это то, что делает возможной атрибуцию использования для каждого разработчика и отдельное удаление. Переменная окружения, которая содержит ключ, зависит от того, какой заголовок читает шлюз. Для шлюза, который проверяет учетные данные в заголовке Authorization: Bearer, разработчики устанавливают свой ключ в ANTHROPIC_AUTH_TOKEN. Для шлюза, который читает ключи из заголовка x-api-key, разработчики вместо этого устанавливают ANTHROPIC_API_KEY; таблица учетных данных охватывает сопоставление.
Протестировать Claude Code против шлюза
Запустите Claude Code через шлюз самостоятельно перед распределением чего-либо, используя ту же конфигурацию, которую развертывание будет доставлять по всему парку. Введите их непосредственно в терминал, а не в файл.env или файл параметров; они действуют только для этого сеанса терминала, поэтому закрытие его возвращает вашу машину в нормальное состояние. Используйте ANTHROPIC_API_KEY вместо ANTHROPIC_AUTH_TOKEN, если ваш шлюз читает заголовок x-api-key:
- Bash или Zsh
- PowerShell
POST к пути /v1/messages со статусом 200. Claude Code добавляет строку запроса, такую как ?beta=true, поэтому сопоставляйте по пути, а не по полному URL. Два сообщения об ошибке указывают в разные стороны:
Not logged in: проверьте журнал шлюза, чтобы различить две причины. Если он пуст, никакие учетные данные не достигли сеанса и никакой запрос не покинул машину; повторно запустите экспорты в оболочке, которую вы тестируете. Если он показывает отклоненный запрос сx-api-keyв теле401, шлюз ожидает ключи в этом заголовке вместо этого; переключитесь наANTHROPIC_API_KEYFailed to authenticate. API Error: 401означает, что учетные данные были отправлены и отклонены, и журнал шлюза говорит где:401, называющийapi.anthropic.comили конечную точку вашего поставщика, означает, что шлюз достиг восходящего потока, но его учетные данные поставщика были отклонены, поэтому ключ разработчика работал и учетные данные поставщика, которые держит шлюз, неправильные или заполнитель
ANTHROPIC_BASE_URL не указывает на шлюз.
Распределить конфигурацию
Каждой машине разработчика нужны адрес шлюза и учетные данные. Вы можете распределять их централизованно через управляемые параметры, чтобы разработчики ничего не настраивали, или передать разработчикам значения для самостоятельной установки.Что распределять
Один и тот же набор переменных применяется независимо от выбранного пути. Большинство развертываний требуют толькоANTHROPIC_BASE_URL и учетные данные; включите условные строки, когда ваша настройка шлюза требует их.
| Переменная или параметр | Что она делает | Включить когда |
|---|---|---|
ANTHROPIC_BASE_URL | Отправляет запросы API Claude Code на шлюз вместо api.anthropic.com | Всегда |
apiKeyHelper, или учетные данные в ANTHROPIC_AUTH_TOKEN или ANTHROPIC_API_KEY | Аутентифицирует каждый запрос к шлюзу. Помощник запускает команду для получения ключа; переменные содержат статический ключ, отправляемый как Authorization: Bearer и x-api-key соответственно | Всегда; один из трех |
ANTHROPIC_CUSTOM_HEADERS | Добавляет дополнительные HTTP-заголовки к каждому запросу API | Ваш шлюз требует заголовок клиента или маршрутизации на каждом запросе |
CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY | Запрашивает /v1/models шлюза при запуске и добавляет возвращаемые имена в средство выбора /model | Ваш шлюз обслуживает /v1/models и вы хотите, чтобы средства выбора разработчиков были заполнены из него |
CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS | Останавливает отправку Claude Code заголовков и полей тела предварительного выпуска | Ваш шлюз перенаправляет на восходящий Bedrock или Vertex, который отклоняет поля бета-версии; см. Требования к шлюзу |
ANTHROPIC_MODEL или ANTHROPIC_DEFAULT_HAIKU_MODEL | Установить, какое имя модели Claude Code запрашивает для основного сеанса и для фонового трафика | Ваш шлюз маршрутизирует имена моделей, которые не соответствуют значениям по умолчанию Claude Code, или вы маршрутизируете фоновую функциональность на другую модель. Маршрутизируйте как переопределенные имена, так и имена по умолчанию Claude Code на шлюзе, так как некоторые подвызовы могут запросить имя по умолчанию независимо от переопределения |
ANTHROPIC_BEDROCK_BASE_URL, ANTHROPIC_VERTEX_BASE_URL, ANTHROPIC_FOUNDRY_BASE_URL или ANTHROPIC_AWS_BASE_URL с переменными для этого поставщика | Указать Claude Code на шлюз через базовый URL, специфичный для поставщика. Bedrock и Vertex также переключаются на собственный формат запроса этих поставщиков | Ваш шлюз находится перед Bedrock, Vertex, Foundry или Claude Platform на AWS; см. Форматы API |
Распределить через управляемые параметры
Доставляйте переменные через блокenv файла управляемых параметров, отправляемого MDM, политикой реестра или управлением конфигурацией:
env. Управляемый ANTHROPIC_BASE_URL применяется и не может быть переопределен экспортом оболочки разработчика, так как Claude Code применяет его над переменными процесса и параметрами с более низким приоритетом.
Не включайте forceLoginMethod или forceLoginOrgUUID в управляемые параметры вместе с учетными данными шлюза. На Claude Code v2.1.146 и позже любой ключ блокирует ANTHROPIC_API_KEY, ANTHROPIC_AUTH_TOKEN и apiKeyHelper при запуске, поэтому разработчики видят This machine's managed settings require a first-party login и не могут продолжить.
Доставка управляемых параметров на сервере требует прямого подключения к api.anthropic.com, поэтому она не достигает сеансов, маршрутизируемых через шлюз. Развертывания шлюза используют этот путь управляемых параметров на основе файлов, который применяет те же ключи.
Для учетных данных распределите одну команду apiKeyHelper в файле управляемых параметров, как показано выше; команда аутентифицируется в вашем хранилище секретов как локальный разработчик, поэтому каждая машина получает свой собственный ключ. Альтернативно, доставляйте каждому разработчику его ключ через ваш существующий процесс секретов и попросите их установить ANTHROPIC_AUTH_TOKEN самостоятельно.
Некоторые окружения требуют отдельной доставки:
- Настольное приложение читает маршрутизацию шлюза только из своей конфигурации вывода третьей стороны, доставляемой MDM; разверните этот файл вместе с управляемыми параметрами, чтобы сеансы рабочего стола также маршрутизировались через шлюз. См. документацию конфигурации рабочего стола и документацию шлюза рабочего стола
- Бегуны CI нуждаются в
ANTHROPIC_BASE_URLи учетных данных, установленных в окружении бегуна - WSL на управляемых машинах Windows читает управляемые параметры Windows только когда
wslInheritsWindowsSettingsимеет значениеtrue
Передать разработчикам значения для самостоятельной установки
Если у вас нет распределения управляемых параметров, отправьте каждому разработчику то, что ему нужно, чтобы следовать странице подключения:- URL шлюза
- Их личные учетные данные
- Какую переменную поместить учетные данные в:
ANTHROPIC_AUTH_TOKENдля шлюза с токеном-носителем илиANTHROPIC_API_KEYдля шлюзаx-api-key. Сообщение разработчикам, какой из них, экономит им метод проб и ошибок, описанный на странице подключения - Любые условные переменные из таблицы Что распределять, с их значениями
claude запускает сеанс без отображения экрана входа, так как распределенные учетные данные удовлетворяют аутентификацию. Затем запустите /status и откройте вкладку Status: строка Anthropic base URL показывает адрес шлюза, а для управляемого распределения строка Setting sources включает управляемые параметры. Экран входа или отсутствующая строка Anthropic base URL означает, что конфигурация не достигла машины.
Проверить развертывание
Подтвердите, что все работает с машины разработчика, а не хоста шлюза, чтобы тест охватывал сетевой путь, который используют разработчики. Отправьте потоковый запрос, который проверяет конечную точку, сквозную передачу потока и маршрутизацию модели одновременно:- Bash или Zsh
- PowerShell
data:, поступающие постепенно. Весь ответ, поступающий сразу после паузы, означает, что шлюз буферизирует, что замораживает Claude Code; 404 означает, что имя модели не маршрутизируется. Повторите для каждого имени модели.
Затем запустите claude и отправьте сообщение. Каждый симптом на этом шаге имеет одну причину:
- Приглашение входа означает пробел в учетных данных. Запустите
/statusи откройте вкладку Status: когда строкаSetting sourcesне включает управляемые параметры, распределение не достигло машины; когда она включает, учетные данные разработчика не были доставлены, поэтому установитеANTHROPIC_AUTH_TOKENилиapiKeyHelper - Ошибки
Failed to authenticateозначают, что шлюз отклоняет запросы; его журнал говорит, какие учетные данные не прошли. Отклонение, которое сам журнал шлюза регистрирует, называет ключ разработчика, в то время как401отapi.anthropic.comили конечной точки вашего поставщика означает, что учетные данные поставщика, которые держит шлюз, были отклонены - Одноразовое приглашение одобрения для ключа ожидается при первом использовании, когда шлюз ожидает ключи в заголовке
x-api-key, установленном какANTHROPIC_API_KEY. СANTHROPIC_AUTH_TOKENникакое приглашение не появляется и переменная берет на себя молча; ранее сохраненный вход claude.ai неактивен для этого сеанса
x-claude-code-session-id группирует запросы по сеансам. Если функции не работают с симптомами устранения неполадок, шлюз удаляет заголовки или переписывает ошибки; см. требования к шлюзу выше.
Поддерживать шлюз
После развертывания три вида изменений достигают шлюза с течением времени. Каждый имеет симптом, на который нужно обратить внимание, и действие, которое нужно предпринять.| Изменение | Симптом, когда шлюз не в курсе | Действие |
|---|---|---|
Новые выпуски Claude Code добавляют значения anthropic-beta и поля тела запроса | Разработчики сообщают об ошибках 400, называющих новое поле после обновления Claude Code; см. сквозная передача функций | Перенаправляйте заголовки anthropic-* и тела запроса дословно вместо внесения в список разрешений; протестируйте новые выпуски Claude Code против шлюза перед тем, как они достигнут разработчиков |
| Становятся доступны новые модели Claude | Разработчики, выбирающие новое имя модели, получают 404; средство выбора /model его не перечисляет | Добавьте имя модели в конфигурацию маршрутизации шлюза, затем повторно запустите проверку маршрутизации. Если вы распределяете ANTHROPIC_MODEL или переменные модели по умолчанию, обновите управляемые параметры |
| Учетные данные истекают или требуют ротации | Все запросы разработчика начинают не работать с 401 от восходящего потока | Ротируйте учетные данные поставщика шлюза по его собственному расписанию; ключи разработчика ротируются на шлюзе, и apiKeyHelper обрабатывает ротацию для каждого разработчика без перераспределения параметров |
429, до 10 раз с отступом, соблюдая Retry-After. Держите справочник протокола как контракт для того, что отправляет каждый выпуск Claude Code.
Связанные ресурсы
- Подключение Claude Code к LLM-шлюзу: шаги настройки для разработчиков, с конфигурацией для каждой поверхности и таблицей устранения неполадок, которую вы можете передать разработчикам
- Справочник протокола шлюза: проводной контракт для операторов шлюза, охватывающий конечные точки, заголовки для перенаправления и таблицу сквозной передачи функций
- Файлы параметров и приоритет: как управляемые, проектные и пользовательские параметры объединяются и где находится управляемый файл на каждой платформе
- Настройка Claude Code для вашей организации: более широкое развертывание, частью которого является этот шлюз, включая применение политики, видимость использования и обработку данных