Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions autonomous-ai-agents/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,17 @@ The repository is organized to align with the Select AI Agent framework:

---

## Creating a Select AI Profile

Before using Autonomous Database AI agents, you must create a Select AI profile using DBMS_CLOUD_AI.

Oracle provides several examples demonstrating how to create AI profiles for different providers and models. See the documentation below and follow one of the examples to create your profile:

Select AI profile management documentation:
https://docs.oracle.com/en-us/iaas/autonomous-database-serverless/doc/select-ai-manage-profiles.html#GUID-3721296F-14A1-428A-B464-7FA25E9EC8F3

Start by reviewing the examples in this documentation and create a profile appropriate for your environment (OCI Generative AI, OpenAI, Azure OpenAI, etc.). The profile name you create will be used later when configuring AI agents.

## Agent Configuration (`SELECTAI_AGENT_CONFIG`)

### Overview
Expand Down
16 changes: 0 additions & 16 deletions autonomous-ai-agents/nl2sql_data_retrieval/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,22 +20,6 @@ This **NL2SQL Data Retrieval Agent** addresses these limitations by combining:

into a **single autonomous agent workflow**.

### Key Advantages Over Plain NL2SQL

| Capability | Plain Select AI NL2SQL | This Agent |
|----------|------------------------|------------|
| SQL generation | ✅ | ✅ |
| Automatic retry on failure | ❌ | ✅ |
| Distinct value discovery | ❌ | ✅ |
| Range discovery (DATE / NUMBER) | ❌ | ✅ |
| Predicate refinement | ❌ | ✅ |
| External web search | ❌ | ✅ |
| URL content validation | ❌ | ✅ |
| Chart generation | ❌ | ✅ |
| Config-driven and extensible | ❌ | ✅ |

> **Result:** Higher accuracy, fewer hallucinations, accurate SQL, and richer analytical answers.

---

## Architecture Overview
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,10 @@ rem - Creating an NL2SQL Team linking the agent and task
rem - Executing the installer procedure to complete setup
rem
rem RELEASE VERSION
rem 1.0
rem 1.1
rem
rem RELEASE DATE
rem 30-Jan-2026
rem 06-Feb-2026
rem
rem MAJOR CHANGES IN THIS RELEASE
rem - Initial release
Expand Down Expand Up @@ -93,34 +93,35 @@ rem ============================================================================

SET SERVEROUTPUT ON
SET VERIFY OFF
WHENEVER SQLERROR EXIT SQL.SQLCODE

PROMPT ======================================================
PROMPT NL2SQL Data Retrieval Agent Installer
PROMPT ======================================================

-- Target schema (MANDATORY)
ACCEPT SCHEMA_NAME CHAR PROMPT 'Enter target schema name (required): '
DEFINE INSTALL_SCHEMA = '&SCHEMA_NAME'
-- Target schema
VAR v_schema VARCHAR2(128)
EXEC :v_schema := '&SCHEMA_NAME';

-- AI Profile (MANDATORY)
ACCEPT PROFILE_NAME CHAR PROMPT 'Enter AI Profile name (required): '
DEFINE PROFILE_NAME = '&PROFILE_NAME'
-- AI Profile
VAR v_ai_profile_name VARCHAR2(128)
EXEC :v_ai_profile_name := '&AI_PROFILE_NAME';


PROMPT ------------------------------------------------------
PROMPT Installing into schema: &&INSTALL_SCHEMA
PROMPT Using AI Profile : &&PROFILE_NAME
PROMPT ------------------------------------------------------

----------------------------------------------------------------
-- 1. Grants (safe to re-run)
----------------------------------------------------------------
DECLARE
l_sql VARCHAR2(500);
BEGIN
DBMS_OUTPUT.PUT_LINE('Granting required privileges to &&INSTALL_SCHEMA ...');
EXECUTE IMMEDIATE 'GRANT EXECUTE ON DBMS_CLOUD_AI_AGENT TO &&INSTALL_SCHEMA';
EXECUTE IMMEDIATE 'GRANT EXECUTE ON DBMS_CLOUD_AI TO &&INSTALL_SCHEMA';
EXECUTE IMMEDIATE 'GRANT EXECUTE ON DBMS_CLOUD TO &&INSTALL_SCHEMA';
l_sql := 'GRANT EXECUTE ON DBMS_CLOUD_AI_AGENT TO ' || :v_schema;
EXECUTE IMMEDIATE l_sql;

l_sql := 'GRANT EXECUTE ON DBMS_CLOUD_AI TO ' || :v_schema;
EXECUTE IMMEDIATE l_sql;

l_sql := 'GRANT EXECUTE ON DBMS_CLOUD TO ' || :v_schema;
EXECUTE IMMEDIATE l_sql;

DBMS_OUTPUT.PUT_LINE('Grants completed.');
END;
/
Expand All @@ -129,17 +130,20 @@ END;
----------------------------------------------------------------
-- 2. Create installer procedure in target schema
----------------------------------------------------------------
PROMPT Creating installer procedure in &&INSTALL_SCHEMA ...
BEGIN
EXECUTE IMMEDIATE
'ALTER SESSION SET CURRENT_SCHEMA = ' || :v_schema;
END;
/

CREATE OR REPLACE PROCEDURE &&INSTALL_SCHEMA..data_retrieval_agent (
CREATE OR REPLACE PROCEDURE data_retrieval_agent (
p_profile_name IN VARCHAR2
)
AUTHID DEFINER
AS
BEGIN
DBMS_OUTPUT.PUT_LINE('--------------------------------------------');
DBMS_OUTPUT.PUT_LINE('Starting Data Retrieval Agent Team installation');
DBMS_OUTPUT.PUT_LINE('Schema : ' || USER);
DBMS_OUTPUT.PUT_LINE('--------------------------------------------');

------------------------------------------------------------
Expand All @@ -165,7 +169,7 @@ BEGIN
END;

------------------------------------------------------------
-- DROP & CREATE TASK
-- DROP and CREATE TASK
------------------------------------------------------------
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_TASK('NL2SQL_DATA_RETRIEVAL_TASK');
Expand Down Expand Up @@ -215,7 +219,7 @@ BEGIN
DBMS_OUTPUT.PUT_LINE('Created task NL2SQL_DATA_RETRIEVAL_TASK');

------------------------------------------------------------
-- DROP & CREATE AGENT
-- DROP and CREATE AGENT
------------------------------------------------------------
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_AGENT('NL2SQL_DATA_RETRIEVAL_AGENT');
Expand All @@ -240,7 +244,7 @@ BEGIN
DBMS_OUTPUT.PUT_LINE('Created agent NL2SQL_DATA_RETRIEVAL_AGENT');

------------------------------------------------------------
-- DROP & CREATE TEAM
-- DROP and CREATE TEAM
------------------------------------------------------------
BEGIN
DBMS_CLOUD_AI_AGENT.DROP_TEAM('NL2SQL_DATA_RETRIEVAL_TEAM');
Expand All @@ -259,7 +263,6 @@ BEGIN
'}'
);


DBMS_OUTPUT.PUT_LINE('Created team NL2SQL_DATA_RETRIEVAL_TEAM');

DBMS_OUTPUT.PUT_LINE('------------------------------------------------');
Expand All @@ -274,19 +277,12 @@ END data_retrieval_agent;
----------------------------------------------------------------
PROMPT Executing installer procedure ...
BEGIN
&&INSTALL_SCHEMA..data_retrieval_agent('&&PROFILE_NAME');
data_retrieval_agent(p_profile_name => :v_ai_profile_name);
END;
/

PROMPT ======================================================
PROMPT Installation finished successfully
PROMPT ======================================================

alter session set current_schema = ADMIN;







alter session set current_schema = ADMIN;
Original file line number Diff line number Diff line change
Expand Up @@ -16,38 +16,36 @@ rem AI Agent tools used to refine the Select AI NL2SQL operations
rem via Select AI Agent (Oracle AI Database).
rem
rem RELEASE VERSION
rem 1.0
rem 1.1
rem
rem RELEASE DATE
rem 30-Jan-2026
rem 6-Feb-2026
rem
rem MAJOR CHANGES IN THIS RELEASE
rem - Initial release
rem - Run compatibility with Web SQL Developer
rem
rem SCRIPT STRUCTURE
rem 1. Initialization:
rem - Grants
rem - Configuration setup
rem
rem 2. Package Deployment:
rem - &&INSTALL_SCHEMA.nl2sql_data_retrieval_agents
rem - &&SCHEMA_NAME.nl2sql_data_retrieval_agents
rem (package specification and body)
rem
rem 3. AI Tool Setup:
rem - Creation of all NL2SQl data retrieval agent tools
rem
rem INSTALL INSTRUCTIONS
rem 1. Connect as ADMIN or a user with required privileges
rem 2. Run the script using SQL*Plus or SQLcl:
rem
rem sqlplus admin@db @nl2sql_data_retrieval_tools.sql <INSTALL_SCHEMA>
rem
rem 2. Run the script using websqldeveloper/SQL Developer
rem 3. Verify installation by checking tool registration
rem and package compilation status.
rem
rem PARAMETERS
rem INSTALL_SCHEMA (Required)
rem SCHEMA_NAME (Required)
rem Schema in which the package and tools will be created.
rem
rem ----------------------------------------------------------------------------
rem GOOGLE CUSTOM SEARCH – SETUP INSTRUCTIONS
rem ----------------------------------------------------------------------------
Expand Down Expand Up @@ -108,8 +106,8 @@ SET VERIFY OFF
-- ============================================================================

-- First argument: Schema Name (Required)
ACCEPT SCHEMA_NAME CHAR PROMPT 'Enter schema name (required): '
DEFINE INSTALL_SCHEMA = '&SCHEMA_NAME'
VAR v_schema VARCHAR2(128)
EXEC :v_schema := '&SCHEMA_NAME';

-- Second argument: NL2SQL Data Retrieval Agent configuration (Required)
PROMPT
Expand All @@ -131,10 +129,9 @@ PROMPT "cxid_vault_secret_ocid":"ocid1.vaultsecret.oc1..aaaa",
PROMPT "api_key_vault_secret_ocid":"ocid1.vaultsecret.oc1..bbbb"
PROMPT }
PROMPT
PROMPT

ACCEPT INSTALL_CONFIG_JSON CHAR PROMPT 'Enter INSTALL_CONFIG_JSON (optional and can be set later in SELECTAI_AGENT_CONFIG table): '
DEFINE INSTALL_CONFIG_JSON = '&INSTALL_CONFIG_JSON'
VAR v_config VARCHAR2(256)
EXEC :v_config := '&CONFIG_JSON';


CREATE OR REPLACE PROCEDURE initialize_nl2sql_data_retrieval_agent(
Expand All @@ -145,11 +142,11 @@ IS
l_use_rp BOOLEAN := NULL;
l_schema_name VARCHAR2(128);
c_nlb_agent CONSTANT VARCHAR2(64) := 'NL2SQL_DATA_RETRIEVAL_AGENT';
l_credential_name VARCHAR2(100);
l_oci_region VARCHAR2(100);
l_vault_secret_id1 VARCHAR2(512);
l_vault_secret_id2 VARCHAR2(512);
l_ai_profile VARCHAR2(100);
l_credential_name VARCHAR2(100);
l_oci_region VARCHAR2(100);
l_vault_secret_id1 VARCHAR2(512);
l_vault_secret_id2 VARCHAR2(512);
l_ai_profile VARCHAR2(100);

TYPE priv_list_t IS VARRAY(200) OF VARCHAR2(4000);
l_priv_list CONSTANT priv_list_t := priv_list_t(
Expand Down Expand Up @@ -401,15 +398,20 @@ END initialize_nl2sql_data_retrieval_agent;
-- Run the setup for the NL2SQL data retrieval AI agent.
-------------------------------------------------------------------------------
BEGIN

initialize_nl2sql_data_retrieval_agent(
p_install_schema_name => '&&INSTALL_SCHEMA',
p_config_json => '&&INSTALL_CONFIG_JSON'
p_install_schema_name => :v_schema,
p_config_json => :v_config
);

END;
/


alter session set current_schema = &&INSTALL_SCHEMA;
BEGIN
EXECUTE IMMEDIATE
'ALTER SESSION SET CURRENT_SCHEMA = ' || :v_schema;
END;
/

------------------------------------------------------------------------
-- Package specification
Expand Down Expand Up @@ -965,7 +967,7 @@ END nl2sql_data_retrieval_functions;
------------------------------------------------------------------------------------------
-- This procedure installs or refreshes the NL2SQL data retrieval Agent tools in the
-- current schema. It drops any existing tool definitions and recreates them
-- pointing to the latest implementations in &&INSTALL_SCHEMA.nl2sql_data_retrieval_agents.
-- pointing to the latest implementations in &&SCHEMA_NAME.nl2sql_data_retrieval_agents.
------------------------------------------------------------------------------------------

CREATE OR REPLACE PROCEDURE initialize_nl2sql_data_retrieval_tools
Expand Down
Loading