Haystack

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")

1.2 References