Messages To Openai Degrade Fixture
Fixture-only variant of messages-to-openai.yaml that opts prompt caching and extended thinking into operator-approved degradation
Versions marked “overview” do not contain this page. Selecting one opens that version’s documentation overview.
Category: Test fixture
Task: Fixture-only variant of messages-to-openai.yaml that opts prompt caching and extended thinking into operator-approved degradation
Prerequisites: The matching test or replay fixture; this is not a standalone deployment configuration.
Run it: Use ghcr.io/praxis-proxy/ai:0.8.0 and follow the container quickstart to mount and start the configuration.
This configuration comes from the selected release. The example has not been run here; external services are not bundled.
Download the source file.
Companion resources from the same snapshot:
# Anthropic Messages to Chat Completions (operator-approved degradation)
#
# Fixture-only variant of `messages-to-openai.yaml` that opts prompt caching
# and extended thinking into operator-approved degradation. The translator
# validates and strips `cache_control` and `thinking` markers so an unmodified
# client (for example Claude Code) can still drive a Chat Completions backend,
# and reports each degradation. See `messages-to-openai.yaml` for the strict
# (reject) variant and `docs/anthropic-messages.md` for the trade-offs.
#
# This config exists to back the `messages/degrade-features` inference fixture
# (`tests/integration/fixtures/inference/`). It intentionally omits the gateway
# authentication and credential-injection filters so the deterministic fixture
# runner can replay it without secrets.
listeners:
- name: anthropic-gateway
address: "127.0.0.1:8080"
filter_chains: [anthropic-transform]
filter_chains:
- name: anthropic-transform
filters:
- filter: anthropic_messages_request
on_invalid: continue
- filter: anthropic_messages_to_chat_completions
max_body_bytes: 1048576
allow_lossy_features:
- prompt_caching
- extended_thinking
- filter: anthropic_messages_to_chat_completions_stream
max_partial_event_bytes: 10485760
max_tool_blocks: 10000
response_conditions:
- when:
headers:
content-type: "text/event-stream"
- filter: path_rewrite
replace:
pattern: "^/v1/messages$"
replacement: "/v1/chat/completions"
conditions:
- when:
path_prefix: "/v1/messages"
- filter: router
routes:
- path_prefix: "/"
cluster: "chat-completions-backend"
- filter: load_balancer
clusters:
- name: "chat-completions-backend"
endpoints:
- "127.0.0.1:8000"
insecure_options:
allow_private_endpoints: true # example proxies to local backends