以下のように動作します。APIの呼び出すことが目的なので、それほど凝った実装は行いません。
Cohereのホーム・ページにアクセスし、TRY NOWをクリックしてトライアルのアカウントを取得します。こちらのアカウントの取得手順については、Cohereから情報を入手してください。
アカウントを作成したら、DASHBORDのAPI Keysを開き、トライアルのAPIキーをコピーします。
ワークスペース・ユーティリティのWeb資格証明を開きます。
作成をクリックします。
名前はCohere API、静的IDはCOHERE_APIとします。
認証タイプにHTTPヘッダーを選択し、資格証明名、つまりHTTPヘッダー名としてAuthorizationを指定します。
資格証明シークレットはAuthorizationヘッダーの値になります。Bearerで始めて、空白で区切り、CohereのAPIキーを続けて入力します。
URLに対して有効として、以下を入力します。
https://api.cohere.ai/v1/
以上で作成をクリックします。
Web資格証明としてCohere APIが作成されます。
CohereのAPIを呼び出すAPEXアプリケーションを作成します。
アプケーション作成ウィザードを起動し、空のアプリケーションを作成します。名前はCohereとします。
アプリケーションの作成を実行します。
アプリケーションが作成されたら、ページの作成を実行します。空白のページを作成し、Cohereが提供するClassifyのAPIの呼び出しを実装します。
空白ページを選択します。
ページの作成を実行します。
Co.Classifyのリクエストは、JSONドキュメントに複数のinputsとexamplesを含みます(リクエストの詳細はAPI ReferenceのBODY PARAMSを参照のこと)。それぞれを保持するためにAPEXコレクションを作成し、対話グリッドで編集します。
inputsとexamplesを保持するAPEXコレクションを、CLASSIFY_INPUTS、CLASSIFY_EXAMPLESとして作成します。
共有コンポーネントのアプリケーション・プロセスを開きます。
名前はAPEXコレクションの初期化、ポイントとして新規インスタンス(新規セッション)開始時を選択します。
次へ進みます。
コードとして以下を記述します。
次へ進みます。
条件は不要なので、そのままプロセスの作成を実行します。
アプリケーション・プロセスが作成されます。これでセッションの開始時にAPEXコレクションCLASSIFY_INPUTSとCLASSIFY_EXAMPLESが作成されます。
ページ・デザイナで作成した空白のページClassifyを開きます。
対話グリッドのリージョンを作成します。
識別の名前はInputs、タイプは対話グリッドとします。ソースのタイプにSQL問合せを選択し、SQL問合せとして以下のSELECT文を記述します。
select seq_id, c001 from apex_collections where collection_name = 'CLASSIFY_INPUTS'
APEXコレクションでは、列SEQ_IDが一意の値なので、これを主キーとして取り扱います。
列SEQ_IDを選択し、識別のタイプを非表示に変更します。ソースの主キーをオンにします。
列C001を選択し、識別のタイプをテキスト・フィールド、ヘッダーをC001からinputsに変更します。
対話グリッドの属性を開き、編集の有効をオンに切り替えます。
プロセス・ビューを開き、対話グリッドの操作を行うプロセスInputs - 対話グリッド・データの保存を選択します。
設定のターゲット・タイプをPL/SQL Codeに変更し、挿入/更新/削除するPL/SQLコードとして以下を記述します。
失われた更新の防止はオフ、行のロックはNoとします。APEXコレクションは開始しているAPEXセッションでのみ有効で、他のセッションとデータが共有されることはありません。そのため、これらの設定は不要です。
以上でinputsを操作する対話グリッドが出来上がりました。
続いてexamplesを操作する対話グリッドを作成します。対話グリッドinputsを重複させます。
重複させた(コピーした)対話グリッドの識別の名前をexamplesに変更します。
ソースのSQL問合せを以下に変更します。
select seq_id, c001, c002 from apex_collections where collection_name = 'CLASSIFY_EXAMPLES'
列C001を選択し、ヘッダーをtextに変更します。
列C002を選択し、識別のタイプをテキスト・フィールド、ヘッダーをlabelに変更します。
プロセス・ビューを開き、プロセスInputs - 対話グリッド・データの保存を重複させます。
重複(コピー)したプロセスの識別の名前をExamples - 対話グリッド・データの保存に変更します。編集可能リージョンとしてexamplesを選択します。
設定の挿入/更新/削除するPL/SQLコードは、以下の記述に入れ替えます。
CohereのCo.ClassifyのAPIのリクエストとなるinputs、examplesを扱う対話グリッドは、出来上がりました。
これらのデータからJSONリクエストを作成し、CohereのAPIを呼び出します。
ボタンを作成します。
識別の名前はSUBMIT、ラベルはSubmit、動作のアクションはデフォルトのページの送信とします。
APIのレスポンスを保持するページ・アイテムを作成します。
識別の名前はP2_RESPONSE、タイプとしてテキスト領域を選択します。ラベルはResponseとします。
外観の高さは20行とします。
プロセス・ビューを開き、ボタンSUBMITを押したときに実行されるプロセスを作成します。
識別の名前はCall Co.Classifyとします。タイプとしてコードを実行を選択します。
ソースのPL/SQLコードとして以下を記述します。
サーバー側の条件のボタン押下時にSUBMITを選択します。
以上でAPEXアプリケーションは完成です。
アプリケーションを実行すると、記事の先頭のGIF動画のように動作します。
CohereのAPIにはこの他にCo.Generate、Co.Embed、Co.Tokenize、Co.Detokenize、Co.Detect_language、Co.Summarize、Co.Rerankがあります。
今回作成したAPEXアプリケーションのエクスポートを以下に置きました。
https://github.com/ujnak/apexapps/blob/master/exports/sample-cohere-api.zip
Oracle APEXのアプリケーション作成の参考になれば幸いです。
追記
レスポンスの表示がJSONのまま、というのもいまひとつなので、以下のSQLをソースとした対話モード・レポートを実装してみました。
更新されたアプリの画面は以下になります。
完