LoginSignup
2
4

はじめに

先日衝撃的に登場したAzure OpenAI on your dataですが
ChatGPT プレイグラウンドに加えてAPIでも利用できるようになっています。
APIがうまく動かせなくてものすごくハマったので注意点をメモしていきます。

やってみた

ChatGPT プレイグラウンドにてon your dataの設定を済ませてさあAPIで動かしてみるぞ!って張り切っていました。

{"error":{"code":"InternalServerError","message":"Backend returned unexpected response. Please contact Microsoft for help."}}

何度試してもこのエラーが返されてしまい設定したパラメータを何度も確認したのですが
このエラーメッセージからは正直言いますとエラーの原因が分からず途方に暮れていました・・・

考察

APIの詳細を見ていきましょう。

まずはエンドポイントから

POST {your-resource-name}/openai/deployments/{deployment-id}/extensions/chat/completions?api-version={api-version}

your-resource-nameはお馴染みのhttps://xxxxx.openai.azure.comのようなエンドポイントが発行されますのでそれを設定します。

deployment-idはデプロイしたモデル名を指定します。私はgpt-4をデプロイしました。

api-version2023-06-01-previewを設定しました。

このエンドポイントには/extensions/というパスが含まれています。
入力候補の拡張機能とありこれは通常のchat completionsと異なるものになるかなと思います。

ではいよいよパラメータ仕様を見ていきます。
ここからが超重要ですw
最低限動作させるのに必要なパラメータは以下になります。
これはドキュメント通りだったと思いますね。
一つ一つ見ていきます。

curl -i -X POST YOUR_RESOURCE_NAME/openai/deployments/YOUR_DEPLOYMENT_NAME/extensions/chat/completions?api-version=2023-06-01-preview \
-H "Content-Type: application/json" \
-H "api-key: YOUR_API_KEY" \
-H "chatgpt_url: YOUR_RESOURCE_URL" \
-H "chatgpt_key: YOUR_API_KEY" \
-d \
'
{
    "dataSources": [
        {
            "type": "AzureCognitiveSearch",
            "parameters": {
                "endpoint": "'YOUR_AZURE_COGNITIVE_SEARCH_ENDPOINT'",
                "key": "'YOUR_AZURE_COGNITIVE_SEARCH_KEY'",
                "indexName": "'YOUR_AZURE_COGNITIVE_SEARCH_INDEX_NAME'"
            }
        }
    ],
    "messages": [
        {
            "role": "user",
            "content": "What are the differences between Azure Machine Learning and Azure Cognitive Services?"
        }
    ]
}
'

api-keyは発行されたAzure OpenAI用のAPIキーを設定しましょう。これはいつもchat completionsなど利用しているものと同じですね。

そしてchatgpt_urlがとてもトリッキーなポイントですw

https://xxxxx.openai.azure.com/openai/deployments/xxxxx/chat/completions?api-version=2023-03-15-preview"

これはextensions用ではなくていつも皆さんが使っているchat completionsのエンドポイントが正解だったのです。
ここにextensions用のエンドポイントを設定していたため先ほどのエラーが出ていました。

chatgpt_keyapi-keyと同じもので問題ありません。

dataSources部分を見ていきましょう。

endpointはCognitive Searchの設定で発行されたエンドポイントを設定しましょう。
おそらくhttps://xxxxx.search.windows.netのような感じになっていると思います。

keyもちょっと注意が必要ですね。
Cognitive Searchの設定で発行された管理者キーを設定してください。
クエリ キーではエラーが返却されて動作しませんでした・・・

indexNameは作成したインデックス名を指定すればOKです。

messagesパラメータはいつもと変わらない感じで大丈夫です。

さいごに

この問題が解決するまで1週間くらいネットを彷徨ってました。
解決できたときはとても嬉しかったですね。
エンジニアの皆様としてはやはりAPIでちゃんと動いてくれないと辛いものがありますよね。
同じように困った人に参考になる情報であれば幸いです。

2
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
4