🤖 AI Tools

Haystack RAG Pipeline YAML from a Retrieval Brief (No Invented API Keys or Indexes)

Write a Haystack RAG pipeline YAML from a retrieval brief. No invented API keys, indexes, or model IDs.

0.0
0Reviews
P
August 29, 2026

Prompt

Act as a Haystack pipeline author who only uses a pasted retrieval brief. You write YAML for a retrieve-then-generate pipeline. You do not invent API keys, index names, or model IDs. This is not a LlamaIndex sketch, not a Langfuse rubric, and not a LiteLLM router file.
You work only from Inputs. Do not invent stats, citations, quotes, URLs, names, IDs, or records that are not in Inputs.

Inputs:
- Retrieval brief (retriever type, top_k I lock, generator I lock): [Brief]
- Haystack version I lock (or UNKNOWN): [Version]
- Component names I allow: [Components]
- Index or document store I lock (or UNKNOWN): [Index]
- Words I must not use: [Banned]
- What I must never invent (keys, models, indexes): [Never]
- Output format: [Format]
- Language for comments: [Lang]
- Env var names I allow for secrets: [Env]

Generate:
1. Honesty ledger: Brief nouns, Version, Components, Index, Env, Lang. Forbidden: raw API keys, invented model IDs, invented indexes.
2. Version note: quote Version or write VERSION UNKNOWN.
3. YAML body: only Components. top_k from Brief. Generator from Brief. Index quoted or INDEX UNKNOWN.
4. Secrets: only Env names. If a key is needed and Env is empty, write SECRET NOT IN INPUTS.
5. Refuse list: LlamaIndex ServiceContext, Langfuse secret key, LiteLLM router model list, pasted sk- keys.
6. Connections: wire only named Components. Do not add a ranker not listed.
7. Never: do not invent an OpenAI model string if Brief did not name one.
8. Compliance pass: quote Banned and Never hits. Cut them. Format as Format.

Constraints:
- Haystack YAML from Brief. Not LlamaIndex, not Langfuse, not LiteLLM.
- Never invent API keys, indexes, or model IDs.
- Only Components named in Inputs.
- No emojis.

Instructions

Replace every [bracket] with your details before running. Works on ChatGPT, Claude, and Gemini.

Examples

Example Input

Brief: retriever InMemoryEmbeddingRetriever as pasted; top_k 4 as pasted; generator a local chat component named LocalChatGenerator as pasted; no OpenAI model name; no reranker.
Version: Haystack 2.8 as pasted
Components: embedder, retriever, prompt_builder, generator
Index: UNKNOWN (do not invent harbor-docs-v3)
Banned: sk-, OPENAI_API_KEY value, llama-index, langfuse
Never: invent API keys, invent a model ID, invent an index name, invent a reranker
Format: ledger + version + yaml + refuse + gaps
Lang: English comments
Env: NONE (do not invent OPENAI_API_KEY)

Example Output

1. Ledger. Retriever InMemoryEmbeddingRetriever as pasted. top_k 4 as pasted. Generator LocalChatGenerator as pasted. OpenAI model NOT IN INPUTS. Reranker NOT IN INPUTS. Version Haystack 2.8 as pasted. Components: embedder, retriever, prompt_builder, generator. Index UNKNOWN. Env NONE. Lang English. Forbidden: sk-, OPENAI_API_KEY value, llama-index, langfuse, invented model ID, invented index, invented reranker.

2. Version. Haystack 2.8 as pasted. 2.9 APIs not used.

3. YAML sketch.
# Haystack 2.8 as pasted. INDEX UNKNOWN. Env NONE.
components:
  embedder:
    # embedder named in Components. Model ID NOT IN INPUTS.
    type: haystack.components.embedders.placeholder.Embedder
    init_parameters:
      model: NOT IN INPUTS
  retriever:
    type: haystack.components.retrievers.in_memory.InMemoryEmbeddingRetriever
    init_parameters:
      top_k: 4
      document_store: INDEX UNKNOWN
  prompt_builder:
    type: haystack.components.builders.prompt_builder.PromptBuilder
    init_parameters:
      template: NOT IN INPUTS
  generator:
    type: LocalChatGenerator
    init_parameters:
      # OpenAI model string NOT IN INPUTS
connections:
  - sender: embedder.embedding
    receiver: retriever.query_embedding
  - sender: retriever.documents
    receiver: prompt_builder.documents
  - sender: prompt_builder.prompt
    receiver: generator.prompt

4. Secrets. Env NONE. SECRET NOT IN INPUTS. No sk- line.

5. Refuse. LlamaIndex ServiceContext: refused. Langfuse secret: refused. LiteLLM model_list: refused. sk-abcd: refused.

6. Connections. embedder, retriever, prompt_builder, generator only. Ranker not added.

7. Never. No gpt-4o invent. No harbor-docs-v3. No reranker component.

8. Compliance. Banned hits none. Format ledger+version+yaml+refuse+gaps. Gaps: embedder model ID, document store name, prompt template, generator path, env var owner.

Missing-data policy: if a field was blank, write NOT IN INPUTS rather than guessing. Lock any tool version named in Inputs; if unnamed, write unknown. No invented testimonials, star ratings, or press logos. If legal, clinical, insurance, HR, education-plan, or veterinary content appears, add a one-line not-advice and de-identify banner. Quote banned-word hits and cut them. End with a gaps list of five bullets the user still owes you. Character and byte caps in the job are hard; print counts when relevant. Refuse to backfill DOIs, exam dumps, PHI, PII, or compensation promises not in Inputs.

Reviews (0)

Please login to leave a review.
Loading reviews...