Las aplicaciones modernas de PNL a menudo exigen un razonamiento de varios pasos, interacción con herramientas externas y la capacidad de adaptarse dinámicamente a las consultas de los usuarios. Haystack Agents, una característica innovadora del Marco de PNL Haystack por profundoejemplifica esta nueva ola de capacidades avanzadas de PNL.
Los agentes Haystack están diseñados para manejar escenarios que requieren:
- Razonamiento complejo de varios pasos.
- Integración de herramientas externas o API.
- Flujos de trabajo de recuperación aumentada que van más allá de la simple respuesta a preguntas.
Este artículo profundiza en el marco de Haystack Agents, explorando sus características, arquitectura y aplicaciones del mundo real. Para proporcionar información práctica, crearemos un agente de control de calidad que utilice herramientas como un motor de búsqueda y una calculadora.
¿Por qué elegir agentes Haystack?
A diferencia de los marcos de propósito general como LangChainLos agentes de Haystack están profundamente integrados en el ecosistema de Haystack, lo que los hace muy eficaces para tareas especializadas como recuperación de documentos, integración de herramientas personalizadas y razonamiento de varios pasos. Estos agentes se destacan en la búsqueda en grandes conjuntos de datos utilizando recuperadores avanzados, ampliando la funcionalidad incorporando API para tareas como cálculos o consultas de bases de datos, y abordando consultas complejas que requieren deducciones lógicas. Al ser de código abierto y modulares, Haystack Agents se integra perfectamente con infraestructuras y bibliotecas de aprendizaje automático populares como búsqueda elásticamodelos Hugging Face y transformadores previamente entrenados.
Arquitectura de los agentes Haystack
Los agentes Haystack están estructurados utilizando un arquitectura basada en herramientas. Aquí, las herramientas funcionan como módulos individuales diseñados para tareas específicas, como búsqueda de documentos, cálculos o interacciones API. El agente determina dinámicamente qué herramientas utilizar, la secuencia de su uso y cómo combinar sus resultados para generar una respuesta coherente. La arquitectura incluye componentes clave, como herramientas, que ejecutan indicaciones de acción específicas que guían el proceso de toma de decisiones del agente. Estos recuperadores facilitan la búsqueda de documentos dentro de grandes conjuntos de datos, y los nodos y canalizaciones administran el procesamiento de datos y la orquestación del flujo de trabajo en Haystack.
Caso de uso: creación de un agente de control de calidad con herramientas de búsqueda y calculadora
Para este tutorial, nuestro agente de control de calidad realizará lo siguiente:
- Obtenga respuestas a preguntas objetivas de un almacén de documentos.
- Realizar cálculos matemáticos utilizando una herramienta de calculadora.
- Combine resultados dinámicamente cuando sea necesario.
Paso 1: instalar los requisitos previos
Antes de sumergirse en la implementación, asegúrese de que su entorno esté configurado:
1. Instale Python 3.8 o superior.
2. Instale Haystack con todas las dependencias:
# bash
pip install farm-haystack[all]
3. Inicie Elasticsearch, la columna vertebral de nuestro almacén de documentos:
# bash
docker run -d -p 9200:9200 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.17.1
Paso 2: Inicialice el almacén y el recuperador de documentos
El almacén de documentos es el depósito central para almacenar y consultar documentos, mientras que el recuperador encuentra documentos relevantes para una consulta determinada.
# python
from haystack.utils import launch_es
from haystack.nodes import EmbeddingRetriever
from haystack.pipelines import DocumentSearchPipeline
from haystack.document_stores import ElasticsearchDocumentStore
# Launch Elasticsearch
launch_es()
# Initialize Document Store
document_store = ElasticsearchDocumentStore()
# Add documents to the store
docs = [
{"content": "Albert Einstein was a theoretical physicist who developed the theory of relativity."},
{"content": "The capital of France is Paris."},
{"content": "The square root of 16 is 4."}
]
document_store.write_documents(docs)
# Initialize Retriever
retriever = EmbeddingRetriever(
document_store=document_store,
embedding_model="sentence-transformers/all-MiniLM-L6-v2",
use_gpu=True
)
# Update embeddings
document_store.update_embeddings(retriever)
Paso 3: definir herramientas
Las herramientas son los componentes básicos de Haystack Agents. Cada herramienta tiene un propósito específico, como buscar documentos o realizar cálculos.
# python
from haystack.agents.base import Tool
# Search Tool
search_pipeline = DocumentSearchPipeline(retriever)
search_tool = Tool(
name="Search",
pipeline_or_node=search_pipeline,
description="Use this tool for answering factual questions using a document store."
)
# Calculator Tool
def calculate(expression: str) -> str:
try:
result = eval(expression)
return str(result)
except Exception as e:
return f"Error in calculation: {e}"
calculator_tool = Tool(
name="Calculator",
pipeline_or_node=calculate,
description="Use this tool to perform mathematical calculations."
)
Paso 4: inicializar el agente
Los agentes en Haystack están configurados con herramientas y una plantilla de aviso que define cómo interactúan con las herramientas.
# python
from haystack.agents import Agent
# Initialize Agent
agent = Agent(
tools=[search_tool, calculator_tool],
prompt_template="Answer questions using the provided tools. Combine results if needed."
)
Paso 5: consultar al agente
Interactuar con el agente planteándole consultas en lenguaje natural.
# python
# Factual Question
response = agent.run("Who developed the theory of relativity?")
print("Agent Response:", response)
# Mathematical Calculation
response = agent.run("What is the result of 8 * (2 + 3)?")
print("Agent Response:", response)
# Combined Query
response = agent.run("What is the square root of 16, and who developed it?")
print("Agent Response:", response)
Funciones avanzadas de los agentes Haystack
- Herramientas personalizadas: Integre API o herramientas específicas de dominio para ampliar la funcionalidad (por ejemplo, API meteorológicas, datos del mercado de valores).
- Modelos afinados: Reemplace el modelo de incrustación predeterminado por uno optimizado para tareas especializadas.
- Tuberías encadenadas: Utilice múltiples canalizaciones para procesar consultas complejas que involucren múltiples fuentes de datos.
En conclusión, Haystack Agents ofrece un marco potente, flexible y modular para crear aplicaciones avanzadas de PNL que requieren razonamiento dinámico de varios pasos y uso de herramientas. Con su perfecta integración en el ecosistema de Haystack, estos agentes se destacan en tareas como recuperación de documentos, integración de API personalizada y procesamiento lógico, lo que los hace ideales para resolver problemas complejos del mundo real. Son particularmente adecuados para aplicaciones como bots de atención al cliente, que combinan la búsqueda de documentos con API externas para la resolución de tickets en tiempo real, herramientas educativas que recuperan información y realizan cálculos para responder las consultas de los usuarios, y soluciones de inteligencia empresarial que agregan datos de múltiples fuentes y generar insights.
Fuentes
Además, no olvides seguirnos en Gorjeo y únete a nuestro Canal de telegramas y LinkedIn Grarriba. No olvides unirte a nuestro SubReddit de más de 65.000 ml.
🚨 [Recommended Read] Nebius AI Studio se expande con modelos de visión, nuevos modelos de lenguaje, incorporaciones y LoRA (Promovido)
A Sana Hassan, pasante de consultoría en Marktechpost y estudiante de doble titulación en IIT Madras, le apasiona aplicar la tecnología y la inteligencia artificial para abordar los desafíos del mundo real. Con un gran interés en resolver problemas prácticos, aporta una nueva perspectiva a la intersección de la IA y las soluciones de la vida real.