2023年6月26日月曜日

CohereのCo.GenerateをOracle APEXから呼び出してみる

 以前にCohereのCo.Classifyを呼び出すAPEXのアプリケーションを作成しました。こちらの記事です。同じアプリケーションに、Co.GenerateのAPIを呼び出すページを作ってみました。

CohereのCo.GenerateのAPIの説明はこちらです。

作成したページで、ExamplesのAd Copy AIDA Frameworkを呼び出してみます。

すでにCo.Classifyの実装が済んでいるところから始めます。

新しいページの名前をGenerate、ページ番号3として作成します。

ページの作成をクリックします。


フォームを選択します。


ページ番号は3、名前はGenerateとします。ページ・モードは標準です。

データ・ソースはローカル・データベース、ソース・タイプとしてSQL問合せを選択し、SQL SELECT文を入力に以下を記述します。ページ・アイテムを作成するためのSELECT文で、フォームのソースとしては使いません。


ナビゲーションはデフォルトのまま、ブレッドクラムとナビゲーションの双方を生成します。

次へ進みます。


主キー列1としてID(Number)を選択します。ブランチ・ページの送信時にここにブランチ、取り消してページに移動の双方に、自分自身であるページ番号3を指定します。

ページの作成をクリックします。


フォームのページが作成されます。最低限必要な調整を行います。

ページ・アイテムP3_PROMPTを選択し、識別のタイプをテキスト領域に変更します。検証の必須の値をオン、最大長を4000とします。


Co.Generateのレスポンスを保持するページ・アイテムとして、P3_RESPONSEを作成します。

識別の名前はP3_RESPONSE、タイプはテキスト領域、ラベルはResponseとします。


レスポンスに含まれる生成された文字列を一覧する、対話モード・レポートを作成します。

リージョンを作成し、識別のタイトルをGenerateとします。タイプとして対話モード・レポートを選択します。ソースのタイプとしてSQL問合せを選択し、SQL問合せに以下を記述します。

select clob001 from apex_collections where collection_name = 'GENERATE'


Cohereが生成した文字列には改行が含まれています。改行を認識させるため、列CLOB001のタイプをリッチ・テキストに変更し、設定の書式としてマークダウンを選択します。

ヘッダーはTextに変更します。


Co.GenerateのAPIを呼び出すコードを記述します。

左ペインでプロセス・ビューを表示し、プロセス・フォームGenerateを選択します。

設定のターゲット・タイプをPL/SQL Codeに変更し、挿入/更新/削除するPL/SQLコードとして以下を記述します。

失われた更新の防止はオフ、行のロックはNoに変更します。


以上でアプリケーションとしては動作します。

動作や見た目を調整します。

フォームGenerateの属性を開き、編集の実行可能な操作より行の更新と行の削除のチェックを外します。このフォームには、行の更新と削除は実装していません。


プロセス初期化フォームGenerate、ボタンDELETE、ボタンSAVEを選択し、ビルド・オプションでコメント・アウトします。これらの機能も使われることはありません。


ページ・アイテムP3_NUM_GENERATIONS、P3_MAX_TOKENS、P3_PRESET、P3_K、P3_P、P3_FREQUENCY_PENALTY、P3_PRESENCE_PENALTY、P3_STOP_SEQUENCES、P3_LOGIT_BIAS、P3_TRUNCATE、P3_STREAMを選択し、レイアウトの新規行の開始をオフにします。


以上でページの調整も完了です。

作成したアプリケーションを実行すると、本記事の先頭のGIF動画のように動作します。

作成したアプリケーションのエクスポートとして、以前のエクスポートを更新しています。
https://github.com/ujnak/apexapps/blob/master/exports/sample-cohere-api.zip

Oracle APEXのアプリケーション作成の参考になれば幸いです。

完