# `GEPA.Seed`
[🔗](https://github.com/nshkrdotcom/gepa_ex/blob/v0.3.0/lib/gepa/seed.ex#L1)

Helpers for upstream-compatible LLM seed candidate generation.

This mirrors the Python `seed_candidate=None` path: when the user gives an
objective but no initial candidate, a reflection LM is asked to produce a
starting artifact.  The generated text is extracted from the first fenced
block when present and stored under a caller-supplied candidate key.

# `build_prompt`

```elixir
@spec build_prompt(keyword() | map()) :: String.t()
```

Build the seed-generation prompt sent to the reflection LM.

# `extract_fenced_text`

```elixir
@spec extract_fenced_text(term()) :: String.t()
```

Extract content from a fenced code block, preserving raw text fallback.

# `generate`

```elixir
@spec generate(term(), keyword() | map()) :: {:ok, map()} | {:error, term()}
```

Ask an LM to generate a seed candidate map.

---

*Consult [api-reference.md](api-reference.md) for complete listing*
