Skip to main content

Add support for DSPy profiles

Project description

DSPy Profiles

PyPI version Tests Coverage License: MIT uv Python Version Code style: black Ruff

A companion tool for the DSPy framework to manage configuration profiles, inspired by the AWS CLI.

dspy-profiles allows you to define, switch between, and manage different DSPy configurations for various environments (e.g., development, staging, production) without cluttering your code.


The Problem

When working with DSPy, you often need to switch between different language models, retrieval models, and settings. Managing this directly in your code can be messy, error-prone, and insecure.

The Solution

dspy-profiles moves this configuration out of your code and into a simple profiles.toml file. It provides a powerful CLI and a clean Python API to manage and use these profiles seamlessly. The tool will automatically find your profiles.toml whether it's in your local project directory or in the global ~/.dspy/ folder.


Key Features

  • Declarative Profiles: Define all your environment settings in a clear, human-readable TOML file.
  • Powerful CLI: A rich command-line interface lets you manage your profiles without ever leaving the terminal.
  • Seamless Python API: Activate profiles in your Python code with an elegant and intuitive API.
  • Profile Inheritance: Create base profiles and extend them for different environments to avoid repetition.
  • Environment Precedence: A clear and predictable activation logic ensures the right profile is always used.
  • Validation & Testing: validate and test commands to ensure your profiles are correct and your models are reachable.

Installation

pip install dspy-profiles

Quickstart

  1. Initialize a default profile interactively:

    dspy-profiles init
    

    This will prompt you for your language model and optionally your API key and API base.

  2. Use it in your Python code:

    import dspy
    from dspy_profiles import profile
    
    with profile("default"):
        # Your DSPy code here, now using the settings from your 'default' profile.
        predictor = dspy.Predict("question -> answer")
        response = predictor(question="What is the capital of France?")
        print(response.answer)
    
  3. Run any script with a profile:

    dspy-profiles run --profile default -- python my_script.py
    

Full Documentation

For a complete guide, including advanced features and the full API and CLI reference, please visit the official documentation site.


Project Status & Roadmap

The project is under active development. All core features are implemented and stable.

  • [x] Phase 1: DX, Packaging & Documentation: Professional PyPI packaging, CI/CD, and a full documentation site.
  • [x] Phase 2: Core CLI & Env Var Enhancements: import, diff, run, and robust activation precedence.
  • [x] Phase 3: Advanced Profile Features: Profile composition (extends), inline overrides, and validate/test commands.
  • [x] Phase 4: Python API & Runtime Utilities: Programmatic shortcuts like lm() and runtime introspection with current_profile().
  • [x] Phase 5: Developer Experience Overhaul: A major refactor of the CLI, API, and documentation for clarity, stability, and ease of use.
  • [x] Phase 6: QoL & Advanced Workflows: An interactive init wizard, profile import/export, and async-friendly decorators.

See the PROJECT.md file for detailed specifications.

Contributing

Contributions are welcome! Please open an issue or submit a pull request.

Project details


Download files

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

Source Distribution

dspy_profiles-0.1.1.tar.gz (15.4 kB view details)

Uploaded Source

Built Distribution

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

dspy_profiles-0.1.1-py3-none-any.whl (23.2 kB view details)

Uploaded Python 3

File details

Details for the file dspy_profiles-0.1.1.tar.gz.

File metadata

  • Download URL: dspy_profiles-0.1.1.tar.gz
  • Upload date:
  • Size: 15.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dspy_profiles-0.1.1.tar.gz
Algorithm Hash digest
SHA256 fb2f2d73bad9722b90a055f7feccf506dd3ff0f0737587b4c7d24c06cdfae459
MD5 c6635851ce8ffd1e510b6abbf878e3c7
BLAKE2b-256 b7de6868b8632e5bb0febb2b4123a17fe094c070c24e46c8ba76ad887fdd0bec

See more details on using hashes here.

Provenance

The following attestation bundles were made for dspy_profiles-0.1.1.tar.gz:

Publisher: publish.yml on nielsgl/dspy-profiles

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

File details

Details for the file dspy_profiles-0.1.1-py3-none-any.whl.

File metadata

  • Download URL: dspy_profiles-0.1.1-py3-none-any.whl
  • Upload date:
  • Size: 23.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for dspy_profiles-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 e1cdf3f656417785f6792396e783659ce4d943ed1eb0355dc41d411aa96080de
MD5 fa9e5ca03e5c8232fdc5aef26f8dec35
BLAKE2b-256 941db514d47e7499c274ae6a555cf4c2b4dbff76fac2ff44550dc2e3df23bded

See more details on using hashes here.

Provenance

The following attestation bundles were made for dspy_profiles-0.1.1-py3-none-any.whl:

Publisher: publish.yml on nielsgl/dspy-profiles

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

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page