ИИ-агент для управления компьютером: разработка умного помощника на Python. ai.. ai. computer use.. ai. computer use. gemini.. ai. computer use. gemini. агент.. ai. computer use. gemini. агент. агенты ии.. ai. computer use. gemini. агент. агенты ии. искусственный интеллект.

Представьте, что вы говорите своему компьютеру “Открой презентацию по проекту и добавь новый слайд с графиком продаж”, и компьютер выполняет эту задачу, используя клавиатуру и мышь, как если бы за ним сидел реальный человек. В этой статье я расскажу, как создать ИИ-агента, который может управлять компьютером с помощью голосовых команд, используя современные языковые модели и простые Python-модули. Статья несет в первую очередь познавательную цель, чтобы поделиться опытом разработки.

Архитектура и технический стек

Программа состоит из нескольких ключевых компонентов:

  1. Модуль захвата экрана — делает скриншоты для “зрения” агента

  2. Голосовой интерфейс — распознает команды пользователя в реальном времени

  3. Языковая модель — анализирует скриншоты и команды, принимает решения

  4. Система управления — выполняет действия с курсором и клавиатурой

  5. Модуль извлечения команд — парсит JSON-команды из ответа LLM

Для работы с языковой моделью я использую OpenRouter AI, который предоставляет доступ к различным LLM. Наилучшие результаты показывает Gemini Flash 2.0 благодаря оптимальному балансу скорости и стоимости запросов. Однако для тех, кто предпочитает локальное решение без отправки данных внешним сервисам, есть альтернатива — запустить модель на своем компьютере через LM Studio. Недавно DeepMind выпустили мультимодальные модели Gemma 3 (4b, 12b и 27b), которые отлично подходят для таких задач. Для работы с LM Studio в коде достаточно поменять Base URL клиента.

Особое внимание стоит уделить голосовому интерфейсу. Для распознавания речи я использую локальную модель Whisper, которая обеспечивает высокую точность распознавания без необходимости передачи аудиоданных в облако. Это существенно повышает приватность и снижает задержки при обработке команд. Микрофон активно прослушивается в реальном времени, и как только пользователь начинает говорить, агент переходит в режим приема команды, что отображается в индикаторе состояния в правом верхнем углу экрана.

Принцип работы

Цикл работы агента выглядит следующим образом:

  1. Получение инструкции — пользователь вводит команду текстом или голосом

  2. Обработка инструкции LLM — команда отправляется языковой модели вместе со скриншотом текущего состояния экрана

  3. Извлечение команд — LLM генерирует ответ, содержащий набор команд в JSON-формате

  4. Выполнение команд — извлеченные команды последовательно выполняются, используя соответствующие модули

  5. Обратная связь — агент предоставляет отчет о выполнении каждой команды и делает новый скриншот для контроля результата

Интересной особенностью системы является то, что она работает в соответствии с принципом “клавиатура прежде всего”. Это значит, что агент в первую очередь пытается использовать горячие клавиши и текстовый ввод, а не перемещение мыши. Такой подход значительно ускоряет выполнение большинства задач.

Модуль управления курсором

Для точного управления курсором я реализовал специальный модуль, который:

  1. Делит экран на условную сетку координат

  2. Принимает описания UI-элементов в естественном языке (например, “Поисковая строка браузера”)

  3. Анализирует скриншот и определяет, где находится нужный элемент

  4. Перемещает курсор в соответствующую позицию

ИИ-агент для управления компьютером: разработка умного помощника на Python - 1

На протяжении всего процесса в правом верхнем углу экрана отображается текущее состояние агента: “Слушаю” при активном распознавании речи, “Анализирую” при обработке команды языковой моделью, “Выполняю” при исполнении действий, и “Ожидаю” в режиме ожидания новых инструкций. Это позволяет пользователю всегда понимать, на каком этапе находится обработка его запроса.

Системный промпт

Разработка эффективного системного промпта стала одним из наиболее сложных и интересных этапов создания проекта. Первая версия промпта была достаточно простой и содержала лишь базовые инструкции для модели. Однако быстро стало ясно, что без детальных указаний небольшая языковая модель не способна последовательно и эффективно управлять компьютером.

Я начал с анализа типичных задач, которые пользователь может делегировать агенту, и выделил основные сценарии взаимодействия с интерфейсом. На основе этого анализа были сформулированы ключевые принципы, такие как “приоритет клавиатуры” и “визуальная верификация”.

Затем я итеративно тестировал промпт на различных задачах, фиксируя типичные ошибки и недопонимания со стороны модели. Каждая итерация приводила к уточнению инструкций и добавлению новых разделов. Например, после того как я заметил, что модель часто “предполагает” успешность выполнения команд без проверки, я добавил раздел о необходимости визуальной верификации каждого действия.

Особенно полезным оказалось структурирование промпта по принципу “от общего к частному”: сначала определяются фундаментальные принципы работы, затем протоколы выполнения задач, и только потом конкретные команды и технические детали. Такая иерархическая структура помогает модели правильно определять приоритеты и следовать общей стратегии даже в нестандартных ситуациях.

Финальная версия системного промпта включает в себя основные принципы, протокол выполнения задач, правила планирования действий, приоритеты команд и протокол восстановления после ошибок. Это позволяет модели действовать последовательно, предсказуемо и эффективно в различных сценариях использования.

Основные принципы

  • Приоритет клавиатуры — использование горячих клавиш для большинства действий

  • Визуальная верификация — проверка результата каждого действия по скриншоту

  • Адаптивное выполнение — быстрая смена стратегии при неудаче

  • Атомарная точность — взаимодействие с элементами интерфейса по их точным названиям

Протокол выполнения задач

  1. Наблюдение и анализ — описание видимых элементов и планирование действий

  2. Составление плана — разбиение задачи на подзадачи с проверкой выполнения

  3. Выполнение команд — генерация и исполнение JSON-команд для управления системой

  4. Восстановление после ошибок — протокол для обработки неудач и изменения стратегии

Разработка программы

Для голосового управления агентом мы используем модель Whisper от OpenAI, которая предоставляет высококачественное распознавание речи:

class VoiceInputProcessor:
    def __init__(self, model_name="tiny", language="ru", sample_rate=16000, 
                 device=None, vad_threshold=0.05, callback=None):
        # Инициализация модели Whisper
        self.model_name = model_name
        self.language = language
        self.device = device if device else ("cuda" if torch.cuda.is_available() else "cpu")
        self.model = whisper.load_model(model_name, device=self.device)
        
        # Параметры для обнаружения голосовой активности
        self.vad_threshold = vad_threshold
        self.silence_duration = 0.3
        self.max_record_duration = 3.0
        self.min_speech_duration = 0.2
        
        # Очереди и буферы
        self.audio_queue = queue.Queue()
        self.text_queue = queue.Queue()
        self.audio_buffer = []

Модуль голосового ввода:

  1. Захватывает аудио с микрофона

  2. Определяет момент начала и окончания речи

  3. Отправляет записанные аудиофрагменты на распознавание

  4. Предоставляет распознанный текст основному модулю

Теперь нам нужен модуль, который будет анализировать ответы от языковой модели и выполнять команды. Этот модуль извлекает JSON-команды из текстового ответа языковой модели, обрабатывает различные типы команд (перемещение курсора, клики, ввод текста), выполняет команды и возвращает результаты выполнения.

Основной цикл работы агента выглядит так:

def run_desktop_agent(task, max_iterations=15, use_voice=True, voice_model="tiny", voice_language="ru"):
    messages = [{'role': 'user', 'content': [{"type": "text", "text": f"New task: {task}"}]}]
    
    # Инициализация голосового ввода
    voice_processor = None
    if use_voice and VOICE_AVAILABLE:
        voice_processor = VoiceInputProcessor(
            model_name=voice_model,
            language=voice_language
        )
        voice_processor.start()
    
    i = 0
    while i < max_iterations and agent_running:
        # Обработка голосового ввода
        voice_feedback = process_voice_input()
        
        # Захват скриншота
        save_screenshot()
        fullscreen_img = convert_to_base64('screenshots/fullscreen.jpg')
        
        # Подготовка сообщения для языковой модели
        message_content = [
            {"type": "text", "text": "Fullscreen screenshot:"},
            {"type": "image_url", "image_url": {"url": f"data:image/jpeg;base64,{fullscreen_img}"}}
        ]
        
        if voice_feedback:
            message_content.append({"type": "text", "text": f"Voice feedback: {voice_feedback}"})
        
        # Генерация ответа от LLM
        generated_text = generate(list(temp_messages), SYSTEM_PROMPT)
        
        # Извлечение команд и текста из ответа
        commands, text = extract_json(generated_text)
        
        # Выполнение команд
        if commands:
            command_results = process_commands(commands)
            
        i += 1

Для запуска агента используется командная строка с различными параметрами:

python main.py "Открой браузер и перейди на youtube.com" --voice-model tiny --voice-language ru

Параметры запуска:

  • Текст задачи, которую должен выполнить агент

  • –no-voice — отключить голосовой ввод

  • –voice-model — размер модели Whisper (tiny, base, small, medium, large)

  • –voice-language — язык распознавания речи

  • –max-iterations — максимальное число итераций агента

Заключение

Разработанный ИИ-агент представляет собой шаг к созданию действительно полезных цифровых ассистентов, которые могут выполнять реальные задачи в интерфейсе компьютера. Благодаря использованию языковых моделей и модульной архитектуре, система получилась гибкой и расширяемой. Конечно, сейчас этот проект далёк от реального использования в работе, однако новые языковые модели выходят практически каждую неделю – LLM становятся быстрее и лучше. С каждой новой языковой моделью такие агенты будут становиться всё практичнее и удобнее.

Исходный код проекта доступен на GitHub. Больше о развитии этого проекта можете прочитать в моем Telegram канале. По всем вопросам пишите мне в Telegram. Буду рад обратной связи и предложениям по улучшению!

Автор: Nevergreenin

Источник

Рейтинг@Mail.ru
Rambler's Top100