Java è il motore di innumerevoli applicazioni enterprise, da servizi Spring a API ad alta velocità, processi batch e sistemi data‑intensive. Queste applicazioni spesso operano a stretto contatto con i dati più preziosi dell’organizzazione, ma l’integrazione di intelligenza artificiale generativa richiede ancora di combinare driver di database, SDK dei provider, orchestrazione dei prompt, archivi vettoriali, credenziali, stato della conversazione e, sempre più, il runtime necessario per coordinare agenti AI e i loro tool.

Oracle Select AI per Java semplifica questo scenario introducendo le capacità di Oracle Select AI in un modello di programmazione nativo per Java. Il SDK fornisce interfacce Java tipizzate, modelli di richiesta e configurazione, API per il ciclo di vita delle risorse, gestione della connessione basata su JDBC e campioni eseguibili per interagire con Oracle Select AI direttamente dal codice.

Principali funzionalità esposte dal SDK

Le API Java coprono un ampio spettro di casi d’uso:

    • Scelta dei provider e dei modelli AI: configurazione di profili AI per provider supportati, endpoint privati e API compatibili con OpenAI.
    • Natural‑language‑to‑SQL (NL2SQL): generazione di SQL da prompt in linguaggio naturale, ispezione, spiegazione, esecuzione o restituzione di una risposta narrata.
    • Chat: utilizzo di un LLM per generare contenuti, rispondere a domande, fornire raccomandazioni, generare codice e altre esperienze conversazionali.
    • Retrieval‑augmented generation (RAG): ancorare le risposte a contenuti aziendali mediante Oracle AI Vector Search e indici vettoriali di Oracle Select AI.
    • Conversazioni contestuali: preservazione della cronologia dei prompt per permettere follow‑up basati su turni precedenti.
    • Framework per agenti AI: creazione, caricamento, elenco, abilitazione, disabilitazione e rimozione di agenti, task, tool e team; descrizione e esecuzione di tool; gestione dello stato del team; import/export delle definizioni.
    • Generazione di dati sintetici: creazione di dati realistici per una o più tabelle, ideale per sviluppo e test.
    • Riepilogo e traduzione: sintesi di contenuti inline o esterni e traduzione del testo tramite il provider configurato.
    • Gestione della connessione nativa Java: utilizzo di DataSource gestito dall’applicazione per il pooling oppure gestione da parte del SDK di una connessione JDBC tramite DbConnectionConfig.

Interrogare il database con linguaggio naturale

I profili Oracle Select AI definiscono come i prompt vengono processati: specificano provider, modello, credenziali, ambito degli oggetti di database e altre impostazioni che influenzano la richiesta. I profili possono essere creati tramite Java o altre interfacce Oracle Select AI e un’applicazione Java può aprire e utilizzare qualsiasi profilo visibile all’identità del database.

Ecco un esempio completo che dimostra come generare, spiegare, eseguire e narrare una query a partire da un prompt naturale:

import com.oracle.database.selectai.Profile;

import com.oracle.database.selectai.SelectAI;

import com.oracle.database.selectai.model.DbConnectionConfig;

import com.oracle.database.selectai.model.SelectAIException;

public final class SelectAIExample {

public static void main(String[] args) throws SelectAIException {

DbConnectionConfig config = DbConnectionConfig.builder()

.dbUser(System.getenv("SELECTAIDBUSER"))

.dbPassword(System.getenv("SELECTAIDBPASSWORD"))

.jdbcUrl(System.getenv("SELECTAIJDBCURL"))

.build();

try (SelectAI selectAI = SelectAI.create(config)) {

Profile profile = selectAI.profile(System.getenv("SELECTAIPROFILENAME"));

String prompt = "How many customers placed an order this month?";

System.out.println("Generated SQL: " + profile.showsql(prompt));

System.out.println("SQL explanation: " + profile.explainsql(prompt));

System.out.println("Query result: " + profile.runsql(prompt));

System.out.println("Narrated response: " + profile.narrate(prompt));

}

}

}

I nomi dei metodi riflettono le azioni offerte da Oracle Select AI, facilitando l’apprendimento per gli sviluppatori già familiari con il modello. Per chi necessita di un unico punto d’ingresso, il metodo generate accetta un GenerateAction (ad esempio showsql, runsql, explainsql, narrate, chat, summarize, translate o embedding).

Vantaggi per la produttività

Non è più necessario implementare template di prompt, chiamate HTTP specifiche per provider o workflow di generazione SQL. Oracle Select AI fornisce il contesto dello schema, invoca il modello configurato e esegue l’operazione di database secondo il profilo e i permessi dell’utente. Questo accelera lo sviluppo e migliora l’esperienza degli utenti finali, che possono porre domande in linguaggio naturale invece di scrivere SQL.

Configurazione tipizzata dei profili AI

Il SDK include classi tipizzate per profili e provider, riducendo il boilerplate e mantenendo l’accesso a impostazioni specifiche del provider. Un profilo OCI Generative AI, ad esempio, può essere definito così:

ProviderProfile providerProfile =

ProviderProfile.OCIGenAIProviderProfile.builder()

.model(System.getenv("SELECTAI_MODEL"))

.region("us-chicago-1")

.ociApiFormat("GENERIC")

.build();

ProfileAttributes profileAttributes = ProfileAttributes.builder()

.credentialName(System.getenv("SELECTAICREDENTIALNAME"))

.providerProfile(providerProfile)

.objectList("[{\"owner\":\"SH\"}]")

.objectListMode(ObjectListMode.AUTOMATED.getValue())

.enforceObjectList(true)

.build();

Profile profile = selectAI.profile(

"sales_profile",

profileAttributes,

"Sales profile for NL2SQL queries",

ProfileStatus.ENABLED);

profile.create();

Il SDK espone inoltre impostazioni per istruzioni aggiuntive, commenti, vincoli, temperatura, limiti di token, comportamento della conversazione, endpoint del provider, modelli di embedding e nomi di indice vettoriale. Il metodo showprompt restituisce il prompt arricchito che Oracle Select AI invierebbe al provider, utile per analizzare l’impatto di metadati e configurazioni.

Recupero di contenuti affidabili con RAG

Molte applicazioni richiedono che le risposte siano ancorate a documenti aziendali verificati. Con Oracle Select AI è possibile creare indici vettoriali su tabelle di documenti, collegare questi indici a un profilo AI e utilizzare la funzionalità di Retrieval‑augmented generation. Il flusso tipico prevede:

    • Creazione di un indice vettoriale mediante CREATE VECTOR INDEX su una colonna contenente testo.
    • Popolamento dell’indice con i documenti aziendali.
    • Configurazione del profilo AI per riferirsi a quell’indice tramite vectorIndexName.
    • Invio di un prompt che include il contesto “retrieval‑augmented”, permettendo al modello di recuperare i frammenti più rilevanti prima di generare la risposta.

Questo approccio garantisce che le risposte siano basate su fonti interne, riducendo i rischi di informazioni errate o non conformi.

Framework per agenti AI: orchestrare workflow complessi

Una delle novità più significative è il supporto al framework per agenti AI. Gli sviluppatori possono definire:

    • Agent team: un insieme di agenti collaborativi con stato condiviso.
    • Tool: funzioni o procedure di database esposte come operazioni che gli agenti possono invocare.
    • Task: unità di lavoro che combina più tool in una sequenza logica.

L’API consente di creare, caricare, elencare, abilitare, disabilitare e rimuovere questi elementi, oltre a gestire le autorizzazioni per altri utenti. In pratica, un’applicazione può avviare una conversazione con un agente, chiedere di generare una query, farla eseguire, quindi chiedere al risultato di attivare un processo di ETL, tutto coordinato dal database.

Esempio di esecuzione di un team di agenti

Supponiamo di avere un team “sales‑assistant” che include due tool: generatesql e runreport. Il flusso è:

selectAI.team("sales-assistant").run(

"Generate a sales report for the last quarter and export it as CSV");

Il database valida i permessi, invoca il modello per generare SQL, esegue la query, converte il risultato in CSV e restituisce il file all’utente, senza che il codice client gestisca singoli passaggi.

Generazione di dati sintetici e altre utility

Il SDK permette di creare dati fittizi per tabelle di sviluppo, riducendo il tempo necessario per popolari ambienti di test. Inoltre, le funzioni di sintesi e traduzione consentono di elaborare contenuti testuali sia inline che provenienti da BLOB o CLOB, sfruttando lo stesso profilo AI configurato per le query.

Conclusioni

Oracle Select AI for Java rappresenta un passo avanti significativo per le imprese che vogliono sfruttare l’AI generativa senza introdurre complessità operative. Con un SDK tipizzato, gestione JDBC integrata, supporto a NL2SQL, RAG, agenti AI, generazione di dati sintetici e utilities di traduzione e riepilogo, gli sviluppatori Java possono costruire rapidamente applicazioni intelligenti, mantenere la governance dei dati a livello di database e offrire esperienze utente basate su linguaggio naturale. La capacità del database di gestire la validazione delle risorse, l’autorizzazione e il flusso di lavoro rende la soluzione scalabile e pronta per l’adozione enterprise.