はじめに
こんにちは、ACS事業部の佐竹です。
あけましておめでとうございます。本年もどうぞよろしくお願いいたします。
気分的にも体型的にも、正月気分が抜けきらぬ状態ですが、本年も記事を書いていこうと思います。
さて、今回ご紹介したいのは現在プレビュー中の機能である、Azure OpenAI ServiceのAdd your dataについてです。
Add your dataは昨年のMicrosoft buildで発表されて注目を集めていたコーディングなしで社内独自のナレッジを組み込んだ回答をする生成AIを作成出来る機能となります。
(Introducing Azure OpenAI Service On Your Data in Public Preview)
https://techcommunity.microsoft.com/t5/ai-azure-ai-services-blog/introducing-azure-openai-service-on-your-data-in-public-preview/ba-p/3847000
本記事はAdd your dataの概要及び利用方法をつらつらと書いてみました。
Add your dataの概要
今までは以下のサンプルコードにも記載がある通り、RAGアーキテクチャ等のプロンプトエンジニアリングの手法を用いることで社内独自のナレッジをシステムへ組み込むことが主流でした。
(Introducing Azure OpenAI Service On Your Data in Public Preview)
https://github.com/Azure-Samples/azure-search-openai-demo
従来の方法でも社内独自のナレッジを取り扱うことは出来たのですが、数点の課題がありました。
- アプリの実装難易度が高い(RAGアーキテクチャ等の実装)
- LangChain等のライブラリを使うと、ライブラリのversion upに都度対応しなければならない
- AI Search内で使用するインデックスを自前で生成する必要がある
... etc
そこでAdd your dataを使うと、APIをAzure OpenAI Serviceが自動で準備してくれるので、アプリ側から用意してくれたAPIを利用するだけで独自ナレッジへの回答が可能となり、 さらにはAI Search内で使用するIndexは自動で生成してくれます。
今回はそんなAdd your dataをアプリに組み込むためのAPIとして使う為にはどのような方法があるか、記載してみました。
Add your dataのAPIを利用する方法
Add your dataのAPIを利用する方法は2パターンあります。
1. Completions extensions APIを利用する方法
2. Add your dataからデプロイしたWeb AppsのAPIを叩く方法
それぞれの方法について考察していきます。
1. Completions extensions APIを利用する方法
Completions extensions APIを直接利用するパターンはリクエストごとにデータソースを切り替えることができるので、会話の内容によってデータソースを切り替えたり柔軟に利用できます。 (例えば、A案件にはこの独自ナレッジを使って、B案件にはこの独自ナレッジを使って...等)
公式のドキュメントにも使用方法がわかりやすく掲載されています。
(Azure OpenAI Service REST API reference)
https://learn.microsoft.com/en-us/azure/ai-services/openai/reference#completions-extensions
例えば、AI Searchを使ってのリクエストだと以下のようになります。
- Completions extensions APIへのリクエスト
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" \ -d \ ' { "temperature": 0, "max_tokens": 1000, "top_p": 1.0, "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 AI services?" } ] }'
"dataSources"の箇所にエンドポイントとインデックス名を入れて使用する独自ナレッジを切り替えることが出来るようになっていることがわかります。
実装では、上記の部分のインデックス名を質問された内容毎に切り分けて回答すると、質問者が求める情報により近い回答が出来ると考えております。
2. Add your dataからデプロイしたWeb AppsのAPIを叩く方法
「Add your data」から自動デプロイしたWeb Appsに対して、APIリクエストをするパターンはクラアントからのリクエストがシンプルになります。
では、実際にどのようなリクエストになるか見てみましょう
- Web AppsのAPIへのリクエスト
curl --request POST \ --url https://{your web apps}.azurewebsites.net/conversation \ --header 'Content-Type: application/json' \ --data '{ "messages": [ {"role": "user", "content": "I want to rent a luxurious house."} ] }'
ヘッダー部分がかなり簡潔に記載出来ることが一目瞭然でわかります。
ポイントとしてはリクエストするURLがhttps://{your web apps}.azurewebsites.net/conversationと/conversationとなるのがポイントです。
また、使用するデータソースは固定されるので、異なる独自ナレッジを使用したい場合は、新たにWebAppsをデプロイする必要があります。
まとめ
最後にAdd your dataのまとめになります。
Add your dataはノーコード・ローコードで独自ナレッジへの回答を提供するAPIを作成することが出来る機能
Add your dataが提供するAPIを利用する方法は以下二つ
→1. Completions extensions APIを利用する方法
メリット:データソース先を柔軟に切り替えることが出来るので、状況に応じて柔軟に独自のナレッジを選択出来る
デメリット:アプリ側の実装量が増える
→2. Add your dataからデプロイしたWeb AppsのAPIを叩く方法
メリット:簡単にAPIを作成することが出来る
デメリット:データソースは固定されるので、柔軟性には欠けることに加えて、APIの提供するにあたり、Azure Web Appsをデプロイするので、コスト及び障害ポイントが一つ増えてしまう
それぞれの利用方法でメリット・デメリットがあると思うので、利用用途に合わせてご使用ください。
おわりに
みなさま企業独自の情報にも応えてくれるAIの作成方法とその概念はどうだったでしょうか。 個人的にはReActの概念は非常に面白く、これから様々なシチュエーションでAI利活用の助けをしてくれる存在だと確信しております。
本記事がみなさまの 生成AI利活用の一助となれば幸いです。
それでは。
【PR】 私達ACS事業部はAzure・AKSなどのクラウドネイティブ技術を活用した内製化のご支援をしております。
また、一緒に働いていただける仲間も募集中です! 今年もまだまだ組織規模拡大中なので、ご興味持っていただけましたらぜひお声がけください。