Медиа-инструменты
PRX включает пять инструментов для работы с медиа, охватывающих обработку изображений, захват экрана, синтез речи из текста и рендеринг структурированного контента. Эти инструменты позволяют агентам работать с визуальным и аудио-контентом -- изменять размер изображений, захватывать скриншоты для визуального анализа, генерировать голосовые сообщения и рендерить графики и диаграммы.
Медиа-инструменты распределены по двум категориям в реестре инструментов. Инструменты зрения (image, image_info, screenshot) всегда регистрируются в all_tools(). Инструменты рендеринга (tts, canvas) регистрируются при наличии активного канала или безусловно, соответственно.
Вместе эти инструменты дают агентам PRX мультимодальные возможности вывода, позволяя создавать изображения, аудио и визуальные артефакты наряду с текстовыми ответами.
Конфигурация
Медиа-инструменты имеют минимальную конфигурацию. Большинство настроек управляются на уровне канала (для доставки) или через LLM-провайдера (для возможностей модели зрения):
# Конфигурация браузера влияет на возможности скриншотов
[browser]
enabled = true
backend = "rust_native"
# Конфигурация канала влияет на доставку TTS
[channels_config.telegram]
bot_token = "..."
stream_mode = "partial"
# Отдельного раздела конфигурации для медиа-инструментов нет
# Инструменты зрения всегда доступны в all_tools()Справочник инструментов
image
Обработка и трансформация изображений. Поддерживает изменение размера, обрезку и конвертацию формата.
Изменение размера изображения:
{
"name": "image",
"arguments": {
"action": "resize",
"path": "/home/user/photo.png",
"width": 800,
"height": 600
}
}Обрезка изображения:
{
"name": "image",
"arguments": {
"action": "crop",
"path": "/home/user/photo.png",
"x": 100,
"y": 50,
"width": 400,
"height": 300
}
}Конвертация формата:
{
"name": "image",
"arguments": {
"action": "convert",
"path": "/home/user/photo.png",
"format": "jpeg",
"output": "/home/user/photo.jpg"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
action | string | Да | -- | Операция: "resize", "crop", "convert" |
path | string | Да | -- | Путь к исходному файлу изображения |
width | integer | Условно | -- | Целевая ширина (для resize и crop) |
height | integer | Условно | -- | Целевая высота (для resize и crop) |
x | integer | Условно | -- | Смещение X начала обрезки |
y | integer | Условно | -- | Смещение Y начала обрезки |
format | string | Условно | -- | Целевой формат конвертации: "png", "jpeg", "webp", "gif" |
output | string | Нет | Перезаписывает исходный | Путь к выходному файлу |
image_info
Извлечение метаданных и размеров из файлов изображений без их модификации.
{
"name": "image_info",
"arguments": {
"path": "/home/user/photo.png"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
path | string | Да | -- | Путь к файлу изображения |
Возвращаемая информация:
| Поле | Описание |
|---|---|
| Ширина | Ширина изображения в пикселях |
| Высота | Высота изображения в пикселях |
| Формат | Формат изображения (PNG, JPEG, WebP и т.д.) |
| Цветовое пространство | RGB, RGBA, Grayscale и т.д. |
| Размер файла | Размер на диске |
| DPI | Разрешение (если доступно в метаданных) |
screenshot
Захват скриншотов текущего экрана или определённых окон. Полезен для задач визуального анализа, когда агенту нужно наблюдать текущее состояние рабочего стола или приложения.
{
"name": "screenshot",
"arguments": {
"target": "screen"
}
}{
"name": "screenshot",
"arguments": {
"target": "window",
"window_name": "Firefox"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
target | string | Нет | "screen" | Что захватить: "screen" (полный экран) или "window" (конкретное окно) |
window_name | string | Условно | -- | Заголовок окна для захвата (обязателен при target = "window") |
output | string | Нет | Автогенерируемый временный путь | Путь к выходному файлу скриншота |
Скриншоты сохраняются как PNG-файлы. При использовании с LLM, поддерживающими зрение (GPT-4o, Claude Sonnet и т.д.), скриншот может быть включён в следующее сообщение для визуального анализа.
tts
Синтез речи из текста. Конвертирует текст в аудиофайл и отправляет его как голосовое сообщение в текущий разговор. Инструмент обрабатывает генерацию MP3, опциональную конвертацию в M4A и доставку через активный канал.
{
"name": "tts",
"arguments": {
"text": "Good morning! Here is your daily briefing. Three tasks are due today."
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
text | string | Да | -- | Текст для конвертации в речь |
language | string | Нет | "en" | Код языка для синтеза речи |
voice | string | Нет | По умолчанию провайдера | Идентификатор голоса (зависит от провайдера) |
Инструмент TTS требует активного канала с поддержкой голосовых сообщений (Telegram, WhatsApp, Discord). На каналах без поддержки голоса инструмент возвращает ошибку.
Конвейер TTS:
- Текст отправляется провайдеру TTS (встроенному или внешнему)
- Аудио генерируется в формате MP3
- Если канал требует M4A (напр., некоторые мобильные клиенты), выполняется автоматическая конвертация
- Аудиофайл доставляется через
message_sendкак голосовое сообщение
canvas
Рендеринг структурированного контента для визуального вывода. Поддерживает таблицы, графики, диаграммы и форматированные макеты.
{
"name": "canvas",
"arguments": {
"type": "table",
"data": {
"headers": ["Name", "Status", "Score"],
"rows": [
["Module A", "Passed", "98"],
["Module B", "Failed", "45"],
["Module C", "Passed", "87"]
]
}
}
}{
"name": "canvas",
"arguments": {
"type": "diagram",
"content": "graph LR\n A[Input] --> B[Process]\n B --> C[Output]"
}
}| Параметр | Тип | Обязательный | По умолчанию | Описание |
|---|---|---|---|---|
type | string | Да | -- | Тип контента: "table", "chart", "diagram", "code" |
data | object | Условно | -- | Структурированные данные для таблиц и графиков |
content | string | Условно | -- | Текстовое содержимое для диаграмм (синтаксис Mermaid) и блоков кода |
format | string | Нет | "png" | Формат вывода: "png", "svg", "html" |
output | string | Нет | Автогенерируемый временный путь | Путь к выходному файлу |
Паттерны использования
Сценарий визуального анализа
Использование скриншотов с LLM, поддерживающими зрение, для понимания состояния интерфейса:
Агент размышляет: Нужно проверить, что веб-приложение выглядит корректно.
1. [browser] action="navigate", url="https://app.example.com/dashboard"
2. [screenshot] target="screen"
3. [Визуальный анализ скриншота LLM]
4. "На панели управления отображается 3 активных оповещения и график с падающими метриками..."Генерация отчётов
Создание визуальных отчётов с графиками и таблицами:
Агент размышляет: Пользователь хочет отчёт о статусе проекта.
1. [memory_search] query="project status"
2. [canvas] type="table", data={данные статуса проекта}
3. [canvas] type="chart", data={данные графика прогресса}
4. [message_send] media_path="/tmp/status_table.png", caption="Project Status"
5. [message_send] media_path="/tmp/progress_chart.png", caption="Sprint Progress"Голосовое взаимодействие
Предоставление аудио-ответов для сценариев без рук:
Агент размышляет: Пользователь попросил голосовое резюме.
1. [memory_recall] query="today's meetings and tasks"
2. [tts] text="You have 3 meetings today. The first is at 10 AM with the engineering team..."
→ Голосовое сообщение доставлено через TelegramБезопасность
Доступ к файловой системе
Инструменты работы с изображениями и скриншотами читают и записывают файлы в локальной файловой системе. Эти операции подчиняются тем же политикам безопасности, что и file_read и file_write:
- Валидация путей предотвращает доступ за пределами разрешённых каталогов
- Операции записи файлов подчиняются правилам политики безопасности
- Временные файлы записываются в
TMPDIRпо умолчанию
Конфиденциальность TTS
Голосовые сообщения могут содержать конфиденциальную информацию из разговора. Учитывайте:
- Содержимое TTS отправляется провайдеру TTS (потенциально внешнему)
- Генерируемые аудиофайлы временно хранятся на диске
- Голосовые сообщения доставляются через канал и подчиняются политике конфиденциальности платформы
Безопасность содержимого Canvas
Инструмент canvas рендерит данные, предоставленные пользователем. При рендеринге диаграмм в синтаксисе Mermaid содержимое обрабатывается локально и не затрагивает внешние сервисы.
Политика безопасности
Медиа-инструментами можно управлять индивидуально:
[security.tool_policy.tools]
image = "allow"
image_info = "allow"
screenshot = "supervised" # Требовать одобрение для скриншотов
tts = "allow"
canvas = "allow"Связанные разделы
- Инструмент браузера -- веб-автоматизация с поддержкой скриншотов
- Обмен сообщениями -- доставка медиа и голоса через каналы
- Обзор каналов -- матрица медиа-возможностей каналов
- Обзор инструментов -- все инструменты и система реестра