Creare un agente di intelligenza artificiale
Importante
Questa funzionalità è disponibile in anteprima pubblica.
Questo articolo illustra come creare un agente di intelligenza artificiale chiamante tramite Mosaic AI Agent Framework.
Informazioni su come fornire agli strumenti di un agente e iniziare a chattare con loro per testare e creare un prototipo dell'agente. Dopo aver completato la creazione di prototipi dell'agente, esportare il codice Python che definisce l'agente per scorrere e distribuire l'agente di intelligenza artificiale.
Requisiti
- Comprendere i concetti degli agenti e degli strumenti di intelligenza artificiale, come descritto in Quali sono i sistemi di intelligenza artificiale composti e gli agenti di intelligenza artificiale?
- Databricks consiglia di installare la versione più recente del client Python MLflow durante lo sviluppo di agenti.
Creare gli strumenti dell'agente di intelligenza artificiale
Il primo passaggio consiste nel creare uno strumento da assegnare all'agente. Gli agenti usano strumenti per eseguire azioni oltre alla generazione del linguaggio, ad esempio per recuperare dati strutturati o non strutturati, eseguire codice o comunicare con i servizi remoti (ad esempio, inviare un messaggio di posta elettronica o Slack).
Per questa guida, è possibile usare la funzione predefinita del catalogo unity, system.ai.python_exec
, per consentire all'agente di eseguire codice Python arbitrario.
Per altre informazioni sulla creazione di strumenti dell'agente personalizzati, vedere Creare gli strumenti dell'agente di intelligenza artificiale.
Creare prototipi di agenti per chiamate di strumenti in AI Playground
Ora che si dispone dello strumento, utilizzare il AI Playground per fornire lo strumento a un agente e interagire con esso per convalidare e testare il comportamento. AI Playground offre una sandbox per creare prototipi di agenti che chiamano gli strumenti.
Nota
Unity Cataloge di calcolo serverless, Mosaic AI Agent Frameworke modelli di base con pagamento per token o modelli esterni devono essere disponibili nell'area di lavoro corrente per creare prototipi di agenti in AI Playground.
Per creare un prototipo di endpoint che chiama uno strumento.
In Playground selezionare un modello con l'etichetta Tools abilitata.
Selezionare Strumenti e specificare i nomi delle funzioni del catalogo Unity nell'elenco a discesa:
Chat per testare la combinazione corrente di LLM, strumenti e prompt di sistema e provare le varianti.
Esportare e distribuire agenti di AI Playground
Dopo la creazione di prototipi e l'affinamento dell'agente di intelligenza artificiale in AI Playground, è possibile esportarlo in notebook Python per un ulteriore sviluppo, o distribuirlo direttamente come endpoint di Model Serving.
Fare clic su Esporta per generare notebook Python che consentono di sviluppare e distribuire l'agente di intelligenza artificiale.
Dopo aver esportato il codice dell'agente, vengono visualizzati tre file salvati nell'area di lavoro:
- Notebook
agent
: contiene codice Python che definisce l'agente usando LangChain. - Notebook
driver
: contiene codice Python per registrare, tracciare, registrare e distribuire l'agente di intelligenza artificiale usando Mosaic AI Agent Framework. -
config.yml
: contiene informazioni di configurazione sull'agente, incluse le definizioni degli strumenti.
- Notebook
Aprire il notebook
agent
per visualizzare il codice LangChain che definisce l'agente, usare questo notebook per testare e scorrere l'agente a livello di codice, ad esempio la definizione di altri strumenti o la modifica dei parametri dell'agente .Nota
Il codice esportato potrebbe avere un comportamento diverso rispetto alla sessione di ai playground. Databricks consiglia di eseguire i notebook esportati per scorrere ed eseguire il debug, valutare ulteriormente la qualità dell'agente e quindi distribuire l'agente per condividerli con altri utenti.
Dopo aver soddisfatto gli output dell'agente, è possibile eseguire il notebook
driver
per registrare e distribuire l'agente in un endpoint model serving.
Definire un agente nel codice
Oltre a generare codice agente da AI Playground, è anche possibile definire un agente nel codice manualmente, usando framework come LangChain o codice Python. Per distribuire un agente tramite Agent Framework, l'input deve essere conforme a uno dei formati di input e output supportati.
Usare i parametri per configurare l'agente
In Agent Framework è possibile usare i parametri per controllare la modalità di esecuzione degli agenti. In questo modo è possibile eseguire rapidamente l'iterazione in base a diverse caratteristiche dell'agente senza dover modificare il codice. I parametri sono coppie chiave-valore definite in un dizionario Python o in un file di .yaml
.
Per configurare il codice, creare un ModelConfig
, un set di parametri chiave-valore.
ModelConfig
è un dizionario Python o un file .yaml
. Ad esempio, è possibile usare un dizionario durante lo sviluppo e convertirlo in un file .yaml
per la distribuzione di produzione e CI/CD. Per informazioni su ModelConfig
, vedere la documentazione di MLflow.
Di seguito è illustrato un esempio di ModelConfig
.
llm_parameters:
max_tokens: 500
temperature: 0.01
model_serving_endpoint: databricks-dbrx-instruct
vector_search_index: ml.docs.databricks_docs_index
prompt_template: 'You are a hello world bot. Respond with a reply to the user''s
question that indicates your prompt template came from a YAML file. Your response
must use the word "YAML" somewhere. User''s question: {question}'
prompt_template_input_vars:
- question
Per richiamare la configurazione dal codice, usare una delle opzioni seguenti:
# Example for loading from a .yml file
config_file = "configs/hello_world_config.yml"
model_config = mlflow.models.ModelConfig(development_config=config_file)
# Example of using a dictionary
config_dict = {
"prompt_template": "You are a hello world bot. Respond with a reply to the user's question that is fun and interesting to the user. User's question: {question}",
"prompt_template_input_vars": ["question"],
"model_serving_endpoint": "databricks-dbrx-instruct",
"llm_parameters": {"temperature": 0.01, "max_tokens": 500},
}
model_config = mlflow.models.ModelConfig(development_config=config_dict)
# Use model_config.get() to retrieve a parameter value
value = model_config.get('sample_param')
Impostare lo schema del recuperatore
Gli agenti di intelligenza artificiale usano spesso i retriever, un tipo di strumento agente che trova e restituisce documenti pertinenti usando un indice di ricerca vettoriale. Per altre informazioni sui retriever, vedere Strumenti dell'agente di recupero non strutturato di intelligenza artificiale.
Per assicurarsi che i retriever vengano tracciati correttamente, chiamare mlflow.models.set_retriever_schema quando si definisce l'agente nel codice. Usare set_retriever_schema
per eseguire il mapping dei nomi delle colonne nella tabella restituita ai campi previsti di MLflow, ad esempio primary_key
, text_column
e doc_uri
.
# Define the retriever's schema by providing your column names
# These strings should be read from a config dictionary
mlflow.models.set_retriever_schema(
name="vector_search",
primary_key="chunk_id",
text_column="text_column",
doc_uri="doc_uri"
# other_columns=["column1", "column2"],
)
Nota
La colonna doc_uri
è particolarmente importante quando si valutano le prestazioni del retriever.
doc_uri
è l'identificatore principale per i documenti restituiti dal retriever, consentendo di confrontarli con i set di valutazione della verità di base. Vedere Set di valutazione
È anche possibile specificare colonne aggiuntive nello schema del retriever fornendo un elenco di nomi di colonna con il campo other_columns
.
Se si dispone di più retriever, è possibile definire più schemi usando nomi univoci per ogni schema di recupero.
Formati di input e output supportati
Agent Framework usa le firme del modello MLflow per definire schemi di input e output per gli agenti. Le funzionalità di Mosaic AI Agent Framework richiedono un set minimo di campi di input/output per interagire con funzionalità come l'app di revisione e il playground di intelligenza artificiale. Per altre informazioni, vedere Definire lo schema di input e output di un agente.
Notebook di esempio
Questi Notebook creano una semplice catena "Hello, world" per illustrare come creare un'applicazione a catena in Databricks. Il primo esempio crea una catena semplice. Il secondo notebook di esempio illustra come usare i parametri per ridurre al minimo le modifiche al codice durante lo sviluppo.
Notebook a catena semplice
Prendi il notebook
Notebook del driver a catena semplice
Prendi il notebook
Notebook a catena con parametri
Prendi notebook
Notebook del driver di catena parametrizzato
Prendi notebook