Skip to main content
Archived

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.4 deployment を Zed の AI Agent として使いたい

このプロキシは responses-first の方針で実装しています。
主に POST /v1/responses を Zed から受け取り、Azure OpenAI の Responses API に中継します。

事前準備

以下を準備してください。

  • Azure OpenAI resource
  • Azure OpenAI 上の gpt-5.4 deployment
  • 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_ENDPOINT
  • AOAI_PROXY_AZURE_OPENAI_DEPLOYMENT

任意:

  • AOAI_PROXY_AZURE_OPENAI_API_VERSION
  • AOAI_PROXY_AZURE_OPENAI_BEARER_TOKEN
  • AOAI_PROXY_HOST
  • AOAI_PROXY_PORT
  • AOAI_PROXY_LOG_LEVEL
  • AOAI_PROXY_REQUEST_TIMEOUT_SECONDS
  • AOAI_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)

Source distribution for aoai_proxy 0.1.13
File Size Uploaded Provenance
aoai_proxy-0.1.13.tar.gz 9.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for aoai_proxy 0.1.13
File Interpreter ABI Platform
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.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page