Introduction to Connectors
https://docs.cohere.com/docs/connectors
Coralへリクエストを送信する際に、connectorsに自分で作成したコネクタを含めることにより、LLMに外部の知識を追加することができるようになります。
Oracle REST Data ServicesにREST APIを作成し、自作コネクタとして定義してCohereのPlaygroundから呼び出してみました。以下、作業の手順を記載します。
とりあえず、Playgroundから呼び出すだけ呼び出してみました。
作成したConnectorはDashboardから確認できます。なぜか最初のConnectorはAPIからでないと作成できませんでした。1つConnectorが作成されていると、New connectorのボタンが表示されるようになります。
CohereのConnectorとして登録するORDSのREST APIを作成します。
モジュールはcohere、テンプレートはsearchとします。CohereからはPOSTメソッドが呼び出されます。
ハンドラのコードとして以下を記述します。特に何かを検索せず、リクエストにqueryとして渡される文字列をそのままtextとして返します。
認証による保護はかけません。Connectorはservice_auth、oauth2(認可コード・グラント)、user_access_token(パス・スルー)の3種類の認証手順を使ってConnector(今回はOracle REST Data ServicesのREST API)を呼び出すことができますが、どれもORDSのREST APIの保護と(今までの調査の範囲では)互換がなさそうです。ORDSのREST APIをCohereのConnectorとして呼び出す際のAPIの保護に関しては課題です。
以下より、CohereのConnector APIを呼び出して、Oracle REST Data ServicesのREST APIをConnectorとして追加するAPEXアプリケーションを作成します。
CohereのAPIキーがWeb資格証明COHERE_API_KEYとして登録しておきます。
認証タイプとしてHTTPヘッダーを選択します。資格証明名はAuthorization、 資格証明シークレットはBearerで始めて空白で区切り、CohereのAPIキーを続けた文字列を設定します。
空のアプリケーションを作成します。名前はCohere Connectorsとします。
アプリケーションが作成されたら、共有コンポーネントのRESTデータ・ソースを開きます。Connectorの操作はRESTデータ・ソースとして実装します。
RESTデータ・ソースの作成は最初からを選択し、次へ進みます。続く画面で、RESTデータ・ソースの一般的な設定を行います。
RESTデータ・ソース・タイプとして簡易HTTPを選択します。名前はCohere Connectors API、URLエンドポイントとして以下を設定します。
https://api.cohere.ai/v1/connectors
次へ進みます。
リモート・サーバー、ベースURL、サービスURLパスなどが自動的に設定されます。
変更は不要なので、そのまま次へ進みます。
ページ区切りタイプはページ区切りなしです。
次へ進みます。
認証が必要ですをオンにし、資格証明としてCOHERE_API_KEYを選択します。
検出をクリックします。
RESTデータ・ソースの作成をクリックします。
RESTデータ・ソースCohere Connector APIが作成されます。
このRESTデータ・ソースを開き、Connectorの作成、更新、削除を行なう操作を追加します。
操作の追加をクリックします。
HTTPメソッドとしてPOST、データベース操作として行の挿入を選択します。リクエスト本文テンプレートとして以下を記述します。
{
"name":"#NAME#",
"description":"#DESCRIPTION#",
"url":"#URL!RAW#",
"service_auth": {
"type": "#TYPE#",
"token": "#TOKEN!RAW#"
}
}
以上を設定し、一旦、作成をクリックします。
作成された操作POSTを再度開き、操作パラメータの本文との同期をクリックします。
Content-Typeヘッダーを操作パラメータとして追加します。
パラメータの追加をクリックします。
タイプとしてHTTPヘッダーを選択します。名前はContent-Type、目的は入力、デフォルト値はapplication/jsonです。静的をオンにし値の変更を禁止します。
パラメータの追加をクリックします。
以上でConnectorの作成を行なう操作は追加できました。
変更の適用をクリックします。
先ほど同じ手順で操作で、Connectorの更新を行なう操作を追加します。
URLパターンに/:idを設定します。HTTPメソッドはPATCH、データベース操作は行の更新です。リクエスト本文テンプレートとして以下を記述します。
{
"service_auth": {
"type": "#TYPE#",
"token": "#TOKEN!RAW#"
}
}
一旦、操作PATCHを作成し、再度操作を開いた後に、本文の同期とContent-Typeヘッダーの追加を行います。
URLパターンのidも、操作パラメータとして追加します。
Connectorの削除を行なう操作を追加します。
URLパターンは/:id、HTTPメソッドとしてDELETE、データベース操作として行の削除を選択します。
操作DELETEではリクエスト本文パラメータとContent-Typeヘッダーは不要です。操作パラメータにURLパターンのidを追加します。
以上でCohereのConnectorを操作するRESTデータ・ソースは完成です。
Connectorの一覧と操作を行なうページを、フォーム付き対話モード・レポートのページとして作成します。
ページの作成を開始し、対話モード・レポートを選択します。
レポートの名前はConnectors、フォーム・ページを含めるをオンにし、フォーム・ページ名はConnector Detailとします。
データ・ソースとしてRESTデータ・ソースを選択し、RESTデータ・ソースとしてCohere Connector APIを選択します。
次へ進みます。
主キー列1としてID (Varchar2)を選択します。
ページの作成をクリックします。
対話モード・レポートとフォームのページが作成されます。
対話モード・レポートのページはそのままで利用できますが、フォームはレポートの列と作成、更新、削除の操作が受け付けるパラメータが異なるため、調整が必要です。
ページ・デザイナでフォームのページを開きます。
ページ・アイテムとしてP3_ID、P3_URL、P3_NAME、P3_DESCRIPTION、P3_TYPE、P3_TOKENを作成します。P3_IDのタイプは非表示で作成済みですが、他のページ・アイテムは作成されていないものもあります。P3_DESCRIPTIONはタイプをテキスト領域、それ以外はテキスト・フィールドとして作成します。
ページ・アイテムP3_URL、P3_NAME、P3_DESCRIPTIONは作成時にのみ設定可能で、更新はできません。そのため、読取り専用のタイプにアイテムはNULLではないを選択し、アイテムにP3_IDを設定します。
Connectorの認証パラメータであるservice_authのtypeは常にbearerとするため、デフォルトのタイプに静的を選択し、静的値にbearerを設定します。
ページ・アイテムの準備は以上で完了です。
プロセス・ビューを開きます。
デフォルトで作成されているプロセスプロセス・フォームConnector Detailでは処理が適切に行われないため、ビルド・オプションでコメント・アウトします。
Connectorを作成するプロセスを、名前Create Connectorとして作成します。タイプはAPIの呼出しです。
設定のタイプはRESTソース、RESTソースとしてCohere Connector API、操作にPOSTを選択します。
サーバー側の条件のボタン押下時にCREATEを設定します。
パラメータは、ページ番号の接頭辞を除きページ・アイテムの名前と一致しているため、適切なページ・アイテムが割り当てられます。
操作はPATCH - /:id、サーバー側の条件のボタン押下時にSAVEを設定します。
Connectorの削除を行なうプロセスは名前Delete Connectorとして作成します。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
操作はDELETE - /:id、サーバー側の条件のボタン押下時にDELETEを設定します。
以上でCohereのConnectorを操作するアプリケーションは完成です。
先ほど作成したORDS REST APIをConnectorとして作成します。
名前はMy First Connectorとしています。URLはORDS REST APIの完全なURLを設定します。REST API自体には保護はかけられていないため、Tokenには適当な文字列を入力します。
ConnectorとしてMy First Connectorが登録されます。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/cohere-connectors291.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
完