Hayhooks
Implante e sirva pipelines Haystack como APIs REST, Ferramentas MCP e backends de conclusão de chat compatíveis com OpenAI.
GitHub
152
Experimente este MCPPatrocinadoDocumentação
Hayhooks
Hayhooks facilita a implantação e o fornecimento de Haystack Pipelines e Agents.
Com o Hayhooks, você pode:
- 📦 Implantar seus pipelines e agentes Haystack como APIs REST com máxima flexibilidade e código boilerplate mínimo.
- 🛠️ Expor seus pipelines e agentes Haystack pelo protocolo MCP, tornando-os disponíveis como ferramentas em ambientes de desenvolvimento de IA como Cursor ou Claude Desktop. Internamente, o Hayhooks roda como um MCP Server, expondo cada pipeline e agente como uma MCP Tool.
- 🤝 Expor seus pipelines e agentes Haystack pelo protocolo A2A (
pip install "hayhooks[a2a]"), para que outros agentes possam descobri-los por meio de cartões de agente gerados automaticamente e delegar tarefas a eles viahayhooks a2a run. - 💬 Integrar seus pipelines e agentes Haystack com o Open WebUI como backends de conclusão de chat compatíveis com OpenAI, com suporte a streaming.
- 🖥️ Embutir uma interface de chat Chainlit diretamente no Hayhooks com
pip install "hayhooks[chainlit]"ehayhooks run --with-chainlit-- frontend com zero configuração, streaming, seleção de pipelines e widgets de UI personalizados. - 🕹️ Controlar os endpoints da API principal do Hayhooks por chat - implante, remova, liste ou execute pipelines e agentes Haystack conversando com o Claude Desktop, Cursor ou qualquer outro cliente MCP.
- 📈 Rastrear ações do ciclo de vida do Hayhooks com OpenTelemetry (
pip install "hayhooks[tracing]") para visibilidade de deploy/run/undeploy em REST e MCP, com uma UI/dashboardviahayhooks run --with-tracing-dashboard(suportada por um buffer local de rastreamento ao vivo).
Documentação
📚 Para guias detalhados, exemplos e referência da API, consulte nossa documentação abrangente.
Início Rápido
1. Instale o Hayhooks
# Install Hayhooks
pip install hayhooks
2. Inicie o Hayhooks
hayhooks run
3. Crie um agente simples
Crie um wrapper de agente mínimo com suporte a chat com streaming e uma API HTTP POST simples:
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,
},
)
Salve como my_agent_dir/pipeline_wrapper.py.
4. Implante-o
hayhooks pipeline deploy-files -n my_agent ./my_agent_dir
5. Execute-o
Chame a 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?"}'
Chame a API de conclusão de chat compatível com 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?"}]
}'
Ou converse com ele na UI Chainlit embutida (hayhooks run --with-chainlit) ou integre-o com o Open WebUI!
Principais Recursos
🚀 Implantação Fácil
- Implante pipelines e agentes Haystack como APIs REST com configuração mínima
- Suporte para implantação de pipelines baseada em YAML e em wrappers
- Geração automática de endpoints compatíveis com OpenAI
🌐 Múltiplas Opções de Integração
- Protocolo MCP: Exponha pipelines como ferramentas MCP para uso em ambientes de desenvolvimento de IA
- Protocolo A2A: Exponha pipelines como agentes A2A que outros agentes podem descobrir e para os quais podem delegar tarefas
- UI Chainlit: Frontend de chat embutido com streaming, seleção de pipelines e widgets de UI personalizados
- Integração com Open WebUI: Use o Hayhooks como backend para o Open WebUI com suporte a streaming
- Compatibilidade com OpenAI: Integração perfeita com ferramentas e frameworks compatíveis com OpenAI
🔧 Amigável para Desenvolvedores
- CLI para gerenciamento fácil de pipelines
- Opções de configuração flexíveis
- Suporte abrangente a logging e depuração
- Hooks de rastreamento prontos para OpenTelemetry, construídos sobre as APIs de rastreamento do Haystack
- Suporte a rotas e middlewares personalizados
📁 Suporte a Upload de Arquivos
- Suporte integrado para lidar com uploads de arquivos em pipelines
- Perfeito para sistemas RAG e processamento de documentos
Próximos Passos
- Guia de Início Rápido - Comece com o Hayhooks
- Instalação - Instale o Hayhooks e as dependências
- Configuração - Configure o Hayhooks de acordo com suas necessidades
- Frontend do Dashboard de Rastreamento - Configuração do dashboard local e comandos de desenvolvimento do frontend
- Exemplos - Explore implementações de exemplo
Comunidade e Suporte
- GitHub: deepset-ai/hayhooks
- Issues: Issues do GitHub
- Documentação: Documentação Completa
O Hayhooks é mantido ativamente pela equipe da deepset.