Python用のSelect AI
select_aiクライアント・ライブラリを使用して、PythonアプリケーションからAutonomous AI DatabaseのDBMS_CLOUD_AI機能にアクセスします。
Select AI for Pythonは、自然言語プロンプトからSQLを生成し、生成されたSQLを実行および説明し、コンテキストの会話を維持し、コンテンツを要約および翻訳し、合成データを生成し、Retrieval-Augmented Generation (RAG)ワークフローを構築します。
Select AI for Pythonでは、ストリーム・テキスト・レスポンス、同期および非同期プログラミング、外部ホスト・ネットワーク・アクセス管理、接続プーリングおよびオプションのコマンドライン・インタフェースもサポートされます。
サポートされているプラットフォーム
Select AI for Pythonは、Autonomous AI Database 26aiおよび19cで認定されています。その他のプラットフォームはライブラリで動作する可能性がありますが、動作保証されていません。
python-select-ai GitHubリポジトリで製品の問題を報告します。
Python用のSelect AIのインストール
pipを使用してSelect AI for Pythonパッケージをインストールします:
python3 -m pip install select_aiオプションのコマンド行インタフェース依存関係をインストールするには、次を使用します。
python3 -m pip install 'select_ai[cli]'Select AI for Pythonは、Python 3.11、3.12、3.13および3.14をサポートしています。
データベース権限およびネットワーク・アクセスの管理
Select AI for Pythonは、データベース・パッケージ権限、HTTPアクセスおよび外部ホスト・ネットワーク・アクセスを分離します。
データベース・パッケージ権限
次のAPIを使用して、データベース・パッケージ権限を付与または取り消します。
select_ai.grant_privileges(...)
select_ai.revoke_privileges(...)これらのAPIは、次のデータベース・パッケージ権限をサポートしています。
DBMS_CLOUDDBMS_CLOUD_AIDBMS_CLOUD_AI_AGENTDBMS_CLOUD_PIPELINE
HTTPアクセス
HTTPアクセスを管理するには、次のAPIを使用します。
select_ai.grant_http_access(...)
select_ai.revoke_http_access(...)外部ホストネットワークアクセス
ネットワーク・アクセスAPIを使用して、外部ホストのホスト・アクセス制御リスト・エントリを管理します。ホスト、必要な権限およびオプションのポート範囲を指定します。
同期API:
select_ai.grant_network_access(...)
select_ai.revoke_network_access(...)非同期API:
await select_ai.async_grant_network_access(...)
await select_ai.async_revoke_network_access(...)実行可能な操作
次の表に、Select AI for Pythonの主な機能をまとめます。
| 能力 | 摘要 |
|---|---|
| 自然言語からSQLへ | 自然言語プロンプトからSQLを生成し、生成されたSQLを実行し、SQLを説明し、自然言語で問合せ結果を記述します。 |
| 検索拡張生成 | 生成AIレスポンスに関連するコンテンツを取得するベクトル索引を作成および管理します。 |
| 会話 | 関連するリクエスト全体のプロンプト履歴と会話のコンテキストを維持します。 |
| AIプロファイル | AIプロバイダ、資格証明、モデル・パラメータ、データベース・オブジェクトおよびベクトル索引を構成します。 |
| 合成データ | 指定された属性に基づいて合成データを生成します。 |
| 要約 | テキストまたはデータベースのクエリー結果を要約します。 |
| 翻訳 | テキストをソース言語からターゲット言語に翻訳します。 |
| フィードバック | 生成されたSQLの肯定的または否定的なフィードバックを記録し、既存のフィードバックを削除します。 |
| 同期および非同期API | アプリケーション要件に基づいて、同期APIまたはPythonのasyncおよびawaitコンストラクトを使用します。 |
| 接続プーリング | コンカレント・アプリケーションの共有同期接続プールまたは非同期接続プールを作成します。 |
| ストリーミング・レスポンス | サポートされているプロファイル・メソッドから、構成可能なチャンクで生成されたCLOBテキストを受信します。 |
| コマンド行インタフェース | 端末からのチャット、SQL操作、プロファイル、サマリーおよび変換を操作します。 |
| 外部ホストネットワークアクセス | 同期APIまたは非同期APIを使用して、外部ホストへのアクセス権を付与または取り消します。 |
| AIエージェント | エージェント固有のクラスおよび操作については、Select AI Agent for Pythonを参照してください。 |
サポートされているクラス
次の表に、Pythonクラスの主要なSelect AIの概要を示します。
| クラスまたはクラス・グループ | 目的 |
|---|---|
| プロバイダ・クラス | プロファイルに関連付けられたAIプロバイダを定義します。 |
ProfileおよびAsyncProfile |
AIプロファイルとプロセス・プロンプトを作成および管理します。 |
ProfileAttributes |
プロバイダ、資格証明、最大トークン、温度、オブジェクト・リスト、ベクトル索引などのプロファイル設定を定義します。 |
ConversationおよびAsyncConversation |
コンテキスト依存の会話を作成および管理します。 |
ConversationAttributes |
会話の設定およびコンテキストを定義します。 |
VectorIndexおよびAsyncVectorIndex |
RAGのベクトル索引を作成および管理します。 |
VectorIndexAttributes |
ベクトル索引設定を定義します。リフレッシュがスケジュールされたベクトル索引の場合は、vector_index.get_next_refresh_timestamp()を使用して次のリフレッシュのUTCタイムスタンプを取得します。 |
SyntheticDataAttributes |
合成データ生成設定を定義します。 |
プロバイダ・クラス
Select AI for Pythonには、次のプロバイダ・クラスが含まれています。
OpenAIProviderAzureProviderOCIGenAIProviderAWSProviderGoogleProviderAnthropicProviderCohereProviderHuggingFaceProvider
プロバイダ固有の属性およびサポートされるパラメータについては、Select AI for Python APIリファレンスを参照してください。
AIプロファイルの操作
AIプロファイルは、PythonアプリケーションをAIプロバイダに接続し、Select AIがプロンプトを処理する方法を定義します。プロファイルには、プロバイダ情報、資格証明、モデル設定、データベース・オブジェクトおよびベクトル索引を含めることができます。
Select AI for Pythonでは、同期プロファイル・クラスと非同期プロファイル・クラスが提供されます。
| 処理中 | Class |
|---|---|
| 同期 | Profile |
| 非同期 | AsyncProfile |
一度に1つの操作を処理するアプリケーションで同期プロファイルを使用します。コンカレント要求を処理するアプリケーションまたはイベント・ループを使用するアプリケーションでは、非同期プロファイルを使用します。
次の表に、一般的に使用されるプロファイル関数を示します。
| 機能 | 摘要 |
|---|---|
create() |
データベースにAIプロファイルを作成するか、既存のプロファイルを置き換えます。create() GitHubのドキュメントを参照してください。 |
delete() |
AIプロファイルを削除します。delete() GitHubのドキュメントを参照してください。 |
fetch() |
データベースから既存のプロファイルを取得します。 |
get_attributes() |
現在のプロファイル属性を返します。get_attributes() GitHubのドキュメントを参照してください。 |
set_attribute() |
1つのプロファイル属性を更新します。 |
set_attributes() |
複数のプロファイル属性を更新します。 |
generate() |
指定されたアクションに基づいてプロンプトを処理します。generate() GitHubのドキュメントを参照してください。 |
run_sql() |
SQLを生成および実行します。これは、デフォルトのアクションです。run_sql() GitHubのドキュメントを参照してください。 |
show_sql() |
SQLを実行せずに生成します。show_sql() GitHubのドキュメントを参照してください。 |
explain_sql() |
生成されたSQLについて説明します。explain_sql() GitHubのドキュメントを参照してください。 |
narrate() |
問合せ結果を自然言語で記述します。narrate() GitHubのドキュメントを参照してください。 |
chat() |
生成AIモデルに自由形式のプロンプトを送信します。chat() GitHubのドキュメントを参照してください。 |
show_prompt() |
生成AIモデルに送信された構築済プロンプトを返します。show_prompt() GitHubのドキュメントを参照してください。 |
summarize() |
提供されたコンテンツを要約します。summarize() GitHubのドキュメントを参照してください。 |
translate() |
テキストをソース言語からターゲット言語に変換します。translate() GitHubのドキュメントを参照してください。 |
generate_synthetic_data() |
指定された属性に基づいて合成データを生成します。generate_synthetic_data() GitHubのドキュメントを参照してください。 |
add_positive_feedback() |
生成されたSQLに対する肯定的なフィードバックを記録します。add_positive_feedback() GitHubのドキュメントを参照してください。 |
add_negative_feedback() |
生成されたSQLに対するマイナスのフィードバックを記録します。add_negative_feedback() GitHubのドキュメントを参照してください。 |
delete_feedback() |
以前に記録されたフィードバックを削除します。delete_feedback() GitHubのドキュメントを参照してください。 |
メソッドおよびパラメータの完全なリストは、Select AI for Python APIリファレンスを参照してください。
Select AIアクションの詳細は、AIキーワードを使用したプロンプトの入力も参照してください。
ストリーム・プロファイル応答
完全なCLOBレスポンスを待たずに、アプリケーションで生成されたテキストが使用可能になったときに処理する必要がある場合、ストリーミングを使用します。
ProfileクラスおよびAsyncProfileクラスは、次のパラメータによるストリーミングをサポートしています。
| パラメータ | 摘要 |
|---|---|
stream=True |
生成されたテキストをストリームとして返します。 |
chunk_size |
各チャンクで返される生成済テキストの量を設定します。 |
ストリーミングは、次のプロファイル・メソッドでサポートされています。
| メソッド | ストリーミング・サポート |
|---|---|
chat() |
はい |
narrate() |
はい |
explain_sql() |
はい |
show_sql() |
はい |
show_prompt() |
はい |
run_sql() |
いいえ |
run_sql()メソッドはデータベース結果を返し、ストリーミングをサポートしません。
会話の操作
会話を使用して、関連するプロンプト間のコンテキストを保守します。会話にはプロンプト履歴が格納されるため、後のリクエストは以前のリクエストからの情報を参照できます。
Select AI for Pythonでは、同期および非同期の会話クラスが提供されます。
| 処理中 | Class |
|---|---|
| 同期 | Conversation |
| 非同期 | AsyncConversation |
ConversationAttributesを使用して、会話設定を定義します。
アプリケーションでコンテキスト・チャットまたは一連の関連する自然言語リクエストが必要な場合に会話を使用します。各リクエストが独立している場合は、プロファイルを直接使用します。
ベクトル索引の使用
ベクトル索引を使用して、Retrieval-Augmented Generationをサポートします。ベクトル索引は、関連するコンテンツを取得し、生成AIモデルがレスポンスを生成する前にそのコンテンツをプロンプトに追加します。
Select AI for Pythonには、次のベクトル索引クラスが用意されています。
| 処理中 | Class |
|---|---|
| 同期 | VectorIndex |
| 非同期 | AsyncVectorIndex |
ベクトル索引構成を定義するには、VectorIndexAttributesを使用します。
VectorIndex.create()メソッドは、wait_for_completionパラメータをサポートします。ベクトル索引の作成が終了するまでメソッドが待機してから戻すかどうかを制御するには、このパラメータを設定します。
vector_index.get_next_refresh_timestamp()を使用して、次にスケジュールされたリフレッシュのUTCタイムスタンプを取得します。
データベース側の詳細は、「CREATE_VECTOR_INDEXプロシージャ」を参照してください。
合成データの生成
generate_synthetic_data()を使用して、指定された属性に基づいて合成データを生成します。
SyntheticDataAttributesを使用して、合成データ設定を定義します。これらの設定では、生成するデータおよび生成AIモデルで使用されるパラメータについて説明します。
合成データは、本番レコードを使用せずに代表的なデータを必要とする開発、デモンストレーションおよびその他のシナリオをサポートできます。
既存のオブジェクトの取得および更新
Select AI for Pythonは、データベース・バックアップ・プロキシ・オブジェクトを取得および更新するための一貫したメソッドを提供します。
| メソッド | 目的 |
|---|---|
fetch() |
既存のデータベース・オブジェクトを取得し、対応するプロキシ・オブジェクトを返します。 |
set_attribute() |
プロキシ・オブジェクトの1つの属性を更新します。 |
set_attributes() |
プロキシ・オブジェクトの複数の属性を更新します。 |
これらのメソッドは、プロファイル、会話、ベクトル索引およびその他のサポートされているプロキシ・オブジェクトを操作するための一貫した方法を提供します。
クラス・メソッドを使用したオブジェクトの削除
アプリケーションが最初にプロキシ・オブジェクトを作成またはフェッチせずにオブジェクトを削除する必要がある場合は、クラスレベルのdeleteメソッドを使用します。
Profile.delete_profile(profile_name)
VectorIndex.delete_index(index_name)同期および非同期APIの使用
Select AI for Pythonは、プライマリ操作に同期および非同期APIを提供します。
次の表は、同期クラスと操作を、対応する非同期クラスにマップしています。
| 同期クラスまたは操作 | 非同期同等 |
|---|---|
Profile |
AsyncProfile |
Conversation |
AsyncConversation |
VectorIndex |
AsyncVectorIndex |
select_ai.create_pool() |
select_ai.create_pool_async() |
select_ai.grant_network_access() |
select_ai.async_grant_network_access() |
select_ai.revoke_network_access() |
select_ai.async_revoke_network_access() |
次のようなアプリケーションでの非同期APIの使用:
- 複数のプロンプトを同時に処理します。
- イベント・ループを使用します。
- 非同期Pythonフレームワークと統合します。
- データベース操作の待機中にブロックを回避する必要があります。
select_ai.create_pool_async()を使用して、非同期ワークフロー用の共有接続プールを作成します。
AsyncProfileは、Profileと同じサポートされているテキスト・メソッドからのストリーミングをサポートしています。stream=Trueを設定し、必要に応じてchunk_sizeを指定します。
完全な非同期APIリファレンスは、Select AI for Python APIリファレンスを参照してください。
接続プールの管理
アプリケーションが繰返しまたは同時データベース・リクエストを処理する場合は、接続プールを使用します。
Select AI for Pythonには、次のプール作成関数が用意されています。
| 処理中 | 機能 |
|---|---|
| 同期 | select_ai.create_pool() |
| 非同期 | select_ai.create_pool_async() |
共有プールは、すべてのリクエストに対して新しいデータベース接続を作成する必要性を低減し、同時アプリケーション・ワークロードをサポートします。
コマンドライン・インタフェースの使用
オプションのselect-aiコマンドライン・インタフェースは、一般的なSelect AI操作への端末アクセスを提供します。
CLI依存関係をインストールします。
python3 -m pip install 'select_ai[cli]'コマンドライン・インタフェースを実行します。
select-ai次の表に、サポートされているコマンドの概要を示します。
| コマンド | 目的 |
|---|---|
select-ai chat |
対話型のコンテキスト対応チャット・セッションを開始します。 |
select-ai sql show |
SQLを生成し、実行せずに表示します。 |
select-ai sql run |
SQLを生成および実行します。 |
select-ai sql explain |
生成されたSQLについて説明します。 |
select-ai sql narrate |
問合せ結果を自然言語で記述します。 |
select-ai profile list |
AIプロファイルを一覧表示します。 |
select-ai profile summarize |
AIプロファイルを使用してコンテンツを要約します。 |
select-ai profile translate |
AIプロファイルを使用してコンテンツを翻訳します。 |
コマンド・オプションとしてデータベース接続値を指定するか、次の環境変数を定義します。
| 環境変数 | 摘要 |
|---|---|
SELECT_AI_USER |
データベース・ユーザー名を指定する。 |
SELECT_AI_PASSWORD |
データベースのパスワードを指定します。 |
SELECT_AI_DB_CONNECT_STRING |
データベース接続文字列を指定します。 |
Python用のSelect AI Agent
Select AI Agent固有のクラス、ツール操作、instructionパラメータおよびクラスレベルの削除メソッドについては、Select AI Agent for Pythonを参照してください。