6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Autonomous AI Database:REST API経由でSELECT AI RAGを使用する

6
Posted at

はじめに

Oracle DatabaseのAutoREST機能を使用して、SELECT AI RAGをREST API経由で使用する方法を検証してみました。

ここでの検証では、Sharepoint上のファイルに対するSELECT AI RAGを対象としていますが、クラウド・ストレージ上のファイルに対するSELECT AI RAGや通常のSELECT AIでも、同様の手法でREST API経由での利用が可能になります。

注意
こちらの記事の内容はあくまで個人のメモ的な内容のため、こちらの内容を利用した場合のトラブルには一切責任を負いません。
また、こちらの記事の内容を元にしたOracleサポートへの問い合わせはご遠慮ください。

0. 前提条件

こちらの2つの記事を参考にして、以下の準備をしておきます。
・リソース・プリンシパルの有効化
・Sharepointにアクセスするためのクレデンシャルの作成
・AIプロファイルの作成
・ベクトル索引の作成

1. ORDSの有効化

使用するDBユーザ(スキーマ)に対してORDSが有効化されていない場合にはをORDSを有効化します。

BEGIN
    ORDS.ENABLE_SCHEMA(
        p_enabled             => TRUE,
        p_schema              => 'SELECTAIUER',
        p_url_mapping_type    => 'BASE_PATH',
        p_url_mapping_pattern => 'selectai',
        p_auto_rest_auth      => FALSE
    );
    
    COMMIT;
END;
/

今回は検証を簡易にするために、認証なしでのアクセスを可能に設定しています。
(p_auto_rest_auth => FALSE)
実際の環境で使用する場合は、必要に応じて認証が必要なように設定してください。

1. ラッパーPL/SQLファンクションの作成

SELECT AIを実行するファンクションDBMS_CLOUD_AI.GENERATEのラッパーPL/SQLファンクションselect_ai_procを作成します。

ファンクションselect_ai_procは、自然言語プロンプト(in_prompt)と使用するAIプロファイルの名前(in_profile)をパラメータとして受け取り、actionに”NARRATE”を指定してDBMS_CLOUD_AI.GENERATEファンクションを実行した結果を返します。

CREATE OR REPLACE PROCEDURE select_ai_proc (in_prompt   IN  VARCHAR2,
                                            in_profile  IN  VARCHAR2
                                            response    OUT VARCHAR2 )
AS
BEGIN
    response := DBMS_CLOUD_AI.GENERATE(
                   prompt       => in_prompt,
                   profile_name => in_profile,
                   action       => 'NARRATE'
                );
END;

2. 作成したファンクションに対するAuto PL/SQLの有効化

ORDS.ENABLE_OBJECTプロシージャを使用して、PL/SQLファンクションselect_ai_procに対してAuto PL/SQLを有効化します。

BEGIN
    ORDS.ENABLE_OBJECT(
        p_enabled      => TRUE,
        p_schema       => 'SELECTAIUSER',
        p_object       => 'SELECT_AI_PROC',
        p_object_type  => 'PROCEDURE',
        p_object_alias => 'select_ai_proc'
    );

    COMMIT;
END;
/

3. 動作確認

curlコマンドでREST APIにPOSTリクエストを送信して、動作を確認してみます。
この例では、リクエストボディにin_prompt(自然言語プロンプト)、in_profile(使用するAIプロファイル名)をJSON形式で記述しています。

curl -X POST -H "Content-Type: application/json" -d '{"in_prompt":"どの記事のPVが一番多いですか","in_profile":"RAG_PROFILE"}' https://sya6vphk3pzlkhq-**********.adb.ap-tokyo-1.oraclecloudapps.com/ords/selectai/select_ai_proc/
user@mymac ~ % curl -X POST -H "Content-Type: application/json" -d '{"in_prompt":"どの記事のPVが一番多いですか","in_profile":"RAG_PROFILE"}' https://sya6vphk3pzlkhq-**********.adb.ap-tokyo-1.oraclecloudapps.com/ords/admin/select_ai_proc/ 

{"response":"記事のPVが一番多いのは、[OCI]Autonomous AI DatabaseからQiita APIをコールして、自分が投稿した記事のPVトップ10を調査してみたで、3913PVです。\n\nSources:\n  - MainSite/Shared Documents/FY26_Qiita_Result.xlsx (https://xxxxxxxxxx.sharepoint.com/sites/MainSite/Shared Documents/FY26_Qiita_Result.xlsx)"}%                                                                                                                                   user@mymac ~ % 

REST API経由でSELECT AIを使用できることが確認できました。

参考情報

ORDS PL/SQL Package Reference
DBMS_CLOUD_AI.GENERATEファンクション

6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?