P0-3: Azure OpenAI provider
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 157
- Forks
- 32
- Avg merge
- 1h 25m
- Merged PRs (30d)
- 145
Description
Problem
LiteLLM ships native Azure OpenAI. ai-gateway has none — Azure customers (the larger half of OpenAI's enterprise revenue) cannot route through us.
Scope
DP (moonming/ai-gateway)
- New crate
crates/aisix-provider-azure-openai/(or extend openai crate withwith_azure_endpoint(...)). - Endpoint shape:
POST {base}/openai/deployments/{deployment}/chat/completions?api-version={version}+ the embeddings + completions variants. - Auth header:
api-key: <key>(NOTAuthorization: Bearer) by default; also support Entra ID OAuth2Authorization: Bearer <token>mode. - Streaming SSE works (Azure OpenAI has same SSE shape as OpenAI).
CP (api7/api7ee-3-control-plane)
- Provider enum: add
azure_openai. - Credential additional fields:
api_base(Azure endpoint URL),api_version,deployment_id. Or keepprovider_configJSONB flexible and document the Azure-required keys. - Optional: separate
auth_modefield (api_keyvsentra_id) for Entra path.
Dashboard UI (api7/AISIX-Cloud)
- Provider picker adds Azure OpenAI.
- Credential form: api_base + api_version + auth mode (key OR Entra) + key/tenant/client_id/client_secret.
- Model form: deployment_id field becomes required when provider=azure_openai.
e2e
- Mock Azure OpenAI endpoint shape (it's OpenAI-compatible enough to extend the existing mock-llm).
Estimate
DP 2-3d, CP 1d, UI 1d, e2e 0.5d
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing provider implementation in crates/aisix-provider-azure-openai/ or the openai crate, then inspect the control-plane provider enum and credential fields, the AISIX-Cloud provider and model forms, and the existing mock-llm e2e setup. Done means Azure OpenAI chat, embeddings, completions, streaming, both auth modes, control-plane credentials, dashboard configuration, and mocked end-to-end coverage work across the listed components.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- azure, rust
- Domain
- api, backend-api-design, cloud, frontend, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100