Массив сообщений легко получить и неприятно читать; со стенограммой всё наоборот. Переход между ними случается постоянно — вставить журнал в отчёт об ошибке, вытащить удачный обмен как тестовые данные, — и именно при ручном переходе теряется самое интересное. Содержимое не всегда строка: вызовы инструментов, изображения, документы и блоки рассуждения — это блоки содержимого, и уплощение в текст выбрасывает их бесследно. Здесь они показываются в скобках и подсчитываются, чтобы было видно, что уплощённый журнал упустил, а при необходимости стенограмма читается обратно в JSON.
Возможности
Оба направления: из сообщений в стенограмму и обратно
Вызовы инструментов, изображения и документы показываются, а не выбрасываются
Считает нетекстовые блоки, которые плоская стенограмма потеряла бы
Принимает голый массив или объект с ключом messages, conversation или history
Три стиля стенограммы — от Markdown до простого текста
Системные сообщения по желанию
Читает и «Пользователь:», и «**Пользователь**» как начало хода
Счётчики сообщений по ролям
Как использовать Конвертер стенограмм
Вставьте JSON сообщений
Выберите стиль стенограммы
Решите, оставлять ли системное сообщение и вызовы инструментов
Скопируйте стенограмму — или поменяйте направление и вернитесь к JSON
Пример
Ввод
[{"type": "tool_use", "name": "lookup_order"}]
Результат
[tool_use: lookup_order]
Плоская стенограмма не показала бы здесь вообще ничего.
Частые ошибки и устранение неполадок
В стенограмме не хватает части сообщения. — Эта часть не была текстом. Включите вызовы инструментов, чтобы увидеть нетекстовые блоки; в сводке они учтены в любом случае.
Массив сообщений не найден. — Подойдёт голый массив, а также объект с ключом messages, conversation, history, turns или chat. Всё прочее требует сначала извлечь массив.
При обратном чтении теряются роли. — Ходы распознаются по строкам вроде «Пользователь:» или «**Ассистент**». В стенограмме без пометок ролей нечего делить.
Круг туда-обратно не возвращает оригинал. — Он возвращает текст. Вызовы инструментов и изображения не восстанавливаются из сводок в скобках: стенограмма по природе с потерями, поэтому и показывается счётчик.
Часто задаваемые вопросы
Почему содержимое приходит блоками, а не строкой?
Потому что в одном ходе может быть не только текст: вызов инструмента, изображение, документ, блок рассуждения. Строка — простой случай, и код, который считает её единственным, и есть причина исчезновения вызовов из журналов.
Какой стиль стенограммы выбрать?
Markdown для всего, что идёт в документ или в задачу. С подписями — для того, что вы, возможно, прочтёте обратно инструментом: такой стиль ходит туда-обратно чисто. Простой — когда нужны только слова.
Можно вставить журнал откуда угодно?
Если это массив сообщений в JSON — да. Обычные обрамляющие ключи распознаются, а необычные роли сохраняются как есть.
Идёт ли круг без потерь?
Текст — да, в точности. Нетекстовые блоки — нет: они сведены для чтения, а не сохранены для восстановления. Это честный предел любой стенограммы.
Зачем счётчик блоков?
Он говорит, сколько стенограмма не показывает. Разговор с двадцатью вызовами инструментов читается совсем иначе, когда знаешь, что они там были.