Hayhooks 让部署和运行 Haystack 的 Pipelines 和 Agents 变得非常简单。
使用 Hayhooks,你可以:
📚 详细的指南、示例和 API 参考,请参阅我们的 全面文档。
# 安装 Hayhooks
pip install hayhooks
hayhooks run
创建一个带有流式聊天支持和简单 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。
hayhooks pipeline deploy-files -n my_agent ./my_agent_dir
调用 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 集成 并开始与其聊天!
Hayhooks 由 deepset 团队积极维护。