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
- Comprender los conceptos de los agentes y herramientas de inteligencia artificial tal y como se describe en ¿Qué son los agentes de inteligencia artificial y sistemas de inteligencia artificial compuestos?
- Databricks recomienda instalar la versión más reciente del cliente de Python de MLflow al desarrollar agentes. Consulte Autenticación para recursos dependientes a fin de obtener información sobre los requisitos de versión
mlflow
.
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.
En Parque infantil, seleccione un modelo con la etiqueta Herramientas habilitada .
Seleccione Herramientas y especifique los nombres de función del catálogo de Unity en la lista desplegable:
Chatear para probar la combinación actual de LLM, herramientas y aviso del sistema, e intentar variaciones.
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:
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.
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.
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_column
y 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.