OData のデータをAI アシスタントのPEP から利用する方法
CData API Server と ADO.NET Provider / JDBC Driver for OData を使って、AI アシスタントPEP(https://pep.work/) から OData に接続して、チャットボットでリアルタイムODataデータを使った応答を可能にする方法を説明します。
OData データ連携について
CData は、OData サービスのライブデータへのアクセスと統合を簡素化します。お客様は CData の接続機能を以下の目的で活用しています:
- OData バージョン 2.0、3.0、4.0 にアクセスでき、レガシーサービスと最新の機能・性能の両方に対応できます。
- $filter、$select、$expand などの高度なクエリオプションを活用し、サードパーティツールからのデータ取得を強化できます。
- サーバーサイドでの集計とグループ化の実行により、データ転送を最小化し、パフォーマンスを向上させます。
- Azure AD、ダイジェスト、ネゴシエート、NTLM、OAuth など、さまざまなスキームを使用して安全に認証でき、すべての接続でセキュアな認証を実現します。
- SQL ストアドプロシージャを使用して、OData サービスエンティティを管理できます。エンティティ間の関連付けの一覧表示、作成、削除などが可能です。
お客様は、Power BI、MicroStrategy、Tableau などのお気に入りのツールと OData サービスを定期的に統合し、OData サービスからデータベースやデータウェアハウスにデータをレプリケートするために CData のソリューションを使用しています。
はじめに
API Server の設定
以下のリンクからAPI Server の無償トライアルをスタートしたら、セキュアなOData OData サービスを作成していきましょう。
OData への接続
PEP からOData のデータを操作するには、まずOData への接続を作成・設定します。
- API Server にログインして、「Connections」をクリック、さらに「接続を追加」をクリックします。
- 「接続を追加」をクリックして、データソースがAPI Server に事前にインストールされている場合は、一覧から「OData」を選択します。
- 事前にインストールされていない場合は、コネクタを追加していきます。コネクタ追加の手順は以下の記事にまとめてありますので、ご確認ください。
CData コネクタの追加方法はこちら >> - それでは、OData への接続設定を行っていきましょう!
-
OData への接続
OData に接続するには、Url を有効なOData サービスルートURI に設定する必要があります。 OData サービスにルートドキュメントがない場合、テーブルとして公開したい特定のエンティティをFeedURL に指定してください。
OData への認証
OData は、以下を経由する認証をサポートします。
- HTTP
- Kerberos
- SharePoint Online
- OAuth
- Azure AD
HTTP 認証スキーム
HTTP で認証する場合は、次の表に従ってAuthScheme を設定します。
Scheme AuthScheme その他の設定 None None 認証を必要としない場合に使用。 Basic Basic User、Password NTLM NTLM User、Password Digest(サポートされている場合) Digest User、Password その他の認証方法の詳細は、ヘルプドキュメントの「接続の確立」セクションを参照してください。
- 接続情報の入力が完了したら、「保存およびテスト」をクリックします。
OData への接続
OData に接続するには、Url を有効なOData サービスルートURI に設定する必要があります。 OData サービスにルートドキュメントがない場合、テーブルとして公開したい特定のエンティティをFeedURL に指定してください。
OData への認証
OData は、以下を経由する認証をサポートします。
- HTTP
- Kerberos
- SharePoint Online
- OAuth
- Azure AD
HTTP 認証スキーム
HTTP で認証する場合は、次の表に従ってAuthScheme を設定します。
| Scheme | AuthScheme | その他の設定 |
| None | None | 認証を必要としない場合に使用。 |
| Basic | Basic | User、Password |
| NTLM | NTLM | User、Password |
| Digest(サポートされている場合) | Digest | User、Password |
その他の認証方法の詳細は、ヘルプドキュメントの「接続の確立」セクションを参照してください。
API Server のユーザー設定
次に、API Server 経由でOData にアクセスするユーザーを作成します。「Users」ページでユーザーを追加・設定できます。やってみましょう。
- 「Users」ページで ユーザーを追加をクリックすると、「ユーザーを追加」ポップアップが開きます。
-
次に、「ロール」、「ユーザー名」、「権限」プロパティを設定し、「ユーザーを追加」をクリックします。
-
その後、ユーザーの認証トークンが生成されます。各ユーザーの認証トークンとその他の情報は「Users」ページで確認できます。
OData 用のAPI エンドポイントの作成
ユーザーを作成したら、OData のデータ用のAPI エンドポイントを作成していきます。
-
まず、「API」ページに移動し、
「 テーブルを追加」をクリックします。
-
アクセスしたい接続を選択し、次へをクリックします。
-
接続を選択した状態で、各テーブルを選択して確認をクリックすることでエンドポイントを作成します。
OData のエンドポイントを取得
以上でOData への接続を設定してユーザーを作成し、API Server でOData データのAPI を追加しました。これで、OData 形式のOData データをREST API で利用できます。API Server の「API」ページから、API のエンドポイントを表示およびコピーできます。
オンプレミスDB やファイルからのAPI Server 使用(オプション)
オンプレミスRDB やExcel/CSV などのファイルのデータを使用する場合には、API Server のCloug Gateway / SSH ポートフォワーディングが便利です。是非、Cloud Gatway の設定方法 記事を参考にしてください。
PEP でOData のデータをチャットで使う設定
前項まででAPI ができたので、ここからはPEP 側での設定作業です。
PEP でOData のAPI をコールするシナリオを作成
PEP 側ではあらかじめSlack などのアプリケーションを構成しておきます。ここにAPI Server をコールするAI アシスタントのシナリオを追加していきます。
- 「会話編集」→「シナリオ」に移動し、新しいシナリオを作成します。
- シナリオ名を入力します。この例では、条件はSlack Homeを 選択しています。
- 「新規作成」ボタンをクリックすると、以下のようなシナリオエディタ画面に移動します。これでシナリオを作成する準備ができました。
OData のAPI の接続箇所の設定
具体的にAPI連携を含めたシナリオを作っていきます。
- 最初に検索したい文字列を受け取るための対話ノードを配置して、以下のように構成します。
- ポイントは分岐条件で「以下のすべての会話」、発言内容の記憶で「film_name」として、会話した内容を変数に保存することです。
- 対話ノードを配置したら、APIノードを追加して、対話ノードから接続していきます。
- APIノードでは、以下のように CData API Server へのリクエストを構成します。
ポイントは2つです。CData API Server は Filter 機能によって、取得するデータを絞り込むことができます。その指定が「$filter=contains(title,'{{ state.scenario_4.form.film_name }}')」の部分です。 「{{ state.scenario_4.form.film_name }}」は直前の対話ノードで設定した変数をパラメータとして渡しています。「scenario_4」はPEP のシナリオIDですので、作成したシナリオに合わせて変更してください。 - HTTPヘッダーにAPI Server のユーザートークンを指定します。
- API名:任意の名前を設定
- URL:http://apiserverurl/api.rsc/film_list?$filter=contains(title,'{{ state.scenario_4.form.film_name }}')
- HTTPメソッド:GET
- Content-Type:JSON
- HTTPヘッダー:キー「x-cdata-authtoken」、値「予め取得したAPI Serverのトークン」を指定
これで保存すると、API ノードが使えるようになります。
取得したOData からのレスポンスの表示方法
最後に後続の対話ノードを構成し、取得した検索結果を表示します。
対話ノードの応答文には、以下のような文章を埋め込みます。
検索結果は以下のとおりです。
{% for item in state.scenario_4.api_response.film_search.value %}
フィルムID:{{ item.FID }}
タイトル : {{ item.title }}
値段:{{ item.price }}
カテゴリー:{{ item.category }}
俳優: -----
{% endfor %}
ここでポイントになるのは、API Server から受け取るJSONのレスポンスの分解方法です。
API Server のレスポンスはオブジェクト直下にvalueという配列要素があり、このレスポンスは「{{state.scenario_4.api_response.film_search.value}}」の形でアクセスできます。
設定イメージ:state.シナリオID.api_response.APIノード名.value
これを「FOR」での繰り返し処理で取得して、文章として表示する仕組みになっています。
これで設定は完了です。実際に動かしてみると、OData →API Server → PEP 経由でデータを取得して表示していることがわかるかと思います。
CData API Server の無償版およびトライアル
CData API Server は、無償版および30日の無償トライアルがあります。是非、API Server ページ から製品をダウンロードしてお試しください。