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

generate-synthetic-data — скилл для Claude Code: синтетические данные

Скилл собирает разнообразные тестовые запросы для оценки LLM-пайплайна, когда реальных данных мало.

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

Что делает generate-synthetic-data

Скилл ведёт вас по шагам: сначала определяете оси вариации (размерности), потом вместе с ним черновите 20 кортежей, затем LLM генерирует ещё, каждый кортеж превращается в естественный запрос, а слабые отсеиваются. Готовые запросы прогоняются через весь пайплайн, и вы сохраняете полные трейсы: вход, промежуточные шаги, вызовы инструментов, найденные документы, финальный ответ.

Размерности нужно выбирать там, где пайплайн скорее сломается, а не для произвольного разнообразия. Поэтому перед генерацией скилл просит разобраться с зонами риска: расспросить о проблемных местах, посмотреть отзывы пользователей или построить гипотезы по имеющимся трейсам. Если реальные запросы уже есть, скилл советует стратифицированную выборку вместо случайной — по меткам или кластерам эмбеддингов.

Есть и границы применимости. Когда у вас уже набрано 100+ репрезентативных реальных трейсов, синтетика не нужна — берите стратифицированную выборку. Для юридических документов, медицинских записей и языков с малым числом ресурсов генерация даёт нереалистичные образцы. И если никто в команде не может оценить, правдоподобен ли трейс, лучше работать с реальными данными.

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

  • создать стартовый набор тестовых запросов для пайплайна
  • закрыть пробелы по редким типам запросов
  • проверить гипотезы о конкретных сценариях отказа
  • разложить тесты по осям вариации вместо случайного набора
  • отфильтровать нереалистичные сгенерированные запросы

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

  • Помоги определить размерности для синтетических тестов нашего пайплайна
  • Сгенерируй 10 кортежей по этим размерностям и преврати каждый в реалистичный запрос
  • Проверь сгенерированные запросы на реализм и отбрось слабые

Как установить generate-synthetic-data

1Через Skills CLI (Vercel)

npx skills add ai-evals-course/evals-skills --skill generate-synthetic-data -a claude-code

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

~/.claude/skills/generate-synthetic-data/SKILL.md

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

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

Вопросы о generate-synthetic-data

Как установить generate-synthetic-data в Claude?

Выполните npx skills add ai-evals-course/evals-skills --skill generate-synthetic-data -a claude-code. Скилл появится в ~/.claude/skills/generate-synthetic-data/SKILL.md.

Что делает generate-synthetic-data?

Создаёт разнообразные синтетические тестовые входы для оценки LLM-пайплайна через генерацию кортежей по размерностям. Помогает, когда реальных данных мало или нужно проверить гипотезы об отказах.

Когда синтетические данные не подходят?

Если уже есть 100+ репрезентативных реальных трейсов, для юридических и медицинских документов, для языков с малым числом ресурсов, а также когда никто не может оценить реалистичность трейса.

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

SKILL.md · Apache-2.0
---
name: generate-synthetic-data
description: >
  Create diverse synthetic test inputs for LLM pipeline evaluation using
  dimension-based tuple generation. Use when bootstrapping an eval dataset,
  when real user data is sparse, or when stress-testing specific failure
  hypotheses. Do NOT use when you already have 100+ representative real
  traces (use stratified sampling instead), or when the task is collecting
  production logs.
---

# Generate Synthetic Data

Generate diverse, realistic test inputs that cover the failure space of an LLM pipeline.

## Prerequisites

Before generating synthetic data, identify where the pipeline is likely to fail. Ask the user about known failure-prone areas, review existing user feedback, or form hypotheses from available traces. Dimensions (Step 1) must target anticipated failures, not arbitrary variation.

## Core Process

### Step 1: Define Dimensions

Dimensions are axes of variation specific to your application. Choose dimensions based on where you expect failures.

```
Dimension 1: [Name] — [What it captures]
  Values: [value_a, value_b, value_c, ...]

Dimension 2: [Name] — [What it captures]
  Values: [value_a, value_b, value_c, ...]

Dimension 3: [Name] — [What it captures]
  Values: [value_a, value_b, value_c, ...]
```

Example for a real estate assistant:

```
Feature: what task the user wants
  Values: [property search, scheduling, email drafting]

Client Persona: who the user serves
  Values: [first-time buyer, investor, luxury buyer]

Scenario Type: query clarity
  Values: [well-specified, ambiguous, out-of-scope]
```

Start with 3 dimensions. Add more only if initial traces reveal failure patterns along new axes.

### Step 2: Draft 20 Tuples with the User

A tuple is one combination of dimension values defining a specific test case. Present 20 draft tuples to the user and iterate until they confirm the tuples reflect realistic scenarios. The user's domain knowledge is essential here — they know which combinations actually occur and which are unrealistic.

```
(Feature: Property Search, Persona: Investor, Scenario: Ambiguous)
(Feature: Scheduling, Persona: First-time Buyer, Scenario: Well-specified)
(Feature: Email Drafting, Persona: Luxury Buyer, Scenario: Out-of-scope)
```

### Step 3: Generate More Tuples with an LLM

```
Generate 10 random combinations of ({dim1}, {dim2}, {dim3})
for a {your application description}.

The dimensions are:
{dim1}: {description}. Possible values: {values}
{dim2}: {description}. Possible values: {values}
{dim3}: {description}. Possible values: {values}

Output each tuple in the format: ({dim1}, {dim2}, {dim3})
Avoid duplicates. Vary values across dimensions.
```

### Step 4: Convert Each Tuple to a Natural Language Query

Use a separate prompt for this step. Single-step generation (tuples + queries together) produces repetitive phrasing.

```
We are generating synthetic user queries for a {your application}.
{Brief description of what it does.}

Given:
{dim1}: {value}
{dim2}: {value}
{dim3}: {value}

Write a realistic query that a user might enter. The query should
reflect the specified persona and scenario characteristics.

Example: "{one of your hand-written examples}"

Now generate a new query.
```

### Step 5: Filter for Quality

Review generated queries. Discard and regenerate when:
- Phrasing is awkward or unrealistic
- Content doesn't match the tuple's intent
- Queries are too similar to each other

Optional: use an LLM to rate realism on a 1-5 scale, discard below 3.

### Step 6: Run Queries Through the Pipeline

Execute all queries through the full LLM pipeline. Capture complete traces: input, all intermediate steps, tool calls, retrieved docs, final output.

**Target: ~100 high-quality, diverse traces.** This is a rough heuristic for reaching saturation (where new traces stop revealing new failure categories). The number depends on system complexity.

## Sampling Real User Data

When you have real queries available, don't sample randomly. Use stratified sampling:

1. **Identify high-variance dimensions** — read through queries and find ways they differ (length, topic, complexity, presence of constraints).
2. **Assign labels** — for small sets, with the user; for large sets, use K-means clustering on query embeddings.
3. **Sample from each group** — ensures coverage across query types, not just the most common ones.

When both real and synthetic data are available, use synthetic data to fill gaps in underrepresented query types.

## Anti-Patterns

- **Unstructured generation.** Prompting "give me test queries" without the dimension/tuple structure produces generic, repetitive, happy-path examples.
- **Single-step generation.** Generating tuples and queries in one prompt produces less diverse results than the two-step separation.
- **Arbitrary dimensions.** Dimensions that don't target failure-prone regions waste test budget.
- **Skipping user review of tuples.** Without the user validating tuples first, you can't judge whether LLM-generated tuples are realistic.
- **Synthetic data when no one can judge realism.** If no one can judge whether a synthetic trace is realistic, use real data instead.
- **Synthetic data for complex domain-specific content** (legal filings, medical records) where LLMs miss structural nuance.
- **Synthetic data for low-resource languages or dialects** where LLM-generated samples are unrealistic.

© ai-evals-course · Apache-2.0 · ai-evals-course/evals-skills

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

Всё по теме «ИИ и ML» →
ai-system-testing kindlmann Скилл для проверки ИИ-фич в продукте: регрессии промптов, оценка качества ответов, галлюцинации, RAG и инъекции. CX Codex +1 1 100установок nv-generate-mr NVIDIA MedTech Team Генерирует синтетические 3D-томограммы тела (MRI) через модель NV-Generate-CTMR rflow-mr. Пригодится для синтеза медицинских объёмов T1 без разметки. CX Codex +1 1 800установок nv-generate-mr-brain NVIDIA MedTech Team Скилл запускает генерацию синтетических 3D-томограмм мозга (T1, T2, FLAIR, SWI, MRA) через модель NV-Generate-CTMR. Пригодится для подготовки тестовых объёмов NIfTI без реальных снимков. CX Codex +1 1 800установок deepeval Confident AI Скилл настраивает тестирование AI-агентов и RAG через DeepEval. Помогает собирать тестовые наборы и запускать проверки через pytest. CX Codex +1 2 800установок checkpoint-promotion Seth Hobson Проверяет обученный чекпойнт перед выпуском: ищет утечки, дрейф возможностей, забывание и провал в сравнении с базовой моделью. CX Codex 2 600установок mandela LilMGenius Проверяет бенчмарки, A/B-тесты и метрики на скрытые утечки данных. Находит места, где модель и оценщик подтверждают выдуманный результат. CX Codex +1 1 300установок

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

write-judge-prompt Помогает собрать бинарный Pass/Fail оценщик для одного субъективного сбоя: тона, верности ответа, релевантности. Пригодится, когда кодом такое не проверить. CX Codex +1 1 100установок validate-evaluator Скилл проверяет, совпадает ли вердикт LLM-судьи с оценками эксперта, и считает TPR/TNR на отложенной выборке. CX Codex +1 1 100установок eval-audit Скилл находит слабые места в пайплайнах оценки LLM: невалидированных судей, шкалы Лайкерта и утечки данных. Пригодится при ревизии готовых эвалов или настройке с нуля. CX Codex +1 1 000установок error-discovery Скилл для интерактивного разбора датасета с выводами LLM: строит UI для просмотра, отбирает разные примеры и помогает собрать типы сбоев. CX Codex +1 1 000установок build-review-interface Создаёт браузерный интерфейс для разметки трейсов LLM с сохранением в JSON, CSV или SQLite. Пригодится при сборе человеческой обратной связи и оценке моделей. CX Codex +1 970установок evaluate-rag Помогает раздельно оценить поиск и генерацию в RAG, подобрать метрики и проверить разбиение документов на чанки. CX Codex +1 970установок evals-start Направляет запрос по оценке ИИ-системы в нужный специализированный скилл. Нужен, когда неясно, с чего начать или какой сценарий выбрать. CX Codex +1 776установок write-code-eval Скилл помогает написать код-эвалуатор для известного режима отказа: одна проверка на правило, как юнит-тест для трейса. CX Codex +1 347установок

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

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