Compartir a través de


Creación de un agente de IA

Importante

Esta característica está en versión preliminar pública.

En este artículo se muestra cómo crear un agente de INTELIGENCIA artificial que llama a herramientas mediante el marco del agente de IA de Mosaico.

Obtenga información sobre cómo proporcionar herramientas de agente y empezar a chatear con ellos para probar y crear prototipos del agente. Una vez que haya terminado de crear prototipos del agente, exporte el código de Python que define el agente para iterar e implementar el agente de IA.

Requisitos

Creación de herramientas de agentes de IA

El primer paso es crear una herramienta para proporcionar al agente. Los agentes usan herramientas para realizar acciones además de la generación de lenguaje, por ejemplo, para recuperar datos estructurados o no estructurados, ejecutar código o comunicarse con servicios remotos (por ejemplo, enviar un correo electrónico o un mensaje de Slack).

Para más información sobre la creación de herramientas de agente, consulte Creación de herramientas de agente de IA.

Para esta guía, cree una función de catálogo de Unity que ejecute código de Python. Un agente puede usar esta herramienta para ejecutar Python dado por un usuario o escrito por el propio agente.

Ejecute el siguiente código en una celda de cuaderno. Usa la magia del cuaderno %sql para crear una función de catálogo de Unity denominada python_exec.

%sql
CREATE OR REPLACE FUNCTION
main.default.python_exec (
code STRING COMMENT 'Python code to execute. Remember to print the final result to stdout.'
)
RETURNS STRING
LANGUAGE PYTHON
DETERMINISTIC
COMMENT 'Executes Python code in the sandboxed environment and returns its stdout. The runtime is stateless and you can not read output of the previous tool executions. i.e. No such variables "rows", "observation" defined. Calling another tool inside a Python code is NOT allowed. Use standard python libraries only.'
AS $$
import sys
from io import StringIO
sys_stdout = sys.stdout
redirected_output = StringIO()
sys.stdout = redirected_output
exec(code)
sys.stdout = sys_stdout
return redirected_output.getvalue()
$$

Prototipo de agentes de llamada a herramientas en AI Playground

Después de crear la función Catálogo de Unity, use AI Playground para proporcionar la herramienta a un LLM y probar el agente. AI Playground proporciona un espacio aislado para crear prototipos de agentes de llamada a herramientas.

Una vez que esté satisfecho con el agente de IA, puede exportarlo para desarrollarlo más adelante en Python o implementarlo como punto de conexión de servicio de modelos tal como está.

Nota:

Unity Catalog y proceso sin servidor, Mosaic AI Agent Framework y los modelos de base de pago por token o modelos externos deben estar disponibles en el área de trabajo actual para crear prototipos de agentes en AI Playground.

Para crear prototipos de un punto de conexión de llamada a herramientas.

  1. En Parque infantil, seleccione un modelo con la etiqueta Herramientas habilitada .

    Selección de un LLM de llamada a herramientas

  2. Seleccione Herramientas y especifique los nombres de función del catálogo de Unity en la lista desplegable:

    Seleccionar una herramienta

  3. Chatear para probar la combinación actual de LLM, herramientas y aviso del sistema, e intentar variaciones.

    Prototipo de LLM

Exportación e implementación de agentes de AI Playground

Después de agregar herramientas y probar el agente, exporte el agente de Playground a cuadernos de Python:

  1. Haga clic en Exportar para generar cuadernos de Python que le ayuden a desarrollar e implementar el agente de IA.

    Después de exportar el código del agente, verá tres archivos guardados en el área de trabajo:

    • agent cuaderno: contiene código de Python que define el agente mediante LangChain.
    • driver cuaderno: contiene código de Python para registrar, realizar un seguimiento, hacer un registro e implementar el agente de IA mediante Mosaic AI Agent Framework.
    • config.yml: contiene información de configuración sobre el agente, incluidas las definiciones de herramientas.
  2. Abra el cuaderno agent para ver el código LangChain que define el agente; use este cuaderno para probar e iterar en el agente mediante programación, como definir más herramientas o ajustar los parámetros del agente.

    Nota:

    El código exportado podría tener un comportamiento diferente de la sesión de AI Playground. Databricks recomienda ejecutar los cuadernos exportados para iterar y depurar más, evaluar la calidad del agente e implementar el agente para compartirlo con otros usuarios.

  3. Una vez que esté satisfecho con las salidas del agente, puede ejecutar el cuaderno driver para registrar e implementar el agente en un punto de conexión de servicio de modelos.

Definición de un agente en el código

Además de generar código de agente desde AI Playground, también puede definir un agente en el código, mediante marcos como LangChain o código de Python. Para implementar un agente mediante Agent Framework, su entrada debe cumplir uno de los formatos de entrada y salida admitidos.

Uso de parámetros para configurar el agente

En Agent Framework, puede usar parámetros para controlar cómo se ejecutan los agentes. Esto le permite iterar rápidamente por distintas características del agente sin cambiar el código. Los parámetros son pares clave-valor que define en un diccionario de Python o en un archivo .yaml.

Para configurar el código, cree un objeto ModelConfig, un conjunto de parámetros clave-valor. ModelConfig es un diccionario de Python o un archivo .yaml. Por ejemplo, puede usar un diccionario durante el desarrollo y, después, convertirlo en archivo .yaml para la implementación de producción y la integración continua y entrega continua (CI/CD). Para obtener más detalles sobre ModelConfig, consulte la documentación de MLflow.

A continuación, se muestra un ejemplo de 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

Para llamar a la configuración desde el código, use una de las siguientes opciones:

# 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')

Establecimiento del esquema del recuperador

Los agentes de inteligencia artificial suelen usar recuperadores, un tipo de herramienta de agente que busca y devuelve documentos relevantes mediante un índice de búsqueda vectorial. Para obtener más información sobre los recuperadores, consulte Creación de una herramienta de recuperación de búsqueda vectorial.

Para asegurarse de que los recuperadores se realicen correctamente, llame a mlflow.models.set_retriever_schema cuando defina el agente en el código. Use set_retriever_schema para asignar los nombres de columna de la tabla devuelta a los campos esperados de MLflow, como primary_key, text_columny 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 doc_uri columna es especialmente importante al evaluar el rendimiento del recuperador. doc_uri es el identificador principal de los documentos devueltos por el recuperador, lo que le permite compararlos con los conjuntos de evaluación de la verdad del suelo. Consulte Conjuntos de evaluación.

También puede especificar columnas adicionales en el esquema del recuperador proporcionando una lista de nombres de columna con el other_columns campo .

Si tiene varios recuperadores, puede definir varios esquemas mediante nombres únicos para cada esquema del recuperador.

Formatos de entrada y salida admitidos

Agent Framework usa firmas de modelo de MLflow para definir esquemas de entrada y salida para agentes. Las características de Mosaic AI Agent Framework requieren un conjunto mínimo de campos de entrada y salida para interactuar con características como la aplicación de revisión y el área de juegos de IA. Para obtener más información, consulte Definición del esquema de entrada y salida de un agente.

Cuadernos de ejemplo

Estos cuadernos crean una cadena simple "Hola mundo" para ilustrar cómo crear una aplicación de cadena en Databricks. En el primer ejemplo se crea una cadena simple. En el segundo cuaderno de ejemplo se muestra cómo usar parámetros para minimizar los cambios de código durante el desarrollo.

Cuaderno de cadena simple

Obtener el cuaderno

Cuaderno de controlador de cadena simple

Obtener el cuaderno

Cuaderno de cadena parametrizada

Obtener el cuaderno

Cuaderno de controlador de cadena parametrizada

Obtener el cuaderno

Pasos siguientes