К основному содержанию
скилл CX Codex

dspy-haystack-integration — скилл для Claude Code: обзор

Автоматизирует подбор промптов для пайплайнов Haystack с помощью DSPy. Помогает настроить метрики качества и перенести оптимизированный шаблон в генератор.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add OmidZamani/dspy-skills --skill dspy-haystack-integration -a claude-code
Открыть на GitHub

Что делает dspy-haystack-integration

Скилл связывает компоненты пайплайна Haystack с алгоритмами оптимизации DSPy. Вместо ручной правки шаблонов генератора он предлагает обернуть ретривер Haystack в модуль dspy.Module и прогнать пайплайн через BootstrapFewShot на обучающей выборке trainset.

Оценка результатов строится на кастомных функциях. В них можно объединять семантическое сходство через SASEvaluator из Haystack и штрафы за избыточную длину ответа. В спецификации заявлена совместимость с dspy версии 3.2.1.

Переносить скомпилированные демонстрации DSPy обратно в шаблоны PromptBuilder приходится вручную. Из-за различий в синтаксисе шаблонов сложные пайплайны потребуют кастомной адаптации кода.

Какие задачи решает

  • Обернуть ретривер Haystack в модуль dspy.Module для RAG
  • Оптимизировать промпт генератора через BootstrapFewShot
  • Собрать составную метрику качества ответов с SASEvaluator
  • Перенести скомпилированные примеры DSPy в шаблон PromptBuilder

Примеры запросов агенту

  • Оберни ретривер Haystack в модуль DSPy и оптимизируй промпт через BootstrapFewShot.
  • Напиши метрику для DSPy, объединяющую SASEvaluator из Haystack и штраф за длину ответа.
  • Перенеси оптимизированный промпт из модуля DSPy в шаблон PromptBuilder для Haystack.

Как установить dspy-haystack-integration

1Через Skills CLI (Vercel)

npx skills add OmidZamani/dspy-skills --skill dspy-haystack-integration -a claude-code

2Вручную: положить файлы

~/.claude/skills/dspy-haystack-integration/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/dspy-haystack-integration/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о dspy-haystack-integration

Как установить dspy-haystack-integration в Claude Code?

Выполните команду npx skills add OmidZamani/dspy-skills --skill dspy-haystack-integration -a claude-code. Файл навыка будет сохранён по пути ~/.claude/skills/dspy-haystack-integration/SKILL.md.

Что делает скилл dspy-haystack-integration?

Он предоставляет готовые шаблоны кода и шаги для автоматической оптимизации промптов в Haystack с помощью DSPy. На выходе получается готовый промпт с подобранными примерами.

С какой версией DSPy совместим этот скилл?

В спецификации скилла зафиксирована совместимость с DSPy 3.2.1.

Исходный текст

SKILL.md · MIT
---
name: dspy-haystack-integration
version: "1.0.0"
dspy-compatibility: "3.2.1"
tags: ["retrieval", "optimizer"]
requires-extras: []
description: Use for integrating DSPy with Haystack, optimizing Haystack prompts, improving retrieval pipelines, and extracting DSPy prompts.
allowed-tools:
  - Read
  - Write
  - Glob
  - Grep
---

# DSPy + Haystack Integration

## Goal

Use DSPy's optimization capabilities to automatically improve prompts in Haystack pipelines.

## When to Use

- You have existing Haystack pipelines
- Manual prompt tuning is tedious
- Need data-driven prompt optimization
- Want to combine Haystack components with DSPy optimization

## Inputs

| Input | Type | Description |
|-------|------|-------------|
| `haystack_pipeline` | `Pipeline` | Existing Haystack pipeline |
| `trainset` | `list[dspy.Example]` | Training examples |
| `metric` | `callable` | Evaluation function |

## Outputs

| Output | Type | Description |
|--------|------|-------------|
| `optimized_prompt` | `str` | DSPy-optimized prompt |
| `optimized_pipeline` | `Pipeline` | Updated Haystack pipeline |

## Workflow

### Phase 1: Build Initial Haystack Pipeline

```python
from haystack import Pipeline
from haystack.components.generators import OpenAIGenerator
from haystack.components.builders import PromptBuilder
from haystack.components.retrievers.in_memory import InMemoryBM25Retriever
from haystack.document_stores.in_memory import InMemoryDocumentStore

# Setup document store
doc_store = InMemoryDocumentStore()
doc_store.write_documents(documents)

# Initial generic prompt
initial_prompt = """
Context: {{context}}
Question: {{question}}
Answer:
"""

# Build pipeline
pipeline = Pipeline()
pipeline.add_component("retriever", InMemoryBM25Retriever(document_store=doc_store))
pipeline.add_component("prompt_builder", PromptBuilder(template=initial_prompt))
pipeline.add_component("generator", OpenAIGenerator(model="gpt-4o-mini"))

pipeline.connect("retriever", "prompt_builder.context")
pipeline.connect("prompt_builder", "generator")
```

### Phase 2: Create DSPy RAG Module

```python
import dspy

class HaystackRAG(dspy.Module):
    """DSPy module wrapping Haystack retriever."""
    
    def __init__(self, retriever, k=3):
        super().__init__()
        self.retriever = retriever
        self.k = k
        self.generate = dspy.ChainOfThought("context, question -> answer")
    
    def forward(self, question):
        # Use Haystack retriever
        results = self.retriever.run(query=question, top_k=self.k)
        context = [doc.content for doc in results['documents']]
        
        # Use DSPy for generation
        pred = self.generate(context=context, question=question)
        return dspy.Prediction(context=context, answer=pred.answer)
```

### Phase 3: Define Custom Metric

```python
from haystack.components.evaluators import SASEvaluator

# Haystack semantic evaluator
sas_evaluator = SASEvaluator(model="sentence-transformers/all-MiniLM-L6-v2")

def mixed_metric(example, pred, trace=None):
    """Combine semantic accuracy with conciseness."""
    
    # Semantic similarity (Haystack SAS)
    sas_result = sas_evaluator.run(
        ground_truth_answers=[example.answer],
        predicted_answers=[pred.answer]
    )
    semantic_score = sas_result['score']
    
    # Conciseness penalty
    word_count = len(pred.answer.split())
    conciseness = 1.0 if word_count <= 20 else max(0, 1 - (word_count - 20) / 50)
    
    return 0.7 * semantic_score + 0.3 * conciseness
```

### Phase 4: Optimize with DSPy

```python
from dspy.teleprompt import BootstrapFewShot

lm = dspy.LM("openai/gpt-4o-mini")
dspy.configure(lm=lm)

# Create DSPy module with Haystack retriever
rag_module = HaystackRAG(retriever=pipeline.get_component("retriever"))

# Optimize
optimizer = BootstrapFewShot(
    metric=mixed_metric,
    max_bootstrapped_demos=4,
    max_labeled_demos=4
)

compiled = optimizer.compile(rag_module, trainset=trainset)
```

### Phase 5: Extract and Apply Optimized Prompt

After optimization, extract the optimized prompt and apply it to your Haystack pipeline.

See [Prompt Extraction Guide](references/prompt-extraction.md) for detailed steps on:
- Extracting prompts from compiled DSPy modules
- Mapping DSPy demos to Haystack templates
- Building optimized Haystack pipelines

## Production Example

For a complete production-ready implementation, see [HaystackDSPyOptimizer](examples/haystack-dspy-optimizer.py).

This class provides:
- Wrapper for Haystack retrievers in DSPy modules
- Automatic optimization with BootstrapFewShot
- Prompt extraction and Haystack pipeline rebuilding
- Complete usage example with document store setup

## Best Practices

1. **Match retrievers** - Use same retriever in DSPy module as Haystack pipeline
2. **Custom metrics** - Combine Haystack evaluators with DSPy optimization
3. **Prompt extraction** - Carefully map DSPy demos to Haystack template format
4. **Test both** - Validate DSPy module AND final Haystack pipeline

## Limitations

- Prompt template conversion can be tricky
- Some Haystack features don't map directly to DSPy
- Requires maintaining two codebases initially
- Complex pipelines may need custom integration

## Official Documentation

- **DSPy Documentation**: https://dspy.ai/
- **DSPy GitHub**: https://github.com/stanfordnlp/dspy
- **Haystack Documentation**: https://docs.haystack.deepset.ai/

© OmidZamani · MIT · OmidZamani/dspy-skills

Похожие скиллы

Все скиллы по теме «ИИ и ML» →
skill-creator официальный anthropics Помогает создать новый скилл, доработать существующий и проверить результат через тестовые промпты и оценки. 414 180установок writing-for-agents Matt Pocock Помогает писать скиллы и документы с инструкциями для агентов. Пригодится при правках AGENTS.md, CLAUDE.md и связанных справочных файлов. 466 719установок media-use heygen-com Находит и генерирует ассеты для видео в HyperFrames — музыку, дикторский голос, аватары и эффекты. Сохраняет всё локально в assets. CX Codex +1 1 100 000установок mcp-builder официальный anthropics Скилл проводит через создание MCP-сервера на TypeScript или Python: от изучения протокола до тестов и оценки качества. 130 949установок subagent-driven-development Jesse Vincent Скилл выполняет план через отдельных субагентов для каждой задачи и проверяет результат после каждого шага. Подходит для независимых задач в одной сессии. CX Codex 237 746установок orchestration stablyai Координирует воркеров Orca через DAG задач, циклы супервизора и цепочки сообщений. Пригодится для распределения сложной работы между агентами. CX Codex +1 350 300установок

Из того же набора23

dspy-optimizer-selection Помогает выбрать оптимизатор DSPy под данные и бюджет: от LabeledFewShot до GEPA и BetterTogether. Пригодится, когда неясно, с чего начать компиляцию программы. CX Codex +1 ★ 124звёзд репо dspy-optimize-anything Настраивает эволюционную оптимизацию текстовых артефактов через библиотеку GEPA. Подходит для улучшения кода, промптов, архитектур агентов и SVG с опорой на диагностику. CX Codex +1 ★ 124звёзд репо dspy-miprov2-optimizer Скилл помогает оптимизировать программы DSPy с помощью MIPROv2: подбирать инструкции и few-shot-примеры через байесовскую оптимизацию. Нужен для настройки по обучающим данным. CX Codex +1 ★ 124звёзд репо dspy-mcp-tool-integration Скилл показывает, как подключить MCP-сервер к DSPy: конвертировать его инструменты в dspy.Tool и вызывать их из async-агента. CX Codex +1 ★ 124звёзд репо dspy-gepa-reflective Скилл помогает оптимизировать ReAct-агентов в DSPy по текстовой обратной связи и полным траекториям выполнения. Пригодится для многошаговых задач с инструментами. CX Codex +1 ★ 124звёзд репо dspy-finetune-bootstrap Дистиллирует работающую DSPy-программу в веса меньшей модели через BootstrapFinetune, чтобы снизить стоимость инференса и ускорить ответы. CX Codex +1 ★ 124звёзд репо dspy-evaluation-suite Скилл настраивает систематическую оценку программ DSPy на выборке примеров с замером метрик точности и параллельным запуском тестов. CX Codex +1 ★ 124звёзд репо dspy-embedding-retrieval Скилл настраивает семантический поиск по текстовому корпусу через DSPy, эмбеддинги и FAISS. Нужен для retrieval и RAG. CX Codex +1 ★ 124звёзд репо

Спонсоры проекта

Компании, которые помогают держать аналитику открытой