Skip to main content

coaxer

Label examples. Derive the prompt. Consume it as a string.

Full docs: https://thekevinscott.github.io/coaxer/ · ship-with-package source in docs/.

Motivation

Writing prompts by hand is slow, and the prose grows brittle as cases accumulate. Coaxer flips it: label examples of the behavior you want, derive the prompt from those labels — when it drifts, add more labels instead of rewriting.

Labels are the source of truth. The prompt is a build artifact.

Install

uv add coaxer        # Python
npm install coaxer   # TypeScript

Quick start

coax labels/repo-classification --out prompts/repo-classification
from coaxer import CoaxedPrompt

p = CoaxedPrompt("prompts/repo-classification")
filled = p(readme=new_readme, stars=1200)

The TypeScript version is in docs/guide/getting-started.md.

Getting Started

Label folder is one directory per record; record.json plus sibling files for large text or binary inputs. coax compiles the folder into a prompt artifact you load with CoaxedPrompt. Default optimizer is none (schema-derived, no network).

Full walkthrough: docs/guide/getting-started.md.

CoaxedPrompt

CoaxedPrompt(path, **bound) is a str subclass. str(p) is the raw template; p(**vars) renders it. Missing vars raise MissingVariableError. Bound defaults at construction; call-time vars override. p.fields lists the input variables the template expects.

For structured-output APIs, p.response_format is a Pydantic model derived from the compiled output schema.

Reference: docs/api/coaxed-prompt.md.

CLI

coax <labels-dir> --out <prompts-dir> [--optimizer {none,gepa}] [--output-name NAME]

Reference: docs/api/cli.md.

AgentLM

DSPy BaseLM backed by the Claude Agent SDK. **kwargs forward to ClaudeAgentOptions (tools, allowed_tools, max_turns, …).

from coaxer import AgentLM
lm = AgentLM(tools=[])

Reference: docs/api/agent-lm.md.

OpenAILM

DSPy BaseLM for any OpenAI-compatible chat endpoint (Ollama, vLLM, OpenAI, LM Studio, …).

from coaxer import OpenAILM
lm = OpenAILM(model="gpt-4o", base_url="https://api.openai.com/v1", api_key="sk-...")

Reference: docs/api/openai-lm.md.

Migrations

Downstream-consumer upgrade instructions for breaking changes live in MIGRATIONS.md (also published at docs/migrations.md). The full release log is in CHANGELOG.md.

Development

uv sync --extra dev
uv run just test-unit   # Unit tests
uv run just ci          # Full CI (lint + format + typecheck + tests)

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

coaxer-0.3.15.tar.gz (66.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

coaxer-0.3.15-py3-none-any.whl (52.8 kB view details)

Uploaded Python 3

File details

Details for the file coaxer-0.3.15.tar.gz.

File metadata

  • Download URL: coaxer-0.3.15.tar.gz
  • Upload date:
  • Size: 66.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for coaxer-0.3.15.tar.gz
Algorithm Hash digest
SHA256 baf1872a72d3b6b3d17978c9dc6131c3043144ab32074bd75a241eb2a3477f7e
MD5 812026eb55b0a571ff99deaa48cdfe16
BLAKE2b-256 b9d474c7730468a52d3889d8912cf40cdaed51a161207ee0fc3c8b46c405a0c4

See more details on using hashes here.

Provenance

The following attestation bundles were made for coaxer-0.3.15.tar.gz:

Publisher: release.yml on thekevinscott/coaxer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file coaxer-0.3.15-py3-none-any.whl.

File metadata

  • Download URL: coaxer-0.3.15-py3-none-any.whl
  • Upload date:
  • Size: 52.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for coaxer-0.3.15-py3-none-any.whl
Algorithm Hash digest
SHA256 6aaa8d9f2eb90165a78a41e42a0fbd5b28cb2f7d75b7a1a145d181ad8a7c9c89
MD5 9b5b1e7710d2e2e187998d8ab4825616
BLAKE2b-256 6106f8149d4b958a989e4a5632d63b3a213426cd7e0cf94a190e1ab9ffdb63fd

See more details on using hashes here.

Provenance

The following attestation bundles were made for coaxer-0.3.15-py3-none-any.whl:

Publisher: release.yml on thekevinscott/coaxer

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

0.3.15 This release

2 files

0.3.14

2 files

0.3.13

2 files

0.3.12

1 file

0.3.11

1 file

0.3.9

1 file

0.3.8

1 file

0.3.6

1 file

0.3.5

1 file

0.3.4

1 file

0.3.3

1 file

0.3.2

1 file

0.3.1

1 file

0.3.0

1 file

0.2.18

1 file

0.2.17

1 file

0.2.16

1 file

0.2.15

1 file

0.2.12

2 files

0.2.11

2 files

0.2.10

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page