DifyのMicrosoft AI Searchカスタムツールをちょっと便利にした
はじめに
Dify work with Microsoft AI SearchでMicrosot AI Searchのカスタムツールのデモが公開されてこれはいいなと思って使ってみました。
これはこれでうまくAI Searchと連携してRAGができそうなんだけど、このツールだとgetの検索結果全文を返してくるので結果次第では文字列多すぎてLLM側のトークン制限にひっかかったりして実用的じゃなかったので、もうちょいマシな感じにしてみました。
具体的にはPOSTメソッドに変更してリクエストボディのselect
とtop
を使えるようにして情報量を絞り込めるようにしました
カスタムツールのJSON
{
"openapi": "3.0.0",
"info": {
"title": "Azure Cognitive Search Integration",
"version": "1.0.0"
},
"servers": [
{
"url": "https://[AI_SEARCH_SERVICE_NAME].search.windows.net"
}
],
"paths": {
"/indexes/[INDEX_NAME]/docs/search": {
"post": {
"operationId": "postExampleSearchResults",
"parameters": [
{
"name": "api-version",
"in": "query",
"required": true,
"schema": {
"type": "string",
"example": "2024-11-01-preview"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InputData"
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"@odata.context": { "type": "string" },
"value": {
"type": "array",
"items": {
"type": "object",
"properties": {
"@search.score": { "type": "number" },
"ID": { "type": "string" },
"Sample": { "type": "string" },
"Question": { "type": "string" },
"Answer": { "type": "string" },
"Category1": { "type": "string" },
"Category2": { "type": "string" },
"UM": { "type": "string" },
"ServiceMenu": { "type": "string" },
"AzureSearch_DocumentKey": { "type": "string" },
"metadata_storage_name": { "type": "string" },
"metadata_storage_path": { "type": "string" }
}
}
}
}
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"InputData": {
"properties": {
"search": {
"type": "string",
"title": "Search"
},
"select": {
"type": "string",
"title": "Select"
},
"top": {
"type": "number",
"title": "Select"
}
},
"type": "object",
"required": [
"search",
"select"
],
"title": "InputData"
}
}
}
}
カスタムツールの作り方
上部のメニューから ツール
→ カスタム
→ カスタムツールを作成する
を選択します
上記のスキーマを入力します。[AI_SEARCH_SERVICE_NAME]
、[INDEX_NAME]
は適宜読み替えてください。
下段の認証方法
で認証タイプAPIキー
、カスタム
。
キーapi-key
、値Microsoft AI Searchの管理者キー
を入力して保存します。
利用可能なツール中のテスト
ボタンをクリックします
パラメータを入力してテストボタンをクリックするとテスト結果が返ってきます。このサンプルではAI Searchのインデックスをビルトインのhotels-sample-index
にしました。
テスト結果が正常であればカスタムツールを保存して完成です。
使ってみる
作成したカスタムツールを追加して以下のように設定します。api-version
、select
、top
等のパラメータは用途に応じて変更してください。
LLMのプロンプトを工夫すればこのようにMicrosoft AI Searchのインデックスを使って簡単にRAGを使うことができます。
おわりに
DifyのナレッジベースでMicrosoft AI Searchを使うことができれば多様なデータをインデックス化できるので便利です。うまく組み合わせれば実用的な業務用エージェントが作れるかもしれないのでいろいろ応用してみようと思います。
Discussion