Releases: oracle/python-select-ai
v1.4.0
Release Notes: v1.4.0
Release date: 2026-06-05
Comparison: v1.3.0..v1.4.0
Highlights
- Added optional
select-aicommand 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
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 exposeswait_for_completionargument 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
This is a maintenance release with the following bug fixes and updates:
- Fixed a bug causing
ORA-20052: INVALID VALUE FOR TOOL ATTRIBUTE - TOOL_TYPEin methods create_email_notification_tool() and create_slack_notification_tool() - Fixed a bug causing
TypeErrorin methods agent.enable() and agent.disable() - profile.run_sql raises
select_ai.errors.InvalidSQLErrorwith a detailed error message in case of INVALID SQL generated or NON-EXISTENT tables - Introduced class level (sync and async) methods to delete Select AI database objects. From usage perspective it felt strange to initialize the Python proxy object and then call delete() on it. With the class level methods, you don't need to initialize the proxy objects just to delete the database object:
- Agent.delete_agent(agent_name)
- Profile.delete_profile(profile_name)
- Task.delete_task(task_name)
- Tool.delete_tool(tool_name)
- Team.delete_team(team_name)
- VectorIndex.delete_index(index_name)
v1.2.1
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()andprofile.delete_feedback() - Enhanced testing coverage for overall stability
v1.2.0
This release includes the following updates and enhancements:
-
Added support for Select AI Agent. The main classes in this submodule are:
-
Support for summarize
-
Support for feedback
-
For consistency, all proxy objects introduce a new fetch API. These are class level methods
-
All proxy objects expose set_attribute and set_attributes() method. This behavior is made consistent.
- set_attribute(attribute_name, attribute_value) will accept a single attribute
- set_attributes(attributes) can be used for multiple attributes using the localized attributes class for corresponding object type.
-
The grant / revoke privilege are separated from enabling/disabling HTTP access for users. Previously, both operations happened in a single API enable_provider() / disable_provider() which was confusing. Now, we have the following:
-
DBMS_CLOUD_AI_AGENT is added to the list of packages for which we grant / revoke execute privilege
-
Added support for Python 3.14
-
Added CI support using Github Actions. It runs the complete test suite for Python 3.11, 3.12, 3.13 and 3.14 against ADB 26ai
-
HTML documentation https://oracle.github.io/python-select-ai/ with Python docs theme
v1.1.0
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
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.