This project has been archived by its maintainers, and is no longer receiving any updates.
aoai_proxy
Zed からは OpenAI 互換 API サーバとして見えつつ、Azure OpenAI には Entra ID 認証で接続するための軽量プロキシです。
Azure OpenAI 側で API キー認証を無効化していても、ローカルで az login 済みであれば、Zed の OpenAI compatible provider から gpt-5.4 を利用できます。
これは何?
このプロキシは、次のような用途を想定しています。
- Azure OpenAI 側では API キー認証を無効化している
- Azure OpenAI には Entra ID 認証でアクセスしたい
- Zed からは OpenAI compatible provider として使いたい
- Azure OpenAI 上の
gpt-5.4deployment を Zed の AI Agent として使いたい
このプロキシは responses-first の方針で実装しています。
主に POST /v1/responses を Zed から受け取り、Azure OpenAI の Responses API に中継します。
事前準備
以下を準備してください。
- Azure OpenAI resource
- Azure OpenAI 上の
gpt-5.4deployment - Azure CLI
az login済みのローカル環境- Zed
- Python 3.12+ または Docker / Docker Compose
- Docker Desktop
また、Azure OpenAI の endpoint と deployment 名が必要です。
例:
- endpoint:
https://your-resource.cognitiveservices.azure.com - deployment:
gpt-5.4
クイックスタート
1. 設定ファイルを作る
.env.example をコピーして .env を作ります。
cp .env.example .env
.env に最低限以下を設定してください。
AOAI_PROXY_AZURE_OPENAI_ENDPOINT=https://your-resource.cognitiveservices.azure.com
AOAI_PROXY_AZURE_OPENAI_DEPLOYMENT=gpt-5.4
AOAI_PROXY_AZURE_OPENAI_API_VERSION=preview
2. Docker で起動する
docker compose up --build
バックグラウンドで起動する場合:
docker compose up -d --build
3. 動作確認
ヘルスチェック:
curl http://127.0.0.1:8000/healthz
モデル一覧:
curl http://127.0.0.1:8000/v1/models
Responses API の簡単な確認:
curl http://127.0.0.1:8000/v1/responses \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-5.4",
"input": "こんにちは。1文で返答してください。"
}'
4. ローカルで直接起動したい場合
依存を入れて起動します。
pip install .
python -m aoai_proxy.main
または:
aoai_proxy
Zed の設定方法
Zed では OpenAI compatible provider としてこのプロキシを追加します。
重要なポイント
- Base URL は
http://localhost:8000/v1 - API Key はダミー値でよい
- Model は Azure 側の deployment 名を使う
chat_completionsはfalseにする
このプロキシは responses-first なので、Zed には /v1/responses を使わせる構成を推奨します。
設定例
{
"language_models": {
"openai_compatible": {
"aoai_proxy": {
"api_url": "http://localhost:8000/v1",
"available_models": [
{
"name": "gpt-5.4",
"max_tokens": 200000,
"max_output_tokens": 32000,
"max_completion_tokens": 200000,
"capabilities": {
"tools": true,
"images": false,
"parallel_tool_calls": false,
"prompt_cache_key": false,
"chat_completions": false
}
}
]
}
}
}
}
Zed での確認ポイント
- モデル:
gpt-5.4 - OpenAI compatible provider の接続先:
http://localhost:8000/v1 chat_completions: false
補足
なぜ /responses を使うのか
今回の Azure OpenAI gpt-5.4 deployment では、/chat/completions よりも Responses API を使う構成の方が安定していました。
そのため、このプロキシは /v1/responses を正規ルートとして扱います。
どこまで動作確認できているか
少なくとも以下は確認済みです。
- Zed の OpenAI compatible provider から接続できる
- Azure OpenAI へ Entra ID 認証で接続できる
POST /v1/responsesが成功する- Zed の AI Agent で通常応答が表示される
- terminal tool 呼び出しと、その結果を踏まえた応答が返る
注意点
- 問題切り分け時は、長い既存 session ではなく 新しい clean session / thread で確認してください
- 長い session では
function_call/function_call_outputの履歴が大量に蓄積し、不安定化の原因になることがあります - 対象ファイルに未保存変更がある場合、Zed の edit 系 tool は安全のため停止することがあります
- Azure CLI 認証を使うため、Docker 利用時は
~/.azureをコンテナにマウントする必要があります
主な環境変数
必須:
AOAI_PROXY_AZURE_OPENAI_ENDPOINTAOAI_PROXY_AZURE_OPENAI_DEPLOYMENT
任意:
AOAI_PROXY_AZURE_OPENAI_API_VERSIONAOAI_PROXY_AZURE_OPENAI_BEARER_TOKENAOAI_PROXY_HOSTAOAI_PROXY_PORTAOAI_PROXY_LOG_LEVELAOAI_PROXY_REQUEST_TIMEOUT_SECONDSAOAI_PROXY_TOKEN_SCOPE
テスト
テスト依存を入れる:
uv sync --extra test
テスト実行:
uv run pytest -q
ライセンス
MIT
Metadata
Release files for aoai_proxy 0.1.13
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| aoai_proxy-0.1.13.tar.gz | 9.5 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aoai_proxy-0.1.13-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 20.2 kB
Release files / aoai_proxy-0.1.13.tar.gz
| Download URL | aoai_proxy-0.1.13.tar.gz |
|---|---|
| Size | 9.5 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
70817d085db11d1d15388c9b0c0b70e266a220a09e8521ca32c16c0a17e85002
|
|
BLAKE2b-256 checksum How to use checksums |
fe939572b7ab4ce9791582cca3626f241b190c1b4fbce92a4f9978d6469bdcab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Release files / aoai_proxy-0.1.13-py3-none-any.whl
| Download URL | aoai_proxy-0.1.13-py3-none-any.whl |
|---|---|
| Size | 10.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
64f8c7b4c8dd40c09edbb1a074ec305210ca993e34362ec68ec65c709e46e672
|
|
BLAKE2b-256 checksum How to use checksums |
4a89a9d9b7d2d3119caf2903cea904f93b7e1f7e145c56e2418446cfe7083949
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.11.19 {"installer":{"name":"uv","version":"0.11.19","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}
|
Security for aoai_proxy 0.1.13
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.