SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

Dev Proxy を使用して Ollama で Azure OpenAI API をシミュレートする

leave a comment

調べ物をしていて Dev Proxy (開発プロキシ) という、Microsoft 製品のいくつかのワークロードをローカルリソースでシミュレートするためのツールの存在を知りました。

このツールがサポートするシナリオとして Azure OpenAI API をシミュレートする があります。

このシナリオを使用してローカルの Ollama のモデルを使用して Azure OpenAI API をシミュレートするということができましたのでメモを残しておきたいと思います。

Azure OpenAI API のシミュレート

Azure OpenAI API のシミュレートではローカル LM として Ollama を使用することができます。
使用するモデルは 開発プロキシでローカル言語モデルを使用する に記載されている通り任意のモデルに設定変更できます。

シミュレートの手順としては次のようになります。

  1. Ollama をダウンロードして任意のモデルをダウンロード
  2. ターミナルで「ollama serve」を実行
    • 通常の Ollama の起動でも問題ないのですが、Dev Proxy からのアクセス状況がターミナルで分かるように起動しています。
      image
  3. 「%USERPROFILE%\AppData\Local\Programs\Dev Proxy\devproxyrc.json」を編集
  4. ターミナルで「devproxy」を実行
    • 次のメッセージが表示されていれば、Ollama に正常に接続ができています。
      image

「devproxyrc.json」については次のような設定を使用しています。

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.0/rc.schema.json",
  "plugins": [
    {
      "name": "RetryAfterPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    },
    {
      "name": "GenericRandomErrorPlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll",
      "configSection": "genericRandomErrorPlugin"
    },
    {
      "name": "OpenAIMockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/dev-proxy-plugins.dll"
    }
  ],
  "urlsToWatch": [
    "https://jsonplaceholder.typicode.com/*",
    "https://*.openai.azure.com/openai/deployments/*/completions*"
  ],
  "genericRandomErrorPlugin": {
    "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.28.0/genericrandomerrorplugin.schema.json",
    "errorsFile": "devproxy-errors.json",
    "rate": 50
  },
  "languageModel": {
    "enabled": true,
    "model": "phi4",
    "client": "Ollama",
    "url": "http://localhost:11434"
  },
  "logLevel": "trace",
  "newVersionNotification": "stable",
  "showSkipMessages": true,
  "showTimestamps": true,
  "validateSchemas": true
}

設定の JSON ファイルの設定については次のドキュメントで確認できます。

Dev Proxy を起動すると「127.0.0.1:8000」でプロキシが起動しますので、このプロキシを介して (例: netsh winhttp set proxy)、API にアクセスをさせるようにします。

Dev Proxy の「urlsToWatch」で設定した URL がプロキシでローカル要求に変換されて処理されますので、次のような Azure OpenAI に対して要求を行った場合、プロキシが湯汲をインターセプトして Ollama にリクエストを投げるようになります。

Invoke-RestMethod -Method "POST" `
-Uri "https://xxxxxxx.openai.azure.com/openai/deployments/gpt-4o-mini/chat/completions?api-version=2023-09-15-preview" `
-ContentType "application/json" `
-Body '{"messages":[{"role":"system","content":"You are AI Assistant"},{"role":"user","content":"why is the sky blue?"}]}'

 

正常に設定できていれば、Dev Proxy を介して Ollama の「/api/chat」へのアクセスが確認できます。

image

Dev Proxy を使用することで、Azure OpenAI に直接アクセスを行えなくてもローカル LM を LLM として使用して、API のテストを行うことが可能となります。

 

なぜ Dev Proxy を使おうと思ったか

最新の SSMS では Copilot が搭載されていますが、使用できる AI の環境は Azue OpenAI に限定されています。

これを Dev Proxy を介して Ollama が使えないかが気になって試していました。

結果としては SSMS Copilot から Dev Proxy を介して Ollama にアクセスさせることは出来そうだったのですが、要求を処理することができておらず、エラーとなってしまい、SSMS Copilot で Ollama を使用するということは実現できませんでした。

Share

Written by Masayuki.Ozawa

6月 22nd, 2025 at 10:26 pm

Posted in Azure OpenAI,Ollama

Tagged with ,

Leave a Reply