Condividi tramite


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

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.

  1. In Playground selezionare un modello con l'etichetta Tools abilitata.

    Selezionare un LLM per chiamare uno strumento

  2. Selezionare Strumenti e specificare i nomi delle funzioni del catalogo Unity nell'elenco a discesa:

    Selezionare uno strumento

  3. Chat per testare la combinazione corrente di LLM, strumenti e prompt di sistema e provare le varianti.

    Creare un prototipo di LLM

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.

  1. 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.
  2. 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.

  3. 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_columne 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

Passaggi successivi