Skip to content

Version History

This document outlines the major versions of SteadyText and the key features introduced in each.

Latest Version: 2.3.0 - Structured Generation

Version Key Features Default Generation Model Default Embedding Model Python Versions
2.3.x - Structured Generation: Added support for JSON, Regex, and Choice-constrained generation via outlines.
- New API parameters: schema, regex, choices added to generate().
- New convenience functions: generate_json(), generate_regex(), generate_choice().
ggml-org/gemma-3n-E2B-it-GGUF (gemma-3n-E2B-it-Q8_0.gguf) Qwen/Qwen3-Embedding-0.6B-GGUF (Qwen3-Embedding-0.6B-Q8_0.gguf) >=3.10, <3.14
2.1.x - Custom Seeds: Added seed parameter to all generation and embedding functions.
- PostgreSQL Extension: Released pg_steadytext extension.
- Enhanced Reproducibility: Full control over deterministic generation.
ggml-org/gemma-3n-E2B-it-GGUF (gemma-3n-E2B-it-Q8_0.gguf) Qwen/Qwen3-Embedding-0.6B-GGUF (Qwen3-Embedding-0.6B-Q8_0.gguf) >=3.10, <3.14
2.0.x - Daemon Mode: Persistent model serving with ZeroMQ.
- Gemma-3n Models: Switched to gemma-3n for generation.
- Thinking Mode Deprecated: Removed thinking mode.
ggml-org/gemma-3n-E2B-it-GGUF (gemma-3n-E2B-it-Q8_0.gguf) Qwen/Qwen3-Embedding-0.6B-GGUF (Qwen3-Embedding-0.6B-Q8_0.gguf) >=3.10, <3.14
1.x - Model Switching: Added support for switching models via environment variables and a model registry.
- Qwen3 Models: Switched to qwen3-1.7b for generation.
- Indexing: Added support for FAISS indexing.
Qwen/Qwen3-1.7B-GGUF (Qwen3-1.7B-Q8_0.gguf) Qwen/Qwen3-Embedding-0.6B-GGUF (Qwen3-Embedding-0.6B-Q8_0.gguf) >=3.10, <3.14
0.x - Initial Release: Deterministic text generation and embedding. Qwen/Qwen1.5-0.5B-Chat-GGUF (qwen1_5-0_5b-chat-q4_k_m.gguf) Qwen/Qwen1.5-0.5B-Chat-GGUF (qwen1_5-0_5b-chat-q8_0.gguf) >=3.10

Detailed Release Notes

Version 2.3.0 - Structured Generation

Release Date: July 2025

✨ Structured Generation

Major Feature: Introduced structured generation capabilities powered by the Outlines library.

  • JSON Generation: Generate JSON that conforms to a JSON schema or a Pydantic model.
  • steadytext.generate(prompt, schema=MyPydanticModel)
  • steadytext.generate_json(prompt, schema={"type": "object", ...})
  • Regex-Constrained Generation: Force output to match a regular expression.
  • steadytext.generate(prompt, regex=r"\d{3}-\d{3}-\d{4}")
  • Multiple Choice: Force model to choose from a list of options.
  • steadytext.generate(prompt, choices=["A", "B", "C"])

Use Cases: - Reliable data extraction - Building robust function-calling systems - Creating predictable application logic - Generating structured data for databases

Version 2.1.0+ - Custom Seeds & PostgreSQL Extension

Release Date: June 2025

🎯 Custom Seed Support

Major Enhancement: Added comprehensive custom seed support across all SteadyText APIs.

  • Python API: All functions now accept optional seed: int = DEFAULT_SEED parameter
  • steadytext.generate(prompt, seed=123)
  • steadytext.generate_iter(prompt, seed=456)
  • steadytext.embed(text, seed=789)

  • CLI Support: Added --seed flag to all commands

  • st generate "prompt" --seed 123
  • st embed "text" --seed 456
  • st vector similarity "text1" "text2" --seed 789

  • Daemon Integration: Seeds are properly passed through daemon protocol

  • Fallback Behavior: Deterministic fallbacks now respect custom seeds
  • Cache Keys: Seeds are included in cache keys to prevent collisions

Use Cases: - Reproducible Research: Document and reproduce exact results - A/B Testing: Generate controlled variations of content - Experimental Design: Systematic exploration of model behavior - Content Variations: Create different versions while maintaining quality

🐘 PostgreSQL Extension (pg_steadytext)

New Release: Complete PostgreSQL extension for SteadyText integration.

Core Features: - SQL Functions: Native PostgreSQL functions for text generation and embeddings - steadytext_generate(prompt, max_tokens, use_cache, seed) - steadytext_embed(text, use_cache, seed) - steadytext_daemon_start(), steadytext_daemon_status(), steadytext_daemon_stop()

  • Vector Integration: Full compatibility with pgvector extension
  • Built-in Caching: PostgreSQL-based frecency cache with eviction
  • Daemon Support: Integrates with SteadyText's ZeroMQ daemon for performance
  • Configuration Management: SQL-based configuration with steadytext_config table

Installation:

# Install Python dependencies
pip3 install steadytext>=2.1.0

# Build and install extension
git clone https://github.com/julep-ai/steadytext.git
cd steadytext/pg_steadytext
make && sudo make install

# Enable in PostgreSQL
psql -c "CREATE EXTENSION pg_steadytext CASCADE;"

Docker Support:

# Standard build
docker build -t pg_steadytext .

# With fallback model for compatibility
docker build --build-arg STEADYTEXT_USE_FALLBACK_MODEL=true -t pg_steadytext .

🔧 Technical Improvements

  • Validation: Added validate_seed() function for input validation
  • Environment Setup: Enhanced set_deterministic_environment() with custom seeds
  • Error Handling: Improved error messages and fallback behavior
  • Documentation: Comprehensive documentation and examples

📖 Documentation Updates

  • API Documentation: Updated all function signatures with seed parameters
  • CLI Reference: Added --seed flag documentation for all commands
  • Examples: New comprehensive examples for custom seed usage
  • PostgreSQL Guide: Complete integration guide for pg_steadytext
  • Migration Guide: Instructions for upgrading from previous versions

🔄 Breaking Changes

None - Version 2.1.0+ is fully backward compatible with 2.0.x. All existing code continues to work unchanged, with new seed parameters being optional.

🐛 Bug Fixes

  • Fixed cache key generation to include seed for proper isolation
  • Improved daemon protocol to handle seed parameters correctly
  • Enhanced fallback behavior to be deterministic with custom seeds
  • Resolved edge cases in streaming generation with custom seeds

📋 Requirements

  • Python: 3.10+ (unchanged)
  • PostgreSQL: 14+ (for pg_steadytext extension)
  • Dependencies: All existing dependencies remain compatible