跳到主要内容

Haystack

Haystack 是用于生产就绪智能体、RAG 和上下文工程的开源 AI 框架。 官方网站:haystack.deepset.ai

1.1 使用方法

方式一:OpenAIChatGenerator(推荐)

from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.dataclasses import ChatMessage
from haystack.utils import Secret

generator = OpenAIChatGenerator(
api_key=Secret.from_token("your-luchentech-key"),
model="minimax/minimax-m2.5",
api_base_url="https://api.luchentech.com/inference/v1"
)

response = generator.run(
messages=[ChatMessage.from_user("Hello!")]
)
print(response["replies"])

方式二:OpenAIGenerator

from haystack.components.generators import OpenAIGenerator
from haystack.utils import Secret

generator = OpenAIGenerator(
api_key=Secret.from_token("your-luchentech-key"),
model="minimax/minimax-m2.5",
api_base_url="https://api.luchentech.com/inference/v1"
)

response = generator.run(prompt="Hello, how are you?")
print(response["replies"])

方式三:完整 RAG 流水线示例

from haystack import Pipeline
from haystack.utils import Secret
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.components.builders.prompt_builder import PromptBuilder
from haystack.components.generators.chat import OpenAIChatGenerator
from haystack.document_stores.in_memory import InMemoryDocumentStore
from haystack import Document

# 初始化文档存储
docstore = InMemoryDocumentStore()
docstore.write_documents([Document(content="Your document content here")])

# 定义提示词模板
template = """
Given the following information, answer the question.

Context:
{% for document in documents %}
{{ document.content }}
{% endfor %}

Question: {{ query }}?
"""

# 创建流水线
pipe = Pipeline()
pipe.add_component("retriever", InMemoryBM25Retriever(document_store=docstore))
pipe.add_component("prompt_builder", PromptBuilder(template=template))
pipe.add_component("llm", OpenAIChatGenerator(
api_key=Secret.from_token("your-luchentech-key"),
model="minimax/minimax-m2.5",
api_base_url="https://api.luchentech.com/inference/v1"
))

pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")

# 运行查询
result = pipe.run({
"prompt_builder": {"query": "Your question?"},
"retriever": {"query": "Your question?"}
})

方式四:嵌入模型

from haystack.components.embedders import OpenAITextEmbedder
from haystack.utils import Secret

embedder = OpenAITextEmbedder(
api_key=Secret.from_token("your-luchentech-key"),
model="minimax/minimax-m2.5",
api_base_url="https://api.luchentech.com/inference/v1"
)

result = embedder.run(text="Your text to embed")

1.2 参考