Hayhooks
Implementa y sirve pipelines de Haystack como APIs REST, herramientas MCP y backends de finalización de chat compatibles con OpenAI.
Documentación
Hayhooks
Hayhooks facilita el despliegue y la exposición de Pipelines y Agentes de Haystack.
Con Hayhooks, puedes:
- 📦 Desplegar tus pipelines y agentes de Haystack como APIs REST con máxima flexibilidad y código mínimo.
- 🛠️ Exponer tus pipelines y agentes de Haystack a través del protocolo MCP, haciéndolos disponibles como herramientas en entornos de desarrollo de IA como Cursor o Claude Desktop. Internamente, Hayhooks funciona como un Servidor MCP, exponiendo cada pipeline y agente como una Herramienta MCP.
- 🤝 Exponer tus pipelines y agentes de Haystack a través del protocolo A2A (
pip install "hayhooks[a2a]"), para que otros agentes puedan descubrirlos mediante tarjetas de agente generadas automáticamente y delegarles tareas a través dehayhooks a2a run. - 💬 Integrar tus pipelines y agentes de Haystack con Open WebUI como backends de finalización de chat compatibles con OpenAI, con soporte de streaming.
- 🖥️ Incrustar una interfaz de chat de Chainlit directamente en Hayhooks con
pip install "hayhooks[chainlit]"yhayhooks run --with-chainlit: frontend sin configuración con streaming, selección de pipelines y widgets de UI personalizados. - 🕹️ Controlar los endpoints de la API principal de Hayhooks mediante chat: desplegar, retirar, listar o ejecutar pipelines y agentes de Haystack chateando con Claude Desktop, Cursor o cualquier otro cliente MCP.
- 📈 Trazar las acciones del ciclo de vida de Hayhooks con OpenTelemetry (
pip install "hayhooks[tracing]") para visibilidad de despliegue/ejecución/retirada en REST y MCP, con una interfaz de/dashboarda través dehayhooks run --with-tracing-dashboard(respaldada por un buffer local de trazas en vivo).
Documentación
📚 Para guías detalladas, ejemplos y referencia de API, consulta nuestra documentación completa.
Inicio Rápido
1. Instalar Hayhooks
# Install Hayhooks
pip install hayhooks
2. Iniciar Hayhooks
hayhooks run
3. Crear un agente simple
Crea un envoltorio de agente mínimo con soporte de chat en streaming y una API HTTP POST simple:
from typing import AsyncGenerator
from haystack.components.agents import Agent
from haystack.dataclasses import ChatMessage
from haystack.tools import Tool
from haystack.components.generators.chat import OpenAIChatGenerator
from hayhooks import BasePipelineWrapper, async_streaming_generator
# Define a Haystack Tool that provides weather information for a given location.
def weather_function(location):
return f"The weather in {location} is sunny."
weather_tool = Tool(
name="weather_tool",
description="Provides weather information for a given location.",
parameters={
"type": "object",
"properties": {"location": {"type": "string"}},
"required": ["location"],
},
function=weather_function,
)
class PipelineWrapper(BasePipelineWrapper):
def setup(self) -> None:
self.agent = Agent(
chat_generator=OpenAIChatGenerator(model="gpt-4o-mini"),
system_prompt="You're a helpful agent",
tools=[weather_tool],
)
# This will create a POST /my_agent/run endpoint
# `question` will be the input argument and will be auto-validated by a Pydantic model
async def run_api_async(self, question: str) -> str:
result = await self.agent.run_async(messages=[ChatMessage.from_user(question)])
return result["last_message"].text
# This will create an OpenAI-compatible /chat/completions endpoint
async def run_chat_completion_async(
self, model: str, messages: list[dict], body: dict
) -> AsyncGenerator[str, None]:
chat_messages = [
ChatMessage.from_openai_dict_format(message) for message in messages
]
return async_streaming_generator(
pipeline=self.agent,
pipeline_run_args={
"messages": chat_messages,
},
)
Guárdalo como my_agent_dir/pipeline_wrapper.py.
4. Desplegarlo
hayhooks pipeline deploy-files -n my_agent ./my_agent_dir
5. Ejecutarlo
Llama a la API HTTP POST (/my_agent/run):
curl -X POST http://localhost:1416/my_agent/run \
-H 'Content-Type: application/json' \
-d '{"question": "What can you do?"}'
Llama a la API de finalización de chat compatible con OpenAI (streaming habilitado):
curl -X POST http://localhost:1416/chat/completions \
-H 'Content-Type: application/json' \
-d '{
"model": "my_agent",
"messages": [{"role": "user", "content": "What can you do?"}]
}'
¡O chatea con él en la UI de Chainlit integrada (hayhooks run --with-chainlit) o intégralo con Open WebUI!
Características Clave
🚀 Despliegue Fácil
- Despliega pipelines y agentes de Haystack como APIs REST con configuración mínima
- Soporte para despliegue de pipelines basado en YAML y en envoltorios
- Generación automática de endpoints compatibles con OpenAI
🌐 Múltiples Opciones de Integración
- Protocolo MCP: Expón pipelines como herramientas MCP para usar en entornos de desarrollo de IA
- Protocolo A2A: Expón pipelines como agentes A2A que otros agentes pueden descubrir y delegar tareas
- UI de Chainlit: Frontend de chat integrado con streaming, selección de pipelines y widgets de UI personalizados
- Integración con Open WebUI: Usa Hayhooks como backend para Open WebUI con soporte de streaming
- Compatibilidad con OpenAI: Integración perfecta con herramientas y frameworks compatibles con OpenAI
🔧 Amigable para Desarrolladores
- CLI para gestión sencilla de pipelines
- Opciones de configuración flexibles
- Soporte integral de registro y depuración
- Hooks de trazado listos para OpenTelemetry basados en las APIs de trazado de Haystack
- Soporte de rutas y middleware personalizados
📁 Soporte de Carga de Archivos
- Soporte integrado para manejar cargas de archivos en pipelines
- Perfecto para sistemas RAG y procesamiento de documentos
Próximos Pasos
- Guía de Inicio Rápido - Comienza con Hayhooks
- Instalación - Instala Hayhooks y sus dependencias
- Configuración - Configura Hayhooks según tus necesidades
- Frontend del Panel de Trazado - Configuración del panel local y comandos de desarrollo del frontend
- Ejemplos - Explora implementaciones de ejemplo
Comunidad y Soporte
- GitHub: deepset-ai/hayhooks
- Problemas: Problemas de GitHub
- Documentación: Documentación Completa
Hayhooks es mantenido activamente por el equipo de deepset.