SDialog: инструмент на Python для создания, симуляции и анализа диалогов на базе LLM
SDialog — открытый Python-инструмент для создания и анализа LLM-диалогов: персонная симуляция, оркестрация, метрики и механистическая интерпретация в единой схеме.
SDialog — это открытый Python-инструмент, который стандартизирует полный конвейер диалоговых систем на базе LLM — от описания персон и агентов до масштабной симуляции, оценки и механизмов интерпретации.
Единая схема Dialog и простой API
В основе SDialog лежит единая схема Dialog с возможностью импорта и экспорта в JSON. Библиотека предоставляет абстракции для персон, агентов, оркестраторов, генераторов и датасетов. Нескольких строк конфигурации через sdialog.config.llm достаточно, чтобы описать персоны, создать объекты Agent и вызвать генераторы, такие как DialogGenerator или PersonaDialogGenerator, чтобы синтезировать готовые для обучения или оценки разговоры.
Персоны и мультиагентная симуляция
Персоны являются ключевым элементом: они кодируют постоянные черты, цели и манеру речи, что позволяет моделировать ролевые взаимодействия — например, консультацию врача и пациента — или сценарные симуляции, где участники следуют заданным ограничениям и целям на протяжении многих реплик.
Оркестрация как конвейер
Оркестраторы располагаются между агентами и LLM и позволяют строить композиционные паттерны управления. Одно из простых выражений в SDialog — agent = agent | orchestrator, превращающее оркестрацию в конвейер. Компоненты вроде SimpleReflexOrchestrator анализируют каждый ход, внедряют политики, применяют ограничения или запускают инструменты по состоянию всего диалога. Более сложные рецепты совмещают постоянные инструкции и LLM-судей для мониторинга безопасности, ухода от темы или соответствия требованиям и корректируют последующие ответы.
Набор метрик и оценка
Модуль sdialog.evaluation включает метрики и компоненты-судьи, такие как LLMJudgeRealDialog, LinguisticFeatureScore, FrequencyEvaluator и MeanEvaluator. Оцениватели подключаются к DatasetComparator, который сравнивает эталонные и кандидатные наборы диалогов, считает метрики, агрегирует баллы и выводит таблицы или графики. Это позволяет сравнивать подсказки, бэкенды и стратегии оркестрации по объективным критериям.
Интерпретируемость и управление направлением поведения
Инструменты интерпретируемости регистрируют forward hooks в PyTorch на внутренних модулях (например model.layers.15.post_attention_layernorm) и записывают активации по токенам во время генерации. После прогона диалога можно индексировать буферы активаций, смотреть формы тензоров и искать системные инструкции с помощью методов вроде find_instructs. DirectionSteerer переводит найденные направления в управляющие сигналы, позволяя смещать поведение модели — например уменьшать проявления злости или усиливать желаемый стиль путем модификации активаций в определенных токенах.
Интеграции и развёртывание
Инструмент поддерживает разные LLM-бэкенды: OpenAI, Hugging Face, Ollama и AWS Bedrock через единый интерфейс конфигурации. Диалоги можно загружать из или экспортировать в Hugging Face datasets с помощью Dialog.from_huggingface. Модуль sdialog.server позволяет открыть агентов через OpenAI-совместимое REST API с помощью Server.serve, что упрощает интеграцию с интерфейсами вроде Open WebUI.
Аудиорендеринг и мультиформатное тестирование
Утилиты sdialog.audio предоставляют конвейер to_audio, который превращает реплики в речь, управляет паузами и может имитировать акустику помещения. Одна и та же структура Dialog пригодна для текстового анализа, обучения моделей и аудиотестирования речевых систем.
SDialog предлагает модульный и расширяемый фреймворк для симуляции с персонами, точной оркестрации, количественной оценки и механистической интерпретируемости на базе единой схемы Dialog. Ознакомьтесь с репозиторием и документацией для примеров и руководств.
Switch Language
Read this article in English