mirror of
https://github.com/BerriAI/litellm.git
synced 2026-10-07 02:59:05 +00:00
Adds a 'passthrough' feature row to the Claude Code compat matrix that
drives the real claude CLI in each cloud's native mode against
LiteLLM's passthrough routes (the LLM-gateway setup from
code.claude.com/docs/en/gateway) instead of the /v1/messages
translation layer:
- anthropic: ANTHROPIC_BASE_URL={proxy}/anthropic, forwarded verbatim
to api.anthropic.com
- bedrock_invoke: CLAUDE_CODE_USE_BEDROCK=1 against {proxy}/bedrock;
the router resolves the alias in /model/{alias}/invoke-with-response-stream
- vertex_ai: CLAUDE_CODE_USE_VERTEX=1 against {proxy}/vertex_ai/v1;
alias, project, location and credentials resolve from the deployment,
which now sets use_in_pass_through: true (and the canonical
vertex_project/vertex_location param names) in test_config.yaml
- azure: CLAUDE_CODE_USE_FOUNDRY=1 against {proxy}/azure via the
AZURE_API_BASE/AZURE_API_KEY fallback (documented in the cron env
example)
- bedrock_converse: not_applicable; Claude Code has no Converse-wire
client
The shared cell body lives in _passthrough.py with injectable runner
and env (no monkeypatching), unit-covered in
_driver_unit_tests/test_passthrough.py including pins on the per-mode
CLI env contracts captured from a real claude CLI (2.1.210) run
against a request-logging sink.
44 lines
1.5 KiB
Python
44 lines
1.5 KiB
Python
"""passthrough x Anthropic.
|
|
|
|
Drive the real `claude` CLI in its default first-party mode, but with
|
|
ANTHROPIC_BASE_URL aimed at the proxy's `/anthropic` passthrough route
|
|
instead of the `/v1/messages` translation endpoint. The proxy forwards
|
|
the request verbatim to api.anthropic.com, swapping the virtual-key
|
|
bearer for its own ANTHROPIC_API_KEY.
|
|
|
|
The (feature, provider) for this cell is inferred from the file path by
|
|
`tests/e2e/claude_code/conftest.py`:
|
|
|
|
tests/e2e/claude_code/passthrough/test_anthropic.py
|
|
^^^^^^^^^^^ ^^^^^^^^^
|
|
feature_id provider
|
|
|
|
Because nothing is translated, the model ids are the real Anthropic API
|
|
ids (which happen to equal the proxy aliases for this column). A red
|
|
cell here means the passthrough route broke forwarding itself -- auth
|
|
header swap, streaming SSE relay, or beta-header propagation -- since
|
|
no per-provider transformation is involved.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from claude_code._passthrough import (
|
|
ANTHROPIC_PASSTHROUGH_BASE_PATH,
|
|
run_passthrough_cell,
|
|
)
|
|
|
|
ANTHROPIC_MODELS = [
|
|
"claude-haiku-4-5",
|
|
"claude-sonnet-4-6",
|
|
"claude-opus-4-7",
|
|
]
|
|
|
|
|
|
def test_passthrough_anthropic(compat_result):
|
|
"""Drive the `claude` CLI through `{proxy}/anthropic` and assert a reply."""
|
|
run_passthrough_cell(
|
|
compat_result=compat_result,
|
|
models=ANTHROPIC_MODELS,
|
|
prompt="Reply with the single word 'pong' and nothing else.",
|
|
passthrough_base_path=ANTHROPIC_PASSTHROUGH_BASE_PATH,
|
|
)
|