AutoSignature
Generate typed dspy.Signature classes with dspy.RLM.
Explore the Documentation »
Report Bug
Request Feature
Table of Contents
About
AutoSignature uses dspy.RLM to inspect a prompt or dataset and generate a
complete dspy.Signature subclass.
- Automatic signature design — Infers instructions, inputs, outputs, field descriptions, and types
- Dataset-aware generation — Profiles DataFrame columns, distributions, and representative rows
- Ready to use — Returns signatures compatible with
dspy.Predict,dspy.ChainOfThought, and other DSPy modules - Exportable — Renders generated signatures as Python source with
to_source()
Requires Python 3.12+, DSPy 3.2+, and Deno for the RLM sandbox.
Quick Start
Install
Install AutoSignature with uv (recommended):
uv add dspy-auto-signature
Or with pip:
pip install dspy-auto-signature
Basic Usage
import dspy
import dspy_auto_signature as das
das.configure(
lm=dspy.LM("openai/gpt-4o"),
sub_lm=dspy.LM("openai/gpt-4o-mini"),
)
signature = das.generate(
"Given an article, produce a concise summary and three key takeaways."
)
print(signature.to_source())
dspy.configure(lm=dspy.LM("openai/gpt-4o-mini"))
summarize = dspy.ChainOfThought(signature.to_signature())
result = summarize(article="...")
SDK Message Formats
AutoSignature accepts message arrays from popular LLM SDKs. Pass your existing conversation history directly — no conversion needed.
OpenAI SDK
import dspy
import dspy_auto_signature as das
das.configure(
lm=dspy.LM("openai/gpt-4o"),
sub_lm=dspy.LM("openai/gpt-4o-mini"),
)
messages = [
{"role": "system", "content": "You are a technical writer who produces clear documentation."},
{"role": "user", "content": "Write a README for a Python CLI tool that converts CSV to JSON."},
]
signature = das.generate(messages)
print(signature.to_source())
Anthropic SDK
messages = [
{"role": "user", "content": "Analyze the sentiment of customer reviews."},
{"role": "assistant", "content": "I'll classify each review as positive, negative, or neutral."},
]
signature = das.generate(messages)
Google Gemini SDK
contents = [
{"role": "user", "parts": [{"text": "Extract key entities from this legal contract."}]},
{"role": "model", "parts": [{"text": "I'll identify parties, dates, and obligations."}]},
]
signature = das.generate(contents)
LiteLLM / OpenAI-Compatible
Any SDK that produces OpenAI-style [{"role": "...", "content": "..."}] arrays
works out of the box — including LiteLLM, Azure OpenAI, Ollama, and vLLM.
See example_sdk.py for a complete runnable example.
DataFrame Example
Install with the pandas extra to get pandas:
uv add "dspy-auto-signature[pandas]"
Or with pip:
pip install "dspy-auto-signature[pandas]"
Datasets are profiled before generation so the RLM can use column names, types, distributions, and representative rows when designing the signature.
import dspy
import pandas as pd
import dspy_auto_signature as das
das.configure(
lm=dspy.LM("openai/gpt-4o"),
sub_lm=dspy.LM("openai/gpt-4o-mini"),
)
tickets = pd.DataFrame(
[
{"message": "Server is down", "urgency": "high"},
{"message": "Please update my profile", "urgency": "low"},
{"message": "Payment failed", "urgency": "high"},
]
)
signature = das.generate(
tickets,
task_hint="Classify support ticket urgency from the message",
)
print(signature.to_source())
API
generate(source, task_hint=None, *, input_hints=None, output_hints=None)
Generates a dspy.Signature subclass from prompt material or tabular data.
| Parameter | Type | Description |
|---|---|---|
source |
Any |
Prompt string, SDK message array (OpenAI, Anthropic, Google, LiteLLM), DataFrame, list of dictionaries, or list of dspy.Example objects |
task_hint |
str | None |
Optional task description, especially useful for identifying dataset targets |
input_hints |
dict[str, str] | None |
Input field descriptions to supplement or override generated descriptions |
output_hints |
dict[str, str] | None |
Output field descriptions to supplement or override generated descriptions |
Supported input formats:
- Raw strings (system prompts, task descriptions)
- OpenAI SDK message arrays:
[{"role": "system", "content": "..."}, {"role": "user", "content": "..."}] - Anthropic SDK message arrays:
[{"role": "user", "content": "..."}] - Google Gemini SDK contents:
[{"role": "user", "parts": [{"text": "..."}]}] - LiteLLM / Azure OpenAI / Ollama / vLLM message arrays
- pandas DataFrames, polars DataFrames / LazyFrames
list[dict],list[dspy.Example], singledspy.Example
configure(lm=None, dataset_lm=None, sub_lm=None)
Configures the models used during signature generation.
| Parameter | Type | Description |
|---|---|---|
lm |
dspy.LM | None |
Default RLM model. Falls back to the model configured through dspy.configure |
dataset_lm |
dspy.LM | None |
Optional RLM model override for dataset sources |
sub_lm |
dspy.LM | None |
Optional model used for recursive sub-queries |
Contributing
Quick workflow:
- Fork and branch:
git checkout -b feature/name - Make changes
- Commit and push
- Open a Pull Request
License
MIT (as declared in pyproject.toml).
Built by thememium
Metadata
Release files for dspy-auto-signature 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| dspy_auto_signature-0.1.4.tar.gz | 30.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| dspy_auto_signature-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 70.1 kB
Release files / dspy_auto_signature-0.1.4.tar.gz
| Download URL | dspy_auto_signature-0.1.4.tar.gz |
|---|---|
| Size | 30.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8efdc4cbe1134ed41df07c8d15d5c27749a174d7ab561d413ce9182cdfbbe141
|
|
BLAKE2b-256 checksum How to use checksums |
a43b705565b6d1df367981b9440dad2953a073d521aaa375a9fc9bd8fa199206
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|
Release files / dspy_auto_signature-0.1.4-py3-none-any.whl
| Download URL | dspy_auto_signature-0.1.4-py3-none-any.whl |
|---|---|
| Size | 39.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
6b745581f7d94d3e8f2383c00c2760acfb1e2229e2f977150b34f7b8f47ce8c7
|
|
BLAKE2b-256 checksum How to use checksums |
626f8e2faba03eba1fd0b33fd091cf0bd94d197304efd8157ad6d5133f1be5d9
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
uv/0.12.13 {"installer":{"name":"uv","version":"0.12.13","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
|