Skip to content

Releases: oracle/python-select-ai

v1.4.1

Choose a tag to compare

@aosingh aosingh released this 06 Aug 01:08
e8ec2d0

Highlights

Supervised agent teams

Designate an agent as a supervisor and attach it to a team.

from select_ai.agent import AgentAttributes, TeamAttributes

supervisor_attributes = AgentAttributes(
    profile_name="MY_PROFILE",
    role="Coordinate the team and synthesize the final response.",
    supervisor=True,
)

team_attributes = TeamAttributes(
    agents=[{"name": "RESEARCH_AGENT", "task": "RESEARCH_TASK"}],
    supervisor_agent="SUPERVISOR_AGENT",
)

Example output:

Supervisor agent: SUPERVISOR_AGENT
Supervisor task: <database-generated supervisor task>

Inspect and invoke teams and tools

Inspect team/tool metadata and directly invoke tools for validation and troubleshooting.

tool = Tool.fetch("AGE_TOOL")
print(tool.describe_tool())
print(tool.run_tool('{"p_birth_date":"2000-01-01"}'))

team = Team.fetch("RESEARCH_TEAM")
print(team.describe_team())
print(team.list_tools())

Illustrative output:

  {"name":"AGE_TOOL", "description":"Calculate age from a birth date", ...}
  26
  {"name":"RESEARCH_TEAM", "skills":[...], ...}
  [{"name":"AGE_TOOL", ...}]

Export canonical agent-object definitions

Use get_definition() to retrieve the canonical PL/SQL definition for an AGENT, TASK, TOOL, or TEAM.

from select_ai.agent import get_definition

 print(get_definition("TASK", "RESEARCH_TASK"))

Example output:

BEGIN
  DBMS_CLOUD_AI_AGENT.CREATE_TASK(...);
END;
/

Manage conversation history and tags

Conversation and AsyncConversation now support add_tag(), remove_tag(), list_prompts(), and delete_prompt().

conversation.add_tag("PROJECT", "SELECT_AI")

with profile.chat_session(conversation=conversation) as session:
     session.chat("Reply with exactly: conversation history works.")

prompts = list(conversation.list_prompts())
print(prompts[-1].prompt)
conversation.delete_prompt(prompts[-1].conversation_prompt_id)
conversation.remove_tag("PROJECT")

Example output:

Reply with exactly: conversation history works.

Also included

  • New sync and async samples for the major API additions.
  • Expanded test coverage for vector indexes, credentials, providers, and connections.
  • CI improvements, including vector-index pipeline isolation.

Upgrade

python -m pip install --upgrade select_ai==1.4.1

v1.4.0

Choose a tag to compare

@aosingh aosingh released this 06 Jun 05:01
64977c6

Release Notes: v1.4.0

Release date: 2026-06-05
Comparison: v1.3.0..v1.4.0

Highlights

  • Added optional select-ai command line interface.
  • Added streaming support for LLM CLOB responses in sync and async profile APIs.
  • Added sync and async APIs for granting and revoking external host network access.
  • Added AI Agent team export/import support.
  • Expanded documentation for CLI usage, async APIs, web frameworks, and concurrent prompt processing.
  • Added substantial agent, profile, feedback, privilege, and synthetic data test coverage.

New Features

Command Line Interface

A new optional CLI is available via:

python3 -m pip install 'select_ai[cli]'

New console command:

select-ai

Supported command groups include:

  • select-ai chat for an interactive context-aware chat REPL.
  • select-ai sql show, run, explain, and narrate.
  • select-ai profile list, summarize, and translate.

CLI connection values can be supplied with options or environment variables such as SELECT_AI_USER, SELECT_AI_PASSWORD, and SELECT_AI_DB_CONNECT_STRING.

Streaming Profile Responses

Profile and AsyncProfile now support streaming generated CLOB text responses with stream=True and configurable chunk_size.

Supported text APIs include:

  • chat
  • narrate
  • explain_sql
  • show_sql
  • show_prompt

run_sql does not support streaming.

Network Access Privilege APIs

Added sync APIs:

  • select_ai.grant_network_access(...)
  • select_ai.revoke_network_access(...)

Added async APIs:

  • select_ai.async_grant_network_access(...)
  • select_ai.async_revoke_network_access(...)

These APIs manage host ACL entries with configurable host, privileges, and optional port ranges.

Agent Team Export/Import

Added sync and async support for exporting and importing AI Agent teams.

Sync:

  • Team.export_team(...)
  • Team.import_team(...)
  • team.export(...)

Async:

  • AsyncTeam.export_team(...)
  • AsyncTeam.import_team(...)
  • await team.export(...)

Exports can return an inline JSON specification or write to object storage when credential and location are supplied.

Fixes

  • Fixed ProfileAttributes.set_attribute() when setting provider attributes before a provider object is initialized.
  • Fixed synthetic data attributes so JSON-string params are coerced into SyntheticDataParams.
  • Hardened privilege grant/revoke SQL by using DBMS_ASSERT and bind values for schema user handling.
  • Removed credential value echoing from invalid credential validation errors.
  • Updated HTTP tool creation behavior around backend TOOL_TYPE validation.
  • Fixed test-user setup by adding missing CREATE PROCEDURE privilege.
  • Cleaned up duplicate fixtures and CI build issues.

Documentation

Added or significantly expanded docs for:

  • CLI workflows.
  • Sync and async profile usage.
  • Sync and async AI Agent usage.
  • Web framework integration patterns.
  • Concurrent prompt processing recipes.
  • Network privilege management.
  • Streaming profile responses.
  • Team export/import.

Testing and CI

  • Added broad AI Agent tests for tools, tasks, agents, teams, SQL teams, and end-to-end flows.
  • Added sync and async profile feedback tests.
  • Added privilege tests for network ACL grant/revoke APIs.
  • Added streaming response tests for sync and async profile APIs.
  • Added synthetic data JSON-string parameter coercion tests.
  • Added Macaron GitHub Actions workflow.
  • Added release workflow updates.

v1.3.0

Choose a tag to compare

@aosingh aosingh released this 14 Mar 05:08
dabcaa4

This release includes the following updates:

  • Better concurrency support using 2 new APIs - select_ai.create_pool() and select_ai.create_pool_async(). This creates a shared connection pool for optimal resource sharing

  • Support to fetch the UTC timestamp of the next scheduled refresh of Vector Index using vector_index.get_next_refresh_timestamp()

  • Vector Index create() API exposes wait_for_completion argument same as the PL/SQL API

  • Bug fix in Slack notification agent tool. The channel name should be passed using channel instead of slack_channel

  • Bug fix in Email notification agent tool. Missing subject in the API signature

  • Support instruction parameter in all tool creation APIs to give a precise set of instructions

  • Added more NL2SQL APIs in Session object. Also, select_ai.Session uses the same cursor for the duration of the session. This is logically required to give AI agent feedback on mapped SQL in the same session

  • Custom errors to detect empty attributes corresponding to Select AI objects

v1.2.2

Choose a tag to compare

@aosingh aosingh released this 25 Jan 06:56
aceba55

This is a maintenance release with the following bug fixes and updates:

v1.2.1

Choose a tag to compare

@aosingh aosingh released this 18 Dec 07:29
0b6798f

This is a maintenance release with the following updates

  • Support for profile.translate()
response = profile.translate(
    text="Thank you", source_language="en", target_language="de"
)
  • Bug fix during profile.list() which was failing for dummy profiles
  • Multiple bug fixes for profile.add_positive_feedback(), profile.add_negative_feedback() and profile.delete_feedback()
  • Enhanced testing coverage for overall stability

v1.2.0

Choose a tag to compare

@aosingh aosingh released this 14 Nov 01:41
aa3cc84

This release includes the following updates and enhancements:

v1.1.0

Choose a tag to compare

@aosingh aosingh released this 22 Sep 16:35
27846fc

This release includes the following updates:

  • Fixes #6
  • Fixed bugs for vector_index get/set attributes
  • Handle "no data for prompt" during profile.run_sql to return an empty dataframe
  • Handle missing profile when you list vector indexes using vector_index.list()
  • Make enable / disable vector index operations idempotent
  • Added new samples
  • Verified tests for both 19c and 23ai

v1.0.0

Choose a tag to compare

@aosingh aosingh released this 04 Sep 16:38
fe8a14f

Select AI for Python v1.0.0

  • Create and manage Select AI’s AI profile objects
  • Text-to-SQL : Query your database using natural language, whether to generate a SQL query, run or explain that query, or get a narrated response to the results of that query.
  • Chat: Use your LLM directly for content generation based on your user prompt—for example, generating custom emails, answering questions, and sentiment analysis—just to name a few use cases.
  • Retrieval-Augmented Generation (RAG): Enable LLMs to generate more relevant responses by augmenting your prompt with knowledge from your provided documents
  • Automated vector index creation and maintenance: Quickly and easily create a vector index to be used with RAG using data from cloud storage and other sources.
  • Results integrated in Python objects: Receive AI-generated results directly into Python data structures, facilitating analysis and integration.
  • Chatbot with conversation memory: Create and manage named conversations based on your interactions with the LLM.
  • Synthetic data generation: Generate synthetic data for a single table or a set of tables with referential integrity constraints.
  • Synchronous and asynchronous invocation: Build applications using Python with either synchronous or the more flexible asynchronous programming style using standalone Python clients. With asynchronous support, the API integrates easily with web frameworks like FastAPI or Flask, enabling real-time AI-driven applications.