En la primera publicación de esta serie (AGENIC AI 101: Comenzando su viaje construyendo agentes de IA), hablamos sobre los fundamentos de crear agentes de IA y conceptos introducidos como razonamiento, memoria y herramientas.
Por supuesto, esa primera publicación tocó solo la superficie de esta nueva área de la industria de datos. Se puede hacer mucho más, y vamos a aprender más en el camino de esta serie.
Entonces, es hora de dar un paso más allá.
En esta publicación, cubriremos tres temas:
- Barandas: Estos son bloques seguros que evitan que un modelo de lenguaje grande (LLM) responda sobre algunos temas.
- Evaluación de agentes: ¿Alguna vez has pensado en cuán precisas son las respuestas de LLM? Apuesto a que lo hiciste. Entonces veremos las principales formas de medir eso.
- Escucha: También aprenderemos sobre la aplicación de monitoreo incorporada en el marco de Agno.
Comenzaremos ahora.
Barandas
Nuestro primer tema es el más simple, en mi opinión. Las barandillas son reglas que evitarán que un agente de IA responda a un tema o lista de temas determinados.
Creo que hay una buena posibilidad de que haya pedido algo para chatear o Gemini y recibido una respuesta como “No puedo hablar de este tema”, o “Consulte a un especialista profesional”, algo así. Por lo general, eso ocurre con temas sensibles como asesoramiento de salud, condiciones psicológicas o asesoramiento financiero.
Esos bloques son salvaguardas para evitar que las personas se lastimen, dañen su salud o sus bolsillos. Como sabemos, los LLM están capacitados en grandes cantidades de texto, ergo heredando mucho contenido malo con él, lo que fácilmente podría conducir a malos consejos en esas áreas para las personas. ¡Y ni siquiera mencioné alucinaciones!
Piense en cuántas historias hay de personas que perdieron dinero siguiendo consejos de inversión de foros en línea. O cuántas personas tomaron la medicina equivocada porque Lea sobre esto en Internet.
Bueno, supongo que tienes el punto. Debemos evitar que nuestros agentes hablen de ciertos temas o tomen ciertas acciones. Para eso, usaremos barandillas.
El mejor marco que encontré para imponer esos bloques son las barandillas ai [1]. Allí, verá un centro lleno de reglas predefinidas que debe seguir una respuesta para pasar y mostrarse al usuario.
Para comenzar rápidamente, primero vaya a este enlace [2] y obtener una llave API. Luego, instale el paquete. A continuación, escriba el comando de configuración de barandas. Le hará un par de preguntas que pueda responder n (por no), y le pedirá que ingrese la clave API generada.
pip install guardrails-ai
guardrails configure
Una vez que se complete, vaya al centro de AI de barandilla [3] y elige uno que necesite. Cada barandilla tiene instrucciones sobre cómo implementarlo. Básicamente, lo instala a través de la línea de comando y luego lo usa como un módulo en Python.
Para este ejemplo, estamos eligiendo uno llamado Restringir al tema [4]que, como dice su nombre, le permite al usuario hablar solo de lo que hay en la lista. Por lo tanto, regrese al terminal e instálelo con el código a continuación.
guardrails hub install hub://tryolabs/restricttotopic
A continuación, abramos nuestro script de Python e importemos algunos módulos.
# Imports
from agno.agent import Agent
from agno.models.google import Gemini
import os
# Import Guard and Validator
from guardrails import Guard
from guardrails.hub import RestrictToTopic
A continuación, creamos el guardia. Restringiremos a nuestro agente para hablar solo de deportes o el clima. Y lo estamos restringiendo para hablar de cepo.
# Setup Guard
guard = Guard().use(
RestrictToTopic(
valid_topics=["sports", "weather"],
invalid_topics=["stocks"],
disable_classifier=True,
disable_llm=False,
on_fail="filter"
)
)
Ahora podemos ejecutar el agente y el guardia.
# Create agent
agent = Agent(
model= Gemini(id="gemini-1.5-flash",
api_key = os.environ.get("GEMINI_API_KEY")),
description= "An assistant agent",
instructions= ["Be sucint. Reply in maximum two sentences"],
markdown= True
)
# Run the agent
response = agent.run("What's the ticker symbol for Apple?").content
# Run agent with validation
validation_step = guard.validate(response)
# Print validated response
if validation_step.validation_passed:
print(response)
else:
print("Validation Failed", validation_step.validation_summaries[0].failure_reason)
Esta es la respuesta cuando preguntamos sobre un símbolo de stock.
Validation Failed Invalid topics found: ['stocks']
Si pregunto sobre un tema que no está en el valid_topics Lista, también veré un bloque.
"What's the number one soda drink?"
Validation Failed No valid topic was found.
Finalmente, preguntemos sobre los deportes.
"Who is Michael Jordan?"
Michael Jordan is a former professional basketball player widely considered one of
the greatest of all time. He won six NBA championships with the Chicago Bulls.
Y vimos una respuesta esta vez, ya que es un tema válido.
Pasemos a la evaluación de los agentes ahora.
Evaluación de agentes
Desde que comencé a estudiar LLMS y AI agenteuna de mis preguntas principales ha sido sobre la evaluación del modelo. A diferencia del modelado tradicional de ciencia de datos, donde tiene métricas estructuradas que son adecuadas para cada caso, para los agentes de IA, esto es más borrosa.
Afortunadamente, la comunidad de desarrolladores es bastante rápida en la búsqueda de soluciones para casi todo, por lo que crearon este agradable paquete para la evaluación de LLMS: deepeval.
Profundo [5] es una biblioteca creada por AI segura que recopila muchos métodos para evaluar los agentes LLM y AI. En esta sección, aprendamos un par de métodos principales, solo para que podamos construir cierta intuición sobre el tema, y también porque la biblioteca es bastante extensa.
La primera evaluación es la más básica que podemos usar, y se llama G-Eval. A medida que las herramientas de IA como ChatGPT se vuelven más comunes en las tareas cotidianas, tenemos que asegurarnos de que estén dando respuestas útiles y precisas. Ahí es donde entra G-Eval del paquete de Deepeval Python.
G-Eval es como un revisor inteligente que usa otro modelo de IA para evaluar qué tan bien está funcionando un chatbot o un asistente de IA. Por ejemplo. Mi agente ejecuta Gemini y estoy usando OpenAI para evaluarlo. Este método adopta un enfoque más avanzado que un humano al pedirle a una IA que “califica” las respuestas de otra IA basadas en cosas como pertinencia, exactitudy claridad.
Es una buena manera de probar y mejorar los sistemas de IA generativos de una manera más escalable. Codicemos rápidamente un ejemplo. Importaremos los módulos, crearemos un agente de chat indicativo, y lo preguntaremos sobre una descripción del clima para el mes de mayo en Nueva York.
# Imports
from agno.agent import Agent
from agno.models.google import Gemini
import os
# Evaluation Modules
from deepeval.test_case import LLMTestCase, LLMTestCaseParams
from deepeval.metrics import GEval
# Prompt
prompt = "Describe the weather in NYC for May"
# Create agent
agent = Agent(
model= Gemini(id="gemini-1.5-flash",
api_key = os.environ.get("GEMINI_API_KEY")),
description= "An assistant agent",
instructions= ["Be sucint"],
markdown= True,
monitoring= True
)
# Run agent
response = agent.run(prompt)
# Print response
print(response.content)
Responde: “Suave, con máximos promedio en los 60 ° F y bajas en los 50 ° F. Espere un poco de lluvia“.
Lindo. Me parece bastante bueno.
Pero, ¿cómo podemos ponerle un número y mostrarle a un potencial gerente o cliente cómo está nuestro agente?
Aquí está como:
- Crear un caso de prueba que pase el
prompty elresponsehaciaLLMTestCaseclase. - Crear una métrica. Usaremos el método
GEvaly agregue un mensaje para que el modelo lo pruebe para coherenciay luego le doy el significado de lo que es la coherencia para mí. - Dar la salida como
evaluation_params. - Ejecutar el
measuremétodo y obtener elscoreyreasonde eso.
# Test Case
test_case = LLMTestCase(input=prompt, actual_output=response)
# Setup the Metric
coherence_metric = GEval(
name="Coherence",
criteria="Coherence. The agent can answer the prompt and the response makes sense.",
evaluation_params=[LLMTestCaseParams.ACTUAL_OUTPUT]
)
# Run the metric
coherence_metric.measure(test_case)
print(coherence_metric.score)
print(coherence_metric.reason)
La salida se ve así.
0.9
The response directly addresses the prompt about NYC weather in May,
maintains logical consistency, flows naturally, and uses clear language.
However, it could be slightly more detailed.
0.9 parece bastante bueno, dado que el umbral predeterminado es 0.5.
Si desea verificar los registros, use este próximo fragmento.
# Check the logs
print(coherence_metric.verbose_logs)
Aquí está la respuesta.
Criteria:
Coherence. The agent can answer the prompt and the response makes sense.
Evaluation Steps:
[
"Assess whether the response directly addresses the prompt; if it aligns,
it scores higher on coherence.",
"Evaluate the logical flow of the response; responses that present ideas
in a clear, organized manner rank better in coherence.",
"Consider the relevance of examples or evidence provided; responses that
include pertinent information enhance their coherence.",
"Check for clarity and consistency in terminology; responses that maintain
clear language without contradictions achieve a higher coherence rating."
]
Muy lindo. Ahora aprendamos sobre otro caso de uso interesante, que es la evaluación de finalización de la tarea para agentes de IA. Elaborando un poco más, cómo le está yendo a nuestro agente cuando se le pide que realice una tarea y cuánto puede entregar el agente.
Primero, estamos creando un agente simple que pueda acceder a Wikipedia y resumir el tema de la consulta.
# Imports
from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.wikipedia import WikipediaTools
import os
from deepeval.test_case import LLMTestCase, ToolCall
from deepeval.metrics import TaskCompletionMetric
from deepeval import evaluate
# Prompt
prompt = "Search wikipedia for 'Time series analysis' and summarize the 3 main points"
# Create agent
agent = Agent(
model= Gemini(id="gemini-2.0-flash",
api_key = os.environ.get("GEMINI_API_KEY")),
description= "You are a researcher specialized in searching the wikipedia.",
tools= [WikipediaTools()],
show_tool_calls= True,
markdown= True,
read_tool_call_history= True
)
# Run agent
response = agent.run(prompt)
# Print response
print(response.content)
El resultado se ve muy bien. Vamos a evaluarlo usando el TaskCompletionMetric clase.
# Create a Metric
metric = TaskCompletionMetric(
threshold=0.7,
model="gpt-4o-mini",
include_reason=True
)
# Test Case
test_case = LLMTestCase(
input=prompt,
actual_output=response.content,
tools_called=[ToolCall(name="wikipedia")]
)
# Evaluate
evaluate(test_cases=[test_case], metrics=[metric])
Salida, incluida la respuesta del agente.
======================================================================
Metrics Summary
- ✅ Task Completion (score: 1.0, threshold: 0.7, strict: False,
evaluation model: gpt-4o-mini,
reason: The system successfully searched for 'Time series analysis'
on Wikipedia and provided a clear summary of the 3 main points,
fully aligning with the user's goal., error: None)
For test case:
- input: Search wikipedia for 'Time series analysis' and summarize the 3 main points
- actual output: Here are the 3 main points about Time series analysis based on the
Wikipedia search:
1. **Definition:** A time series is a sequence of data points indexed in time order,
often taken at successive, equally spaced points in time.
2. **Applications:** Time series analysis is used in various fields like statistics,
signal processing, econometrics, weather forecasting, and more, wherever temporal
measurements are involved.
3. **Purpose:** Time series analysis involves methods for extracting meaningful
statistics and characteristics from time series data, and time series forecasting
uses models to predict future values based on past observations.
- expected output: None
- context: None
- retrieval context: None
======================================================================
Overall Metric Pass Rates
Task Completion: 100.00% pass rate
======================================================================
✓ Tests finished 🎉! Run 'deepeval login' to save and analyze evaluation results
on Confident AI.
Nuestro agente aprobó la prueba con honor: 100%!
Puedes aprender mucho más sobre el Profundo Biblioteca en este enlace [8].
Finalmente, en la siguiente sección, aprenderemos las capacidades de la biblioteca de Agno para los agentes de monitoreo.
Monitoreo de agentes
Como te dije en mi publicación anterior [9]Elegí Agno Para obtener más información sobre la IA de agente. Solo para ser claros, esta no es una publicación patrocinada. Es solo que creo que esta es la mejor opción para aquellos que comienzan su viaje aprendiendo sobre este tema.
Por lo tanto, una de las cosas interesantes que podemos aprovechar el uso del marco de Agno es la aplicación que ponen a disposición para el monitoreo del modelo.
Tome este agente que pueda buscar en Internet y escribir publicaciones de Instagram, por ejemplo.
# Imports
import os
from agno.agent import Agent
from agno.models.google import Gemini
from agno.tools.file import FileTools
from agno.tools.googlesearch import GoogleSearchTools
# Topic
topic = "Healthy Eating"
# Create agent
agent = Agent(
model= Gemini(id="gemini-1.5-flash",
api_key = os.environ.get("GEMINI_API_KEY")),
description= f"""You are a social media marketer specialized in creating engaging content.
Search the internet for 'trending topics about {topic}' and use them to create a post.""",
tools=[FileTools(save_files=True),
GoogleSearchTools()],
expected_output="""A short post for instagram and a prompt for a picture related to the content of the post.
Don't use emojis or special characters in the post. If you find an error in the character encoding, remove the character before saving the file.
Use the template:
- Post
- Prompt for the picture
Save the post to a file named 'post.txt'.""",
show_tool_calls=True,
monitoring=True)
# Writing and saving a file
agent.print_response("""Write a short post for instagram with tips and tricks that positions me as
an authority in {topic}.""",
markdown=True)
Para monitorear su rendimiento, siga estos pasos:
- Ir a https://app.agno.com/settings y obtener una llave API.
- Abra una terminal y escriba
ag setup. - Si es la primera vez, podría solicitar la clave API. Copie y péguelo en el mensaje terminal.
- Verás el Panel Pestaña Abrir en su navegador.
- Si desea monitorear a su agente, agregue el argumento
monitoring=True. - Ejecute su agente.
- Vaya al tablero en el navegador web.
- Hacer clic en Sesiones. Como es un solo agente, lo verá debajo de los agentes de pestaña en la parte superior de la página.
Las características de las cools podemos ver que hay:
- Información sobre el modelo
- La respuesta
- Herramientas utilizadas
- Tokens consumidos
Bastante bien, ¿eh?
Esto es útil para nosotros saber dónde está gastando más o menos tokens, y dónde está tomando más tiempo para realizar una tarea, por ejemplo.
Bueno, terminemos entonces.
Antes de que te vayas
Hemos aprendido mucho en esta segunda ronda. En esta publicación, cubrimos:
- Barandas para AI son medidas de seguridad esenciales y pautas éticas implementadas para prevenir resultados dañinos no deseados y garantizar un comportamiento de IA responsable.
- Evaluación del modeloejemplificado por
GEvalpara una evaluación amplia yTaskCompletionCon la calidad de salida de los agentes, es crucial para comprender las capacidades y limitaciones de la IA. - Monitoreo de modelos Con la aplicación de Agno, incluido el seguimiento del uso del token y el tiempo de respuesta, lo cual es vital para gestionar los costos, garantizar el rendimiento e identificar posibles problemas en los sistemas de IA implementados.
Contáctame y sígueme
Si le gustó este contenido, busque más de mi trabajo en mi sitio web.
Repositorio de Github
https://github.com/gurezende/agno-ai-labs
Referencias
[1. Guardrails Ai] https://www.guardrailsai.com/docs/getting_started/guardrails_server
[2. Guardrails AI Auth Key] https://hub.guardrailsai.com/keys
[3. Guardrails AI Hub] https://hub.guardrailsai.com/
[4. Guardrails Restrict to Topic] https://hub.guardrailsai.com/validator/tryolabs/restricttotópico
[5. DeepEval.] https://www.deepeval.com/docs/getting-started
[6. DataCamp – DeepEval Tutorial] https://www.datacamp.com/tutorial/deepeval
[7. DeepEval. TaskCompletion] https://www.deepeval.com/docs/metrics-task-completion
[8. Llm Evaluation Metrics: The Ultimate LLM Evaluation Guide] https://www.confident-ai.com/blog/llm-evaluation-metrics-everything-you-need-for-llm-evaluation
[9. Agentic AI 101: Starting Your Journey Building AI Agents] https://towardsdatascience.com/agentic-ai-101-starting-your-journey-building-ai-agents/