DBMS_CLOUD_AIパッケージ
Select AIを使用したDBMS_CLOUD_AI
パッケージは、SQL文を生成、実行および説明するための自然言語プロンプトの翻訳を容易にして構成します。また、LLMとのチャットなど、検索拡張生成および自然言語ベースのインタラクションを可能にします。
前提条件
- Oracle Cloud InfrastructureドキュメンテーションのNAT Gatewayの作成の説明に従って、Autonomous Databaseリソースが存在するVirtual Cloud Network (VCN)でNATゲートウェイを作成します。
- NATゲートウェイを作成したら、Autonomous Databaseリソースが存在する各サブネット(VCN内)にルート・ルールおよびエグレス・セキュリティ・ルールを追加して、これらのリソースがゲートウェイを使用してAzure ADインスタンスから公開キーを取得できるようにします:
- サブネットの「サブネットの詳細」ページに移動します。
- 「Subnet Information」タブで、サブネットの「Route Table」の名前をクリックして、その「Route Table Details」ページを表示します。
- 既存のルート・ルールの表で、次の特性を持つルールがすでに存在します:
- 宛先: 0.0.0.0/0
- ターゲット・タイプ: NAT Gateway
- ターゲット: VCN内に作成したNATゲートウェイの名前
このようなルールが存在しない場合は、「ルート・ルールの追加」をクリックし、これらの特性を持つルート・ルールを追加します。
- サブネットの「サブネットの詳細」ページに戻ります。
- サブネットの「セキュリティ・リスト」表で、サブネットのセキュリティ・リストの名前をクリックして、その「セキュリティ・リストの詳細」ページを表示します。
- サイド・メニューの「リソース」で、「エグレス・ルール」をクリックします。
- 既存のエグレス・ルールの表で、次の特性を持つルールがすでに存在します:
- 宛先タイプ: CIDR
- 宛先: 0.0.0.0/0
- IPプロトコル: TCP
- ソース・ポート範囲: 443
- 宛先ポート範囲: すべて
そのようなルールが存在しない場合は、「エグレス・ルールの追加」をクリックし、これらの特性を持つエグレス・ルールを追加します。
環境のHTTPプロキシ設定では、データベースがクラウド・サービス・プロバイダにアクセスできるようにする必要があります。
ノート:
HTTPプロキシを含むネットワーク構成は、Exadataインフラストラクチャが「アクティブ化が必要」状態になるまで編集できます。いったんアクティブ化すると、それらの設定は編集できません。すでにプロビジョニングされているExadataインフラストラクチャのHTTPプロキシを設定するには、My Oracle Supportでサービス・リクエスト(SR)が必要です。詳細は、My Oracle Supportでのサービス・リクエストの作成を参照してください。
DBMS_CLOUD_AIサブプログラムの概要
この項では、Autonomous Databaseで提供されるDBMS_CLOUD_AI
サブプログラムについて説明します。
サブプログラム | 説明 |
---|---|
このプロシージャは、自然言語プロンプトをSQL文に変換するための新しいAIプロファイルを作成します。 |
|
この手順では、現在のデータベース内のAIプロファイルを無効にします。 |
|
この手順では、既存のAIプロファイルを削除します。 |
|
この手順により、AIプロファイルを現在のデータベースで使用できるようになります。 |
|
このファンクションは、変換にAIを使用してSQL文を生成します。 | |
このプロシージャは、AIプロファイル属性を設定します。 |
|
このプロシージャは、現在のデータベースのAIプロファイルを設定します。 |
CREATE_PROFILEプロシージャ
このプロシージャは、自然言語プロンプトをSQL文に変換するための新しいAIプロファイルを作成します。
構文
DBMS_CLOUD_AI.CREATE_PROFILE
profile_name IN VARCHAR2,
attributes IN CLOB DEFAULT NULL,
status IN VARCHAR2 DEFAULT NULL,
description IN CLOB DEFAULT NULL
);
Parameters
パラメータ | 説明 |
---|---|
|
AIプロファイルの名前。プロファイル名は、Oracle SQL識別子のネーミング・ルールに従う必要があります。プロファイル名の最大長は125文字です。 これは必須パラメータです。 |
|
JSON形式のプロファイル属性。詳細は、AIのプロファイル属性を参照してください。 デフォルト値はNULLです。 |
status |
プロファイルのステータス。 デフォルトでは、有効になっています。 |
|
AIプロファイルの説明。 デフォルト値はNULLです。 |
例
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE
(
profile_name => 'OpenAI,
attributes => JSON_OBJECT('provider' value 'openai',
'credential_name' value 'openai_cred'),
description => 'AI profile to use OpenAI for SQL translation'
);
END;
/
DROP_PROFILEプロシージャ
この手順では、既存のAIプロファイルを削除します。プロファイルが存在しない場合、プロシージャはエラーをスローします。
構文
DBMS_CLOUD_AI.DROP_PROFILE
(
profile_name IN VARCHAR2,
force IN BOOLEAN DEFAULT FALSE
);
Parameters
パラメータ | 説明 |
---|---|
|
AIプロファイルの名前 |
|
デフォルト値は |
例
BEGIN
DBMS_CLOUD_AI.DROP_PROFILE
(profile_name => 'OPENAI');
END;
/
使用上のノート
force
を使用してプロファイルを削除し、AIプロファイルが存在しない場合はエラーを無視します。
ENABLE_PROFILEプロシージャ
この手順では、ユーザーが指定したAIプロファイルを有効にします。このプロシージャは、AIプロファイルのステータスをENABLED
に変更します。
構文
DBMS_CLOUD_AI.ENABLE_PROFILE
(
profile_name IN VARCHAR2
);
Parameters
パラメータ | 説明 |
---|---|
|
有効にするAIプロファイルの名前 このパラメータは必須です。 |
AIプロファイルを有効にする例
BEGIN
DBMS_CLOUD_AI.ENABLE_PROFILE
(
profile_name => 'OPENAI'
);
END;
/
DISABLE_PROFILEプロシージャ
この手順では、現在のデータベースのAIプロファイルを無効にします。この手順では、AIプロファイルのステータスが DISABLED
に変更されます。
構文
DBMS_CLOUD_AI.DISABLE_PROFILE
(
profile_name IN VARCHAR2
);
Parameters
パラメータ | 説明 |
---|---|
|
AIプロファイルの名前。 このパラメータは必須です。 |
例
BEGIN
DBMS_CLOUD_AI.DISABLE_PROFILE
(
profile_name => 'OPENAI'
);
END;
/
SET_ATTRIBUTEプロシージャ
この手順では、AIプロファイル属性を設定できます。
構文
DBMS_CLOUD_AI.SET_ATTRIBUTE
(
profile_name IN VARCHAR2,
attribute_name IN VARCHAR2,
attribute_value IN CLOB
);
Parameters
AIプロファイルの属性を設定または変更できるのは所有者だけです。サポートされている属性のリストは、プロファイル属性を参照してください。
パラメータ | 説明 |
---|---|
|
属性を設定するAIプロファイルの名前。 このパラメータは必須です。 |
|
AIプロファイル属性の名前 このパラメータは必須です。 |
|
プロファイル属性の値。 デフォルト値はNULLです。 |
例
BEGIN
DBMS_CLOUD_AI.SET_ATTRIBUTE
(
profile_name => 'OPENAI',
attribute_name => 'credential_name',
attribute_value => 'OPENAI_CRED_NEW'
);
END;
/
SET_PROFILEプロシージャ
この手順では、現在のセッションのAIプロファイルを設定します。
データベース・セッションにAIプロファイルを設定した後、接頭辞SELECT AI
を持つSQL文は自然言語プロンプトとみなされます。AI
接頭辞で指定されたアクションに応じて、AIを使用してレスポンスが生成されます。AI
接頭辞を使用するには、AIキーワードを使用したプロンプトの入力を参照してください。オプションで、プロファイル属性をオーバーライドしたり、属性をJSON形式で指定して属性を変更できます。属性の設定については、SET_ATTRIBUTEプロシージャを参照してください。
AIプロファイルを現在のセッションに設定できるのは、AIプロファイルの所有者がセッションユーザーである場合だけです。
特定のデータベース・ユーザーのすべてのセッションまたはデータベース内のすべてのユーザー・セッションに対してAIプロファイルを設定するには、特定のユーザーまたはデータベース全体のAFTER LOGON
イベントに対してデータベース・イベント・トリガーを使用することを検討してください。詳細は、『Oracle Database 19cデータベースPL/SQL言語リファレンス』のCREATE TRIGGER文に関する項または『Oracle Database 23aiデータベースPL/SQL言語リファレンス』を参照してください。
構文
DBMS_CLOUD_AI.SET_PROFILE
(
profile_name IN VARCHAR2,
);
Parameters
パラメータ | 説明 |
---|---|
|
現在のセッションのAIプロファイルの名前。 このパラメータは必須です。 |
例
BEGIN
DBMS_CLOUD_AI.SET_PROFILE
(
profile_name => 'OPENAI'
);
END;
/
GENERATEファンクション
showsql
、narrate
、chat
などのサポートされているアクションを実行できます。デフォルトのアクションはshowsql
です。
この機能を使用すると、プロファイル属性の一部またはすべてをオーバーライドすることもできます。
構文
DBMS_CLOUD_AI.GENERATE
(
prompt IN CLOB,
profile_name IN VARCHAR2 DEFAULT NULL,
action IN VARCHAR2 DEFAULT NULL,
attributes IN CLOB DEFAULT NULL
) RETURN CLOB;
Parameters
パラメータ | 説明 |
---|---|
|
AIを使用して翻訳する自然言語プロンプト。 プロンプトには、接頭辞として このパラメータは必須です。 |
|
AIプロファイルの名前。AIプロファイルが デフォルト値はNULLです。 次の条件が適用されます。
ノート: データベース・アクションの場合、DBMS_CLOUD_AI.GENERATE にprofile_name 引数を指定するか、PL/SQLスクリプトとしてDBMS_CLOUD_AI.SET_PROFILE およびDBMS_CLOUD_AI.GENERATE の2つのステップを実行できます。
|
action |
AIを使用して自然プロンプトを翻訳するためのアクション。サポートされているアクションには、 ノート: このファンクションは、runsql アクションをサポートしていません。runsql アクションを指定すると、次のエラーが返されます。
|
attributes |
JSON形式で属性を指定して、特定のAIプロファイル属性をオーバーライドします。詳細は、「プロファイル属性」を参照してください。 |
例
次の例は、DBMS_CLOUD_AI.GENERATE
関数で使用できるshowsql
、narrate
およびchat
アクションを示しています。
showsql
アクションの例を次に示します。
SELECT DBMS_CLOUD_AI.GENERATE
(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'showsql')
FROM dual;
narrate
アクションの例を次に示します。
SELECT DBMS_CLOUD_AI.GENERATE
(prompt => 'how many customers',
profile_name => 'OPENAI',
action => 'narrate')
FROM dual;
chat
アクションの例を次に示します。
SELECT DBMS_CLOUD_AI.GENERATE
(prompt => 'what is oracle autonomous database',
profile_name => 'OPENAI',
action => 'chat')
FROM dual;
プロファイル属性
属性
属性名 | 説明 |
---|---|
|
Azure OpenAI Serviceデプロイ済モデルの名前。英数字、アンダースコア(_)およびハイフン(-)のみを使用できます。名前の最後には、アンダースコア(_)またはハイフン(-)は使用できません。 |
|
Azure OpenAIサービス・リソースの名前。リソース名に使用できるのは英数字とハイフンのみで、ハイフンで開始または終了することはできません。 |
|
AIを使用した自然言語プロンプトの翻訳に使用されるメタデータに列コメントを含めます。 ノート: attribute_value パラメータがCLOB データ型であるため、単一の属性を設定する場合、DBMS_CLOUD_AI.SET_ATTRIBUTE プロシージャではブール値は適用されません。
|
|
プロファイルに対して会話履歴が有効かどうかを示す |
|
AIプロバイダAPIにアクセスするための資格証明の名前。 Bearerトークンを使用する資格証明を作成するには、ユーザー名としてプロバイダ名を使用し、パスワードとしてBearerトークンを使用します。 この属性は必須です。CREATE_CREDENTIALプロシージャを参照してください。 |
|
世代ごとに予測するトークンの数を示します。デフォルトは1024です。詳細は、トークンとトークン化子を参照してください。 |
|
応答の生成に使用されるAIモデルの名前。 サポートされているモデル:
ノート: Azure OpenAIサービス・ポータルでデプロイメントを作成するときにモデルが決定されるため、このパラメータはAzureには使用されません。 |
|
SQLへの自然言語変換の対象となる所有者およびオブジェクト名を指定するJSONオブジェクトの配列。特定のユーザーのすべてのオブジェクトを含めるには、"name"を省略し、JSONオブジェクトで"owner"キーのみを指定します。 自然言語からSQLへの変換では、オブジェクト名、オブジェクト所有者、オブジェクト列およびコメントがHTTPSリクエストを使用してAIプロバイダに送信されます。オブジェクト・リストには、機密オブジェクト名、列名またはコメントを含むオブジェクトを指定しないでください。 AIプロバイダは、翻訳リクエストで許可されるメタデータのサイズに制限がある場合があります。アプリケーション・ユーザーによる自然言語プロンプトに適したオブジェクトのリストを制限することを検討してください。 書式:
|
|
OCI生成AIサービスをコールするときにアクセスを許可されるコンパートメントのOCIDを指定します。コンパートメントIDには、英数字、ハイフンおよびドットを含めることができます。 デフォルトは、Autonomous DatabaseのコンパートメントIDです。 |
|
この属性は、Oracle専用AIホスティング・クラスタのエンドポイントOCIDを示します。エンドポイントIDには、英数字、ハイフンおよびドットを含めることができます。エンドポイントOCIDを検索するには、生成AIでのエンドポイントの詳細の取得を参照してください。 Oracle専用AIクラスタを使用する場合は、ホスティング・クラスタのエンドポイントOCIDを指定する必要があります。 デフォルトでは、エンドポイントIDは空で、モデルは共有インフラストラクチャ上でオンデマンドです。 |
|
この属性は、指定されたモデルのランタイム・タイプを示します。この属性は、 許可される値はすべて、OCI生成AI runtimeTypeにあります。LlmInferenceRequestリファレンスを参照してください。 サポートされている値は次のとおりです。
|
|
AIプロファイルのAIプロバイダ。 サポートされるプロバイダ:
この属性は必須です。 |
|
この属性は、使用する生成AIクラスタの場所を示します。リージョンには、英数字とハイフン文字を含めることができます。
ノート: Oracle Generative AIクラスタは、シカゴ、フランクフルトおよびロンドン・リージョンで使用できます。生成AIでの事前トレーニング済基盤モデルを参照してください。us-chicago-1 です。
|
|
生成されたテキストは、最も早い停止シーケンスの先頭に終了します。シーケンスはテキストに組み込まれます。属性値は、JSON形式の文字列値の有効な配列である必要があります。 |
|
「テキストの生成」モデルからのサンプリングにはランダム性が組み込まれているため、「生成」をクリックするたびに同じプロンプトで異なる出力が生成される場合があります。温度は、乱数を調整するために使用される負でない浮動小数点数です。温度が低いと、ランダムな世代が少なくなります。詳細は、Temperatureを参照してください。このパラメータは、サポートされているすべてのサービス・プロバイダに適用されます。 |
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE
(
profile_name => 'COHERE',
attributes =>
'{"provider": "cohere",
"credential_name": "COHERE_CRED",
"object_list": [{"owner": "ADB_USER"}],
"max_tokens":512,
"stop_tokens": [";"],
"model": "command-nightly",
"temperature": 0.5,
"comments": true
}');
END;
/
次の例は、OCI生成AIを使用したカスタム・プロファイル属性を示しています。
BEGIN
DBMS_CLOUD_AI.CREATE_PROFILE
(
profile_name => 'GENAI',
attributes => '{"provider": "oci",
"credential_name": "GENAI_CRED",
"object_list": [{"owner": "SH", "name": "customers"},
{"owner": "SH", "name": "countries"},
{"owner": "SH", "name": "supplementary_demographics"},
{"owner": "SH", "name": "profits"},
{"owner": "SH", "name": "promotions"},
{"owner": "SH", "name": "products"}],
"oci_compartment_id": "ocid1.compartment.oc1...",
"oci_endpoint_id": "ocid1.generativeaiendpoint.oc1.us-chicago-1....",
"region": "us-chicago-1",
"model": "cohere.command-light",
"oci_runtimetype": "COHERE"
}');
END;
/