Haystack is an open-source framework for building production-grade AI applications, including agents, retrieval-augmented generation (RAG), and context-driven workflows.
1.1 Usage
Method 1: OpenAIChatGenerator (Recommended)
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-rygen-api-key"),
model="your-model-name",
api_base_url="https://api.rygen.io/v1"
)
response = generator.run(
messages=[ChatMessage.from_user("Hi there!")]
)
print(response["replies"])Method 2: OpenAIGenerator
from haystack.components.generators import OpenAIGenerator
from haystack.utils import Secret
generator = OpenAIGenerator(
api_key=Secret.from_token("your-rygen-api-key"),
model="your-model-name",
api_base_url="https://api.rygen.io/v1"
)
response = generator.run(prompt="Can you greet me in a friendly way?")
print(response["replies"])Method 3: Full RAG Pipeline Example
from haystack import Pipeline, Document
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
# Initialize document store
docstore = InMemoryDocumentStore()
docstore.write_documents([Document(content="Example document content.")])
# Prompt template
template = """
Use the following context to answer the question.
Context:
{% for document in documents %}
{{ document.content }}
{% endfor %}
Question: {{ query }}
"""
# Build pipeline
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-rygen-api-key"),
model="your-model-name",
api_base_url="https://api.rygen.io/v1"
))
pipe.connect("retriever", "prompt_builder.documents")
pipe.connect("prompt_builder", "llm")
# Run query
result = pipe.run({
"prompt_builder": {"query": "What is this document about?"},
"retriever": {"query": "What is this document about?"}
})Method 4: Embedding Model
from haystack.components.embedders import OpenAITextEmbedder
from haystack.utils import Secret
embedder = OpenAITextEmbedder(
api_key=Secret.from_token("your-rygen-api-key"),
model="your-model-name",
api_base_url="https://api.rygen.io/v1"
)
result = embedder.run(text="Sample text for embedding")
