ChangeLog

All notable changes to SDialog will be documented here.


[0.4.6] 2026-03-12 πŸ§ οƒ

Added

  • sdialog.agents:

    • New @final_response_tool decorator to return tool output directly as the final agent response (bypassing post-tool LLM synthesis for non-empty outputs).

    • Example:

      from sdialog.agents import Agent, final_response_tool
      
      @final_response_tool
      def get_table(callsign: str) -> str:
          return "| Timestamp | Transcription |\n|---|---|\n| ... | ... |"
      
      agent = Agent(tools=[get_table])
      

Changed

  • sdialog.evaluation:

    • KDEDistanceEvaluator now supports multiple values per dialog.

    • Improved placeholder handling in STAR response generation.

    • Implemented Laplace smoothing in dialog log-likelihood computation.


[0.4.5] 2026-02-18 πŸŽ™οΈοƒ

Added

  • sdialog.audio:

    • Voice cloning support in voice databases.

    • New TTS classes: Qwen3TTS, Qwen3TTSVoiceClone, and BaseVoiceCloneTTS.

    • Persona-based dynamic voice generation and customizable voice descriptions.

    • Improved speaker name / role mapping for voice assignment.

Changed

  • sdialog.audio:

    • Dialog.to_audio() supports output path as positional argument.

    • Audio pipeline now supports more flexible voice assignment.

    • Qwen3-TTS voice cloning set as default dynamic voice creation path.

Fixed

  • sdialog.agents:

    • Restored orchestration behavior when agent is served.

  • sdialog.audio:

    • Fixed speaker-role mapping and case-sensitivity edge cases.

    • Fixed optional audio path handling in Dialog.to_audio().

    • Fixed label assignment and default keep_duplicate handling.

  • sdialog.evaluation:

    • Fixed division-by-zero / log(0) edge cases in divergence computations.

    • Added jitter handling for KL/CS divergence when variance is zero.

    • Fixed fallback behavior for unknown edges in flow score computation.


[0.4.3] 2025-11-30 πŸ“Šοƒ

Added

  • sdialog.evaluation:

    • New readability and conversational metrics.

    • New scoring classes for individual linguistic features.

    • Added Dialog.from_folder() to load dialogs from directories.

    • Added ToolSequenceValidator for validating tool usage order in dialogs.

Changed

  • sdialog.evaluation:

    • Enhanced plotting support with customizable titles and labels.

  • sdialog.interpretability:

    • Improved top-k visualization and steering defaults.

Fixed

  • sdialog.agents:

    • Improved tool invocation error handling.

  • sdialog:

    • Updated dialog prompt formatting.


[0.4.2] 2025-11-21 πŸ› οΈοƒ

Changed

  • sdialog.agents:

    • Improved progress bar behavior during dialog generation.

  • sdialog.audio:

    • Updated dependencies and dscaper integration behavior.

Documentation

  • Added clearer Kokoro TTS installation instructions.


[0.4.1] 2025-11-20 πŸ”§οƒ

Fixed

  • sdialog.audio:

    • Fixed dscaper timeline generation bug and test updates around deleted directories.

Documentation

  • Updated audio tutorials and README installation instructions (including sox/ffmpeg and setup guidance).

[0.4.0] 2025-10-30 πŸ”Šοƒ

Added

  • sdialog.audio: New audio generation module to transform text dialogs into audio conversations

    • Dialog.to_audio(): Convert any text dialog to audio with a single method call

    • Text-to-Speech (TTS): Support for multiple TTS engines including Kokoro and Hugging Face models

    • Voice databases: Automatic or manual voice assignment from Hugging Face, local storage, or on-the-fly generation based on persona attributes (age, gender, language)

    • Acoustic simulation: Realistic room acoustics simulation with ray tracing technology for spatial audio

    • Microphone simulation: Professional microphone impulse responses from brands like Shure, Sennheiser, and Sony

    • Room generation: Define and generate diverse room types with customizable properties (dimensions, wall materials, furniture placement)

    • Multiple formats: Export to WAV, MP3, or FLAC with custom sampling rates

    • Background/foreground effects: Add environmental sounds and acoustic variations

    • 7 comprehensive tutorials covering audio generation, acoustic simulation, rooms, voice databases, and impulse responses

  • sdialog.interpretability:

    • Support for inspecting layer and component inputs with Inspector(target="model.layers.15", inspect_input=True)

    • Support for inspecting and steering input tokens (tokens given as input, not only generated ones), e.g., inspector.input[i][j].act where i is turn index and j is input token index

  • sdialog.config:

    • Support for Anthropic backend (#100)

    • Support for Azure OpenAI backend (#100)

Fixed

  • sdialog.agents: Agent memory reset when no prompt system and no persona is given


[0.3.3] 2025-10-30 πŸš€οƒ

Added

  • sdialog.server:

    • New module to serve agents via an Ollama/OpenAI-compatible REST API (works with UIs like Open WebUI) (#92)

  • sdialog:

    • Dialog.from_huggingface() to load/download dialogues directly from Hugging Face datasets (#59)

Changed

  • sdialog.evaluation:

    • LLM judge methods now accept additional user-defined template arguments (e.g., like document in this example) (#86)

  • sdialog.agents:

    • Improved Agent initialization so agents can act as a proxy for external conversational systems (#90, fa1d8f3)

Fixed

  • sdialog.evaluation:

    • Corrected Flesch Reading Ease and Gunning Fog score calculations (d1d4260)


[0.3.0] 2025-10-03 βœ¨οƒ

Added

  • sdialog:

    • Context: new class class to explicitly model the common/shared context of conversations (#73)

    • Dialog: merge functionality - Added option to merge consecutive turns of the same speaker when loading a dialog (#77)

    • Dialog: built-in string support - Added support to built-in str functions for Dialog class (#83)

  • sdialog.agents: Added new sdialog.agents module and moved Agent class inside (#81)

    • Agent: thinking capabilities - Agents can now handle internal thinking processes (#95)

    • Agent: tools support - Added tools capabilities to Agents (e.g. RAG or any other function) (#84)

      • New tutorial for agents with tools and thoughts.

  • sdialog.generators:

    • ContextGenerator: new class added to explicitly model the common/shared context of conversations (#73)

    • Paraphraser: new class class to paraphrase dialogues (#76)

  • sdialog.evaluation:

    • LinguisticFeatureScore: new class added to compute Flesch reading ease, Gunning fog, Hesitation rate, and/or Mean turn length (#63)

  • sdialog.personas:

    • Customer and SupportAgent: new personas added for customer service dialogues (#85)

    • Persona: Added static method to get the list of all attributes in Persona class (#79)

Changed

  • sdialog: Improved metadata handling (#66)

  • sdialog.interpretability: Improved and simplified the way inspection targets are defined in interpretability submodule (#78)

  • sdialog.evaluation.base:

    • LLMJudgeYesNoOutput: Renamed attribute yes to positive (#86)

    • LLMJudgeScoreOutput: Renamed attribute feedback to reason (#86)

Fixed

  • sdialog.generators: Fixed potential bug in PersonaDialogGenerator class (#67)

Enhanced

  • sdialog.agents: Added base_model attribute to Agent to direclty access the LLM’s underlying model for mechanistic interpretability (#74)

  • sdialog.config: Added clear_cache() method to config (#75)

Documentation

  • API Documentation: Refactored/cleaned all components and added docstrings with examples (#82, #88)

  • Updated all tutorials to work with new code and added β€œOpen in Colab” badges

  • Completed API documentation for initial official release (#87)

  • Automatic generation of llm.txt from API documentation (24f6ee6)


[0.1.0] 2025-08-05 πŸŒ±οƒ

Added

  • Multi-backend support (Hugging Face, Ollama, OpenAI, AWS)

  • Enhanced persona generation (beyond initial PersonaDialogGenerator)

  • Interpretability module (sdialog.interpretability): inspectors, steerers, hooks, intruders

  • Evaluation module (sdialog.evaluation): metrics, LLM-as-a-judge scoring, evaluators, dataset comparators

Changed

  • Standardized / improved dialog format

Notes

  • 500 commits since 0.0.2 (post-JSALT 2025 consolidation)

Pending

  • Audio module (sdialog.audio) integration

  • Documentation updates


[0.0.2] 2025-06-03 πŸ”§οƒ

Added

  • language attribute to Persona class

  • PersonaDialogGenerator to generators module to support persona-based dialogue generatin with single LLM:

    from sdialog.generators import PersonaDialogGenerator
    
    dialog_generator = PersonaDialogGenerator(
        model=MODEL_NAME,
        persona_a=bob_persona,
        persona_b=alice_persona,
    )
    
    dialog_generator.generate().print()
    

Fixed

  • Python 2 and 3 compatibility problem with scikit-learn (using version 0.20.1 from now on)

  • PyPi: setup.py: long_description_content_type set to 'text/markdown'


[0.0.1] 2025-05-22 πŸŽ‰οƒ

(initial release)