WorkAI

Инструмент: Офисные документы

Как агент WorkAI читает и редактирует .docx, .xlsx и .pptx точечно, по адресам, не трогая остальной файл, и создаёт новые документы и PDF без сторонних программ.

Агент WorkAI умеет читать и редактировать файлы Word (.docx), Excel (.xlsx, .xlsm) и PowerPoint (.pptx, .pptm), а также собирать PDF из markdown — без установки Python, python-docx, openpyxl или похожих библиотек на вашей машине. Это отдельные инструменты, не универсальный код: агент не пишет скрипт, который открывает файл и что-то в нём меняет, а вызывает готовый инструмент с точным адресом того, что нужно изменить.

Разница важна на практике: скрипт, который «пересобирает» офисный файл, легко теряет то, что не касалось задачи, — картинки, диаграммы, сводные таблицы, форматирование. Инструменты ниже трогают только адресованное место, всё остальное остаётся как было.

Сначала — чтение

read_office_file — открывает файл и возвращает структуру, а не текст целиком:

  • в Word — параграфы с id (p1, p2, …), реальная сетка таблиц (t1.r3.c2, пустые ячейки тоже видны), список всего заполняемого — бланки-прочерки, пустые ячейки, чекбоксы, {{плейсхолдеры}} — с адресом и подписью рядом;
  • в Excel — имена листов и значения ячеек по адресам вроде B2; для формул возвращается и сама формула, и последнее посчитанное Excel значение;
  • в PowerPoint — слайды по порядку, у каждой фигуры свой id (s2.sh1), тип (текст, картинка, таблица, график, диаграмма) и роль в макете; заметки докладчика читаются тоже.

Результат ограничен по объёму (200 строк на лист, 300 параграфов и 40 слайдов по умолчанию), чтобы большой прайс-лист не съел весь контекст целиком: при обрезке агент видит явный флаг и адрес, с которого продолжить чтение следующим вызовом.

read_office_batch — то же самое, но сразу по нескольким файлам (до 50 за раз) под общий бюджет вывода — например, собрать номер, дату и сумму из двадцати похожих счетов. Файл, для которого бюджет закончился, помечается отдельно и не читается молча как пустой — агент обязан дочитать его следующим вызовом.

Легаси-форматы .doc, .xls, .ppt и файлы с паролем инструменты не открывают.

Word: заполнить форму, изменить текст

  • edit_docx_document — точечная правка существующего файла по адресам из read_office_file: заполнить бланк-прочерк или пустую ячейку, заменить текст параграфа или ячейки, добавить строку в таблицу, вставить параграф рядом с существующим, удалить параграф или строку, поставить/снять галочку в чекбоксе. За один вызов можно передать сразу несколько таких правок. Результат сохраняется в новый файл — исходный не меняется.
  • fill_docx_template — для шаблонов с {{плейсхолдерами}} (договор, акт, счёт с переменными полями): заполняет их значениями и сохраняет как новый документ. Отсутствие нужного плейсхолдера или незаполненное значение — явная ошибка, не тихая отправка документа со следом {{name}} в тексте.
  • fill_docx_template_batch — тот же шаблон, но сразу для списка людей или объектов: один комплект значений — один готовый файл в папке, исходный шаблон не меняется. Отчёт о том, что не удалось создать и почему, приходит по каждому файлу отдельно — агент не должен докладывать «готово», если часть провалилась.
  • replace_docx_text — точная замена фразы по всему документу, включая колонтитулы, с сохранением в новый файл. Word физически хранит параграф кусками (runs), поэтому обычный текстовый поиск по файлу такую фразу часто не находит — этот инструмент сначала склеивает параграф, потом ищет. Результат отчитывается числом найденных совпадений по каждому правилу замены, а не списком прежних значений: ноль совпадений — сигнал, что фраза не найдена, а не что документ обновился.
  • create_docx_document — собирает новый .docx с нуля из заголовков, параграфов и таблиц, когда шаблона нет вообще. Картинки, колонтитулы и автоматическую нумерацию этот инструмент не поддерживает — обещать их в результате не стоит.

Excel: изменить ячейки или создать таблицу

  • edit_office_cells — запись значений и формул в существующую книгу по адресам вида B2, включая добавление строк (запись ниже последней заполненной строки — это и есть способ дописать таблицу), до 500 ячеек за один вызов. Формулы, стили, диаграммы, сводные таблицы и остальные листы не трогаются. Ячейку, в которой лежит «мастер» общей (shared) формулы на весь диапазон, инструмент менять отказывается — переписать её значением означало бы молча снести формулу у всего диапазона.
  • create_xlsx_workbook — новая книга из строк данных с опциональными формулами, до 20 листов и 5000 строк на лист.

PowerPoint: заменить текст на слайде

edit_pptx_text — точечная замена текста по адресу из read_office_file: s2.sh1 — вся фигура целиком, s2.sh1.p3 — один параграф внутри неё, s2.sh4.r2.c1 — ячейка таблицы на слайде. Новый текст наследует форматирование того, что заменил. Макет, тема, анимации, картинки, диаграммы и заметки докладчика не меняются. Новые слайды и фигуры этот инструмент не создаёт — только заполняет то, что уже есть в презентации. Фигуру без текста (картинку, график, диаграмму) и автополе вроде номера слайда инструмент явно отклоняет — заменить их текстом означало бы превратить автополе в статичный текст или писать туда, где текста в принципе нет.

PDF без установки конвертеров

export_markdown_to_pdf собирает PDF из markdown-файла или готового текста — без pandoc, wkhtmltopdf и обращений в интернет. Переживают конвертацию заголовки, списки (включая вложенные), таблицы, блоки кода, цитаты, локальные картинки и любой не латинский текст. Не переживают — картинки по внешним ссылкам (они не скачиваются) и всё, что требует JavaScript для отрисовки.

Общее для всех инструментов записи

  • Меняется только то, что явно адресовано; всё остальное в файле остаётся как было.
  • Запись в существующий файл (Excel, PowerPoint) требует вашего подтверждения — как и другие мутирующие инструменты агента, см. Безопасность агента.
  • Инструменты Word, которые создают результат заново (edit_docx_document, fill_docx_template, fill_docx_template_batch, replace_docx_text, create_docx_document), не перезаписывают исходный файл — путь результата всегда отдельный.
  • У большинства инструментов записи результат показывает прежнее значение каждого изменённого места — случайную правку можно откатить повторным вызовом с прежними значениями. Исключение — replace_docx_text: он отчитывается числом совпадений по правилу, без списка прежних значений.
  • Ни один из этих инструментов не рисует диаграммы, не работает с картинками и не конвертирует форматы — здесь агент честно скажет, что для этого нужен Python-скрипт, а не будет пытаться подменить задачу текстом.

Дальше