├── .github └── workflows │ └── ci.yml ├── .gitignore ├── .node-version ├── .pre-commit-config.yaml ├── .python-version ├── .zed └── settings.json ├── CLAUDE.md ├── LICENSE ├── Makefile ├── README.md ├── biome.jsonc ├── deploy ├── README.md ├── check_config.sh ├── example.config.ts ├── example.env.local ├── generate_api_key.js ├── package.json ├── src │ ├── db.ts │ ├── index.ts │ ├── status.ts │ └── types.ts ├── test.config.ts ├── test │ ├── env.d.ts │ ├── index.spec.ts │ ├── index.spec.ts.snap │ └── tsconfig.json ├── tsconfig.json ├── vitest.config.mts └── wrangler.jsonc ├── examples ├── assets │ ├── kiwi.jpg │ └── sample.pdf ├── ex_anthropic.py ├── ex_anthropic_bedrock.py ├── ex_anthropic_chat.py ├── ex_anthropic_files.py ├── ex_azure.py ├── ex_huggingface.py ├── ex_openai.py ├── pai_anthropic.py ├── pai_anthropic_bedrock.py ├── pai_anthropic_builtin.py ├── pai_anthropic_otel.py ├── pai_anthropic_stream.py ├── pai_anthropic_vertex.py ├── pai_bedrock.py ├── pai_google.py ├── pai_google_stream.py ├── pai_google_stream_image.py ├── pai_groq.py ├── pai_huggingface.py ├── pai_openai.py ├── pai_openai_responses.py ├── pai_openai_stream.py └── pyproject.toml ├── gateway ├── limits-schema.sql ├── package.json ├── src │ ├── api │ │ ├── anthropic.ts │ │ ├── base.ts │ │ ├── bedrock.ts │ │ ├── chat.ts │ │ ├── embeddings.ts │ │ ├── google.ts │ │ ├── index.ts │ │ └── responses.ts │ ├── auth.ts │ ├── db.ts │ ├── gateway.ts │ ├── handler.ts │ ├── index.ts │ ├── otel │ │ ├── attributes.ts │ │ ├── genai.d.ts │ │ └── index.ts │ ├── providers │ │ ├── anthropic.ts │ │ ├── azure.ts │ │ ├── base.ts │ │ ├── bedrock.ts │ │ ├── google │ │ │ ├── auth.ts │ │ │ └── index.ts │ │ ├── groq.ts │ │ ├── huggingface.ts │ │ ├── openai.ts │ │ ├── test.ts │ │ └── utils.ts │ ├── rateLimiter.ts │ ├── refreshGenaiPrices.ts │ ├── types.ts │ └── utils.ts ├── test │ ├── auth.spec.ts │ ├── env.d.ts │ ├── gateway.spec.ts │ ├── gateway.spec.ts.snap │ ├── index.spec.ts │ ├── otel.ts │ ├── providers │ │ ├── anthropic.spec.ts │ │ ├── anthropic.spec.ts.snap │ │ ├── azure.spec.ts │ │ ├── azure.spec.ts.snap │ │ ├── bedrock.spec.ts │ │ ├── bedrock.spec.ts.snap │ │ ├── google.spec.ts │ │ ├── google.spec.ts.snap │ │ ├── groq.spec.ts │ │ ├── groq.spec.ts.snap │ │ ├── huggingface.spec.ts │ │ ├── huggingface.spec.ts.snap │ │ ├── openai.spec.ts │ │ └── openai.spec.ts.snap │ ├── rateLimiter.spec.ts │ ├── routing.spec.ts │ ├── setup.ts │ ├── tsconfig.json │ ├── worker.ts │ └── wrangler.jsonc ├── tsconfig.json └── vitest.config.mts ├── package.json ├── proxy-vcr ├── README.md ├── proxy_vcr │ ├── __init__.py │ ├── cassettes │ │ ├── anthropic-19999fbce5075795898578e3a57ad7330c7b9ee6f6f98c73f2237d050257214f.yaml │ │ ├── anthropic-4c11824387b8f43920a23ef5196d9e437350f0b3c6708ef3212c1e50b52a9b35.yaml │ │ ├── anthropic-6f790aa5ed012c0702a8220c3507790e5636ee2f1c52e66e110d1dac712b2d63.yaml │ │ ├── anthropic-9752c34227c474614a0161c842bd67313be0932354998df27c07a1b9d8b29eaa.yaml │ │ ├── anthropic-anthropic-chat-completion.yaml │ │ ├── azure-358cc480d17298f1874d3260d806b8b282395bbbe5b44f1408bc0e6fe4625339.yaml │ │ ├── azure-d3a027f470b4f1da6ffb9a81b8306a445928195e90737f13f6948226ba5cad49.yaml │ │ ├── bedrock-730cb860c2314477e9522a81cfc6a426d95100e670c17f661d05499461cf830c.yaml │ │ ├── bedrock-stream.yaml │ │ ├── google-vertex-3fc5cd750ad872a644781b8d4a149f2d8f685bbd2122866dcb4714cf6c38082c.yaml │ │ ├── google-vertex-anthropic-client.yaml │ │ ├── google-vertex-fallback.yaml │ │ ├── google-vertex-stream.yaml │ │ ├── groq-2f224a6a0ee54dbc66875193523cc7fb58b0600a5d409f2080a744ac07358e5f.yaml │ │ ├── groq-ba2f477133ec293f18d882d9fc5ac864036811ad9270ae2d5771e484d4b5a5c8.yaml │ │ ├── huggingface-52d99571f9ebd7cd3b8f121ce7e530b8a81c69ac7102240783df08722646a9b5.yaml │ │ ├── huggingface-9fbe02785650116bca3cd03a1e1ca204ff7623332b5e833b6f874c960ff851ad.yaml │ │ ├── openai-3bc303f40e7bb2fd35f89381e2a0b1845c054b1f6879bc2daddf8f97bd89b60d.yaml │ │ ├── openai-77d5759136cb2982b73adf57a010bc66d6ed83681bdf01439a369e81765faeef.yaml │ │ ├── openai-8e81918655d25d21e5f24751d9a09701f16b8aba0c9c1a241245b108a30fde76.yaml │ │ ├── openai-9a8509cd0f73f89247e9c90cd6a287f535166ed3faf0ef79c821c9e7fa417531.yaml │ │ ├── openai-bb9af470db8a6f5d27e4bec9910973ab2560c553630e55f5dd956224b9fc39cd.yaml │ │ ├── openai-e49ad150dd6581653dd61fbb73921b255ff9f19310f99aba15e749007fc8daaa.yaml │ │ ├── openai-fd2589389653eb8d00f2dec475e668144ac84c9ab6552fefa490c87ad778b5b0.yaml │ │ ├── openai-stream-options-stream-false.yaml │ │ └── openai-stream-options.yaml │ └── main.py └── pyproject.toml ├── pyproject.toml ├── tsconfig.json └── uv.lock /.github/workflows/ci.yml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/.github/workflows/ci.yml -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/.gitignore -------------------------------------------------------------------------------- /.node-version: -------------------------------------------------------------------------------- 1 | 20.19.0 2 | -------------------------------------------------------------------------------- /.pre-commit-config.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/.pre-commit-config.yaml -------------------------------------------------------------------------------- /.python-version: -------------------------------------------------------------------------------- 1 | 3.13 2 | -------------------------------------------------------------------------------- /.zed/settings.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/.zed/settings.json -------------------------------------------------------------------------------- /CLAUDE.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/CLAUDE.md -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/LICENSE -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/Makefile -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/README.md -------------------------------------------------------------------------------- /biome.jsonc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/biome.jsonc -------------------------------------------------------------------------------- /deploy/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/README.md -------------------------------------------------------------------------------- /deploy/check_config.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/check_config.sh -------------------------------------------------------------------------------- /deploy/example.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/example.config.ts -------------------------------------------------------------------------------- /deploy/example.env.local: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/example.env.local -------------------------------------------------------------------------------- /deploy/generate_api_key.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/generate_api_key.js -------------------------------------------------------------------------------- /deploy/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/package.json -------------------------------------------------------------------------------- /deploy/src/db.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/src/db.ts -------------------------------------------------------------------------------- /deploy/src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/src/index.ts -------------------------------------------------------------------------------- /deploy/src/status.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/src/status.ts -------------------------------------------------------------------------------- /deploy/src/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/src/types.ts -------------------------------------------------------------------------------- /deploy/test.config.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/test.config.ts -------------------------------------------------------------------------------- /deploy/test/env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/test/env.d.ts -------------------------------------------------------------------------------- /deploy/test/index.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/test/index.spec.ts -------------------------------------------------------------------------------- /deploy/test/index.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/test/index.spec.ts.snap -------------------------------------------------------------------------------- /deploy/test/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/test/tsconfig.json -------------------------------------------------------------------------------- /deploy/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/tsconfig.json -------------------------------------------------------------------------------- /deploy/vitest.config.mts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/vitest.config.mts -------------------------------------------------------------------------------- /deploy/wrangler.jsonc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/deploy/wrangler.jsonc -------------------------------------------------------------------------------- /examples/assets/kiwi.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/assets/kiwi.jpg -------------------------------------------------------------------------------- /examples/assets/sample.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/assets/sample.pdf -------------------------------------------------------------------------------- /examples/ex_anthropic.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/ex_anthropic.py -------------------------------------------------------------------------------- /examples/ex_anthropic_bedrock.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/ex_anthropic_bedrock.py -------------------------------------------------------------------------------- /examples/ex_anthropic_chat.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/ex_anthropic_chat.py -------------------------------------------------------------------------------- /examples/ex_anthropic_files.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/ex_anthropic_files.py -------------------------------------------------------------------------------- /examples/ex_azure.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/ex_azure.py -------------------------------------------------------------------------------- /examples/ex_huggingface.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/ex_huggingface.py -------------------------------------------------------------------------------- /examples/ex_openai.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/ex_openai.py -------------------------------------------------------------------------------- /examples/pai_anthropic.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_anthropic.py -------------------------------------------------------------------------------- /examples/pai_anthropic_bedrock.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_anthropic_bedrock.py -------------------------------------------------------------------------------- /examples/pai_anthropic_builtin.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_anthropic_builtin.py -------------------------------------------------------------------------------- /examples/pai_anthropic_otel.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_anthropic_otel.py -------------------------------------------------------------------------------- /examples/pai_anthropic_stream.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_anthropic_stream.py -------------------------------------------------------------------------------- /examples/pai_anthropic_vertex.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_anthropic_vertex.py -------------------------------------------------------------------------------- /examples/pai_bedrock.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_bedrock.py -------------------------------------------------------------------------------- /examples/pai_google.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_google.py -------------------------------------------------------------------------------- /examples/pai_google_stream.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_google_stream.py -------------------------------------------------------------------------------- /examples/pai_google_stream_image.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_google_stream_image.py -------------------------------------------------------------------------------- /examples/pai_groq.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_groq.py -------------------------------------------------------------------------------- /examples/pai_huggingface.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_huggingface.py -------------------------------------------------------------------------------- /examples/pai_openai.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_openai.py -------------------------------------------------------------------------------- /examples/pai_openai_responses.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_openai_responses.py -------------------------------------------------------------------------------- /examples/pai_openai_stream.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pai_openai_stream.py -------------------------------------------------------------------------------- /examples/pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/examples/pyproject.toml -------------------------------------------------------------------------------- /gateway/limits-schema.sql: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/limits-schema.sql -------------------------------------------------------------------------------- /gateway/package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/package.json -------------------------------------------------------------------------------- /gateway/src/api/anthropic.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/anthropic.ts -------------------------------------------------------------------------------- /gateway/src/api/base.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/base.ts -------------------------------------------------------------------------------- /gateway/src/api/bedrock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/bedrock.ts -------------------------------------------------------------------------------- /gateway/src/api/chat.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/chat.ts -------------------------------------------------------------------------------- /gateway/src/api/embeddings.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/embeddings.ts -------------------------------------------------------------------------------- /gateway/src/api/google.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/google.ts -------------------------------------------------------------------------------- /gateway/src/api/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/index.ts -------------------------------------------------------------------------------- /gateway/src/api/responses.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/api/responses.ts -------------------------------------------------------------------------------- /gateway/src/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/auth.ts -------------------------------------------------------------------------------- /gateway/src/db.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/db.ts -------------------------------------------------------------------------------- /gateway/src/gateway.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/gateway.ts -------------------------------------------------------------------------------- /gateway/src/handler.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/handler.ts -------------------------------------------------------------------------------- /gateway/src/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/index.ts -------------------------------------------------------------------------------- /gateway/src/otel/attributes.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/otel/attributes.ts -------------------------------------------------------------------------------- /gateway/src/otel/genai.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/otel/genai.d.ts -------------------------------------------------------------------------------- /gateway/src/otel/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/otel/index.ts -------------------------------------------------------------------------------- /gateway/src/providers/anthropic.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/anthropic.ts -------------------------------------------------------------------------------- /gateway/src/providers/azure.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/azure.ts -------------------------------------------------------------------------------- /gateway/src/providers/base.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/base.ts -------------------------------------------------------------------------------- /gateway/src/providers/bedrock.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/bedrock.ts -------------------------------------------------------------------------------- /gateway/src/providers/google/auth.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/google/auth.ts -------------------------------------------------------------------------------- /gateway/src/providers/google/index.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/google/index.ts -------------------------------------------------------------------------------- /gateway/src/providers/groq.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/groq.ts -------------------------------------------------------------------------------- /gateway/src/providers/huggingface.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/huggingface.ts -------------------------------------------------------------------------------- /gateway/src/providers/openai.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/openai.ts -------------------------------------------------------------------------------- /gateway/src/providers/test.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/test.ts -------------------------------------------------------------------------------- /gateway/src/providers/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/providers/utils.ts -------------------------------------------------------------------------------- /gateway/src/rateLimiter.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/rateLimiter.ts -------------------------------------------------------------------------------- /gateway/src/refreshGenaiPrices.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/refreshGenaiPrices.ts -------------------------------------------------------------------------------- /gateway/src/types.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/types.ts -------------------------------------------------------------------------------- /gateway/src/utils.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/src/utils.ts -------------------------------------------------------------------------------- /gateway/test/auth.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/auth.spec.ts -------------------------------------------------------------------------------- /gateway/test/env.d.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/env.d.ts -------------------------------------------------------------------------------- /gateway/test/gateway.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/gateway.spec.ts -------------------------------------------------------------------------------- /gateway/test/gateway.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/gateway.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/index.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/index.spec.ts -------------------------------------------------------------------------------- /gateway/test/otel.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/otel.ts -------------------------------------------------------------------------------- /gateway/test/providers/anthropic.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/anthropic.spec.ts -------------------------------------------------------------------------------- /gateway/test/providers/anthropic.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/anthropic.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/providers/azure.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/azure.spec.ts -------------------------------------------------------------------------------- /gateway/test/providers/azure.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/azure.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/providers/bedrock.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/bedrock.spec.ts -------------------------------------------------------------------------------- /gateway/test/providers/bedrock.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/bedrock.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/providers/google.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/google.spec.ts -------------------------------------------------------------------------------- /gateway/test/providers/google.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/google.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/providers/groq.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/groq.spec.ts -------------------------------------------------------------------------------- /gateway/test/providers/groq.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/groq.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/providers/huggingface.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/huggingface.spec.ts -------------------------------------------------------------------------------- /gateway/test/providers/huggingface.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/huggingface.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/providers/openai.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/openai.spec.ts -------------------------------------------------------------------------------- /gateway/test/providers/openai.spec.ts.snap: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/providers/openai.spec.ts.snap -------------------------------------------------------------------------------- /gateway/test/rateLimiter.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/rateLimiter.spec.ts -------------------------------------------------------------------------------- /gateway/test/routing.spec.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/routing.spec.ts -------------------------------------------------------------------------------- /gateway/test/setup.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/setup.ts -------------------------------------------------------------------------------- /gateway/test/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/tsconfig.json -------------------------------------------------------------------------------- /gateway/test/worker.ts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/worker.ts -------------------------------------------------------------------------------- /gateway/test/wrangler.jsonc: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/test/wrangler.jsonc -------------------------------------------------------------------------------- /gateway/tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/tsconfig.json -------------------------------------------------------------------------------- /gateway/vitest.config.mts: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/gateway/vitest.config.mts -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/package.json -------------------------------------------------------------------------------- /proxy-vcr/README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/README.md -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/anthropic-19999fbce5075795898578e3a57ad7330c7b9ee6f6f98c73f2237d050257214f.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/anthropic-19999fbce5075795898578e3a57ad7330c7b9ee6f6f98c73f2237d050257214f.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/anthropic-4c11824387b8f43920a23ef5196d9e437350f0b3c6708ef3212c1e50b52a9b35.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/anthropic-4c11824387b8f43920a23ef5196d9e437350f0b3c6708ef3212c1e50b52a9b35.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/anthropic-6f790aa5ed012c0702a8220c3507790e5636ee2f1c52e66e110d1dac712b2d63.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/anthropic-6f790aa5ed012c0702a8220c3507790e5636ee2f1c52e66e110d1dac712b2d63.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/anthropic-9752c34227c474614a0161c842bd67313be0932354998df27c07a1b9d8b29eaa.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/anthropic-9752c34227c474614a0161c842bd67313be0932354998df27c07a1b9d8b29eaa.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/anthropic-anthropic-chat-completion.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/anthropic-anthropic-chat-completion.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/azure-358cc480d17298f1874d3260d806b8b282395bbbe5b44f1408bc0e6fe4625339.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/azure-358cc480d17298f1874d3260d806b8b282395bbbe5b44f1408bc0e6fe4625339.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/azure-d3a027f470b4f1da6ffb9a81b8306a445928195e90737f13f6948226ba5cad49.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/azure-d3a027f470b4f1da6ffb9a81b8306a445928195e90737f13f6948226ba5cad49.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/bedrock-730cb860c2314477e9522a81cfc6a426d95100e670c17f661d05499461cf830c.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/bedrock-730cb860c2314477e9522a81cfc6a426d95100e670c17f661d05499461cf830c.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/bedrock-stream.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/bedrock-stream.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/google-vertex-3fc5cd750ad872a644781b8d4a149f2d8f685bbd2122866dcb4714cf6c38082c.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/google-vertex-3fc5cd750ad872a644781b8d4a149f2d8f685bbd2122866dcb4714cf6c38082c.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/google-vertex-anthropic-client.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/google-vertex-anthropic-client.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/google-vertex-fallback.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/google-vertex-fallback.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/google-vertex-stream.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/google-vertex-stream.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/groq-2f224a6a0ee54dbc66875193523cc7fb58b0600a5d409f2080a744ac07358e5f.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/groq-2f224a6a0ee54dbc66875193523cc7fb58b0600a5d409f2080a744ac07358e5f.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/groq-ba2f477133ec293f18d882d9fc5ac864036811ad9270ae2d5771e484d4b5a5c8.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/groq-ba2f477133ec293f18d882d9fc5ac864036811ad9270ae2d5771e484d4b5a5c8.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/huggingface-52d99571f9ebd7cd3b8f121ce7e530b8a81c69ac7102240783df08722646a9b5.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/huggingface-52d99571f9ebd7cd3b8f121ce7e530b8a81c69ac7102240783df08722646a9b5.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/huggingface-9fbe02785650116bca3cd03a1e1ca204ff7623332b5e833b6f874c960ff851ad.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/huggingface-9fbe02785650116bca3cd03a1e1ca204ff7623332b5e833b6f874c960ff851ad.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-3bc303f40e7bb2fd35f89381e2a0b1845c054b1f6879bc2daddf8f97bd89b60d.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-3bc303f40e7bb2fd35f89381e2a0b1845c054b1f6879bc2daddf8f97bd89b60d.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-77d5759136cb2982b73adf57a010bc66d6ed83681bdf01439a369e81765faeef.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-77d5759136cb2982b73adf57a010bc66d6ed83681bdf01439a369e81765faeef.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-8e81918655d25d21e5f24751d9a09701f16b8aba0c9c1a241245b108a30fde76.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-8e81918655d25d21e5f24751d9a09701f16b8aba0c9c1a241245b108a30fde76.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-9a8509cd0f73f89247e9c90cd6a287f535166ed3faf0ef79c821c9e7fa417531.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-9a8509cd0f73f89247e9c90cd6a287f535166ed3faf0ef79c821c9e7fa417531.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-bb9af470db8a6f5d27e4bec9910973ab2560c553630e55f5dd956224b9fc39cd.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-bb9af470db8a6f5d27e4bec9910973ab2560c553630e55f5dd956224b9fc39cd.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-e49ad150dd6581653dd61fbb73921b255ff9f19310f99aba15e749007fc8daaa.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-e49ad150dd6581653dd61fbb73921b255ff9f19310f99aba15e749007fc8daaa.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-fd2589389653eb8d00f2dec475e668144ac84c9ab6552fefa490c87ad778b5b0.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-fd2589389653eb8d00f2dec475e668144ac84c9ab6552fefa490c87ad778b5b0.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-stream-options-stream-false.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-stream-options-stream-false.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/cassettes/openai-stream-options.yaml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/cassettes/openai-stream-options.yaml -------------------------------------------------------------------------------- /proxy-vcr/proxy_vcr/main.py: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/proxy_vcr/main.py -------------------------------------------------------------------------------- /proxy-vcr/pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/proxy-vcr/pyproject.toml -------------------------------------------------------------------------------- /pyproject.toml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/pyproject.toml -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/tsconfig.json -------------------------------------------------------------------------------- /uv.lock: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pydantic/pydantic-ai-gateway/HEAD/uv.lock --------------------------------------------------------------------------------