返回市场
钩子仓库

钩子仓库

作者:deepset-ai126 星标更新:2025-11-21

项目介绍

Hayhooks

Hayhooks 让部署和运行 HaystackPipelinesAgents 变得非常简单。

使用 Hayhooks,你可以:

  • 📦 将 Haystack 管道和代理部署为 REST API,具有最大的灵活性和最少的样板代码。
  • 🛠️ 通过 MCP 协议公开你的 Haystack 管道和代理,使其可以在 AI 开发环境如 CursorClaude Desktop 中作为工具使用。在底层,Hayhooks 运行的是一个 MCP Server,将每个管道和代理暴露为一个 MCP Tool
  • 💬 将你的 Haystack 管道和代理与 Open WebUI 集成,作为支持流式传输的 OpenAI 兼容聊天完成后端。
  • 🕹️ 通过聊天控制 Hayhooks 核心 API 端点 - 使用 Claude DesktopCursor 或任何其他 MCP 客户端来部署、取消部署、列出或运行 Haystack 管道和代理。

PyPI - 版本 PyPI - Python 版本 Docker 镜像发布 测试

文档

📚 详细的指南、示例和 API 参考,请参阅我们的 全面文档

快速开始

1. 安装 Hayhooks

# 安装 Hayhooks
pip install hayhooks

2. 启动 Hayhooks

hayhooks run

3. 创建一个简单的代理

创建一个带有流式聊天支持和简单 HTTP POST API 的最小代理包装器:

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


# 定义一个 Haystack 工具,提供给定位置的天气信息。
def weather_function(location):
    return f"{location} 的天气是晴朗的。"

weather_tool = Tool(
    name="weather_tool",
    description="提供给定位置的天气信息。",
    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="你是一个有用的代理",
            tools=[weather_tool],
        )

    # 这将创建一个 POST /my_agent/run 端点
    # `question` 将是输入参数,并将由 Pydantic 模型自动验证
    async def run_api_async(self, question: str) -> str:
        result = await self.agent.run_async({"messages": [ChatMessage.from_user(question)]})
        return result["replies"][0].text

    # 这将创建一个 OpenAI 兼容的 /chat/completions 端点
    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,
            },
        )

保存为 my_agent_dir/pipeline_wrapper.py

4. 部署它

hayhooks pipeline deploy-files -n my_agent ./my_agent_dir

5. 运行它

调用 HTTP POST API (/my_agent/run):

curl -X POST http://localhost:1416/my_agent/run \
  -H 'Content-Type: application/json' \
  -d '{"question": "你能做什么?"}'

调用 OpenAI 兼容的聊天完成 API(启用流式传输):

curl -X POST http://localhost:1416/chat/completions \
  -H 'Content-Type: application/json' \
  -d '{
    "model": "my_agent",
    "messages": [{"role": "user", "content": "你能做什么?"}]
  }'

或者 将其与 Open WebUI 集成 并开始与其聊天!

主要特性

🚀 简单部署

  • 将 Haystack 管道和代理部署为 REST API,只需最少的设置
  • 支持基于 YAML 和包装器的管道部署
  • 自动生成 OpenAI 兼容的端点

🌐 多种集成选项

  • MCP 协议:将管道作为 MCP 工具公开,用于 AI 开发环境
  • Open WebUI 集成:将 Hayhooks 作为支持流式传输的 Open WebUI 后端使用
  • OpenAI 兼容性:无缝集成到 OpenAI 兼容的工具和框架中

🔧 开发者友好

  • 易于管理管道的 CLI
  • 灵活的配置选项
  • 完整的日志和调试支持
  • 自定义路由和中间件支持

📁 文件上传支持

  • 内置支持处理管道中的文件上传
  • 对于 RAG 系统和文档处理来说非常完美

下一步

社区和支持

Hayhooks 由 deepset 团队积极维护。