ROMANCE DAWN for the new world

Microsoft Azure を中心とした技術情報を書いています。

Azure Functions の Azure OpenAI Extension で 404 エラーが発生する場合の確認事項

Azure Functions では、Azure OpenAI 向けの拡張機能(Preview)が提供されていますが、関数を呼び出した際の 404 エラーに遭遇したので顛末をまとめておきます。
learn.microsoft.com

現象

Text completion input binding などの関数を呼び出した際に、下記のように 404 エラーが発生しました。


[2025-01-17T06:48:58.834Z] Executed 'Functions.GenerateText' (Failed, Id=88d16bb1-2c58-4db4-a173-98208885ae76, Duration=1065ms)
[2025-01-17T06:48:58.838Z] System.Private.CoreLib: Exception while executing function: Functions.GenerateText. Azure.AI.OpenAI: The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.
[2025-01-17T06:48:58.849Z] Status: 404 (DeploymentNotFound)
[2025-01-17T06:48:58.852Z] ErrorCode: DeploymentNotFound
[2025-01-17T06:48:58.856Z]
[2025-01-17T06:48:58.861Z] Content:
[2025-01-17T06:48:58.864Z] {"error":{"code":"DeploymentNotFound","message":"The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again."}}
[2025-01-17T06:48:58.867Z]
[2025-01-17T06:48:58.870Z] Headers:
[2025-01-17T06:48:58.877Z] x-ms-client-request-id: d6ccf64a-504c-471c-b100-d8ff659824d9
[2025-01-17T06:48:58.880Z] apim-request-id: REDACTED
[2025-01-17T06:48:58.883Z] Strict-Transport-Security: REDACTED
[2025-01-17T06:48:58.886Z] X-Content-Type-Options: REDACTED
[2025-01-17T06:48:58.889Z] x-ms-region: REDACTED
[2025-01-17T06:48:58.895Z] Date: Fri, 17 Jan 2025 06:48:57 GMT
[2025-01-17T06:48:58.897Z] Content-Length: 197
[2025-01-17T06:48:58.899Z] Content-Type: application/json
[2025-01-17T06:48:58.901Z] .

原因

以前は正常に動作していたコードなので1時間くらい悩んだのですが、原因はシンプルでエンドポイントが間違っていました。

Azure Portal ではなく、

AI Foundry のモデルのエンドポイントを使うのが正解です。URL の openai/deployments/gpt-4o/chat/completions?api-version=2024-08-01-preview を除いた https://xxx-xxx-eastus2.cognitiveservices.azure.com/ までを使ってください。

ちなみに、以前は Azure Portal のエンドポイントで正常に動作していました。正確には Azure Functions ではなく、AOAI 側のエンドポイントの違いです。

対応

local.settings.json において、正しいエンドポイントとキーを定義します。

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated",
    "AZURE_OPENAI_ENDPOINT": "https://xxx-xxx-eastus2.cognitiveservices.azure.com/",
    "AZURE_OPENAI_KEY": "xxx",
    "CHAT_MODEL_DEPLOYMENT_NAME": "gpt-4o"
}