Боты и автоматизация2026-09-22Обновлено: 2026-10-079 минАвтор:

Qwen Agent: какой ИИ-агент Qwen выбрать и как запустить безопасно

Проверено 7 октября 2026: продукты Qwen, тарифы QwenWork, установка Qwen-Agent 0.0.34, вызовы инструментов, код примера на заглушке сервера модели, настройки локального запуска по документации и доступ из России на 07.10.2026. Проверила Редакция Submarine School. Источники: github.com, qwenlm.github.io, qwenlm.github.io, github.com, ollama.com, alibabacloud.com, qwenlm.github.io, alibabacloud.com.

Qwen Agent: какой ИИ-агент Qwen выбрать и как запустить безопасно

Агентом Qwen называют четыре разных продукта Alibaba: готовый агент без кода QwenWork, чат Qwen Studio, агент для программирования Qwen Code и Python-фреймворк Qwen-Agent. Для своего агента на Python выбирайте Qwen-Agent и начинайте с одной функции только для чтения на тестовых данных.

  • QwenWork работает как готовый агент в браузере и на компьютере: ищет информацию, работает с файлами, готовит документы, презентации и веб-страницы. Повторяющиеся задачи можно запускать по расписанию, а удачный процесс сохранять как навык. Вход через Google или почту, затем аккаунт привязывают к учётной записи Alibaba Cloud.
  • Qwen Studio служит обычным чатом с моделями Qwen: понимает картинки, видео и документы, генерирует изображения, пользуется инструментами. Есть голосовой и видеочат и артефакты. Приложение в Google Play называется Qwen Studio; прежде сервис назывался Qwen Chat.
  • Qwen Code работает как открытый агент для программирования в терминале. Для установки выполните npm install -g @qwen-code/qwen-code@latest; нужен Node.js 22+. Подходит, если вы хотите поручать агенту работу с кодом.
  • Qwen-Agent нужен для создания собственного агента на Python. Вы описываете инструменты и выбираете сервер модели; фреймворк связывает их с агентом. По README он также работает как серверная часть Qwen Chat.

Своего агента на Qwen-Agent имеет смысл начинать с одного безопасного инструмента, который только читает тестовые данные и возвращает структурированный ответ. Не подключайте почту, платежи и рабочую базу в первом запуске. Цель пилота: увидеть выбранную функцию, её аргументы, ответ инструмента и финальный вывод модели, а затем повторить проверку на граничном случае.

В QwenWork тариф Free стоит 0 долларов; при регистрации начисляются 500 кредитов разово, ещё 200 кредитов выдаются в день по ограниченной по времени акции. Personal Standard стоит 20 долларов в месяц, Personal Pro 40 долларов в месяц. Для начала без кода можно выбрать Free, а перед оплатой сверить текущие условия и проверить, хватает ли вам кредитов на нужные задачи.

Для Qwen Code бесплатный вход Qwen OAuth закрыт 15.04.2026. Теперь нужен Alibaba Cloud Coding Plan с фиксированной месячной подпиской, Token Plan или свой API-ключ. Можно подключить OpenAI-совместимого поставщика, Anthropic, Gemini, OpenRouter или локальный сервер; способ подключения выбирайте под уже доступную вам модель. Пример совместной работы с другим агентом есть в статье Qwen Code как сабагент Codex.

На 07.10.2026 сайты Qwen Studio, QwenWork, docs.qwenwork.ai, ollama.com и реестр моделей Ollama открываются из России без VPN, а API Model Studio на dashscope-intl.aliyuncs.com отвечает и ждёт ключ. Доступность страниц не гарантирует каждую регистрацию или оплату; для запуска без аккаунтов и карт выбирайте локальную модель через Ollama.

Один вызов функции в Qwen-Agent проверен, а как выглядит агент, который делает всю задачу сам? Завтра в 12:00 МСК на бесплатном мастер-классе это показывают в реальном времени.

Посмотреть бесплатно

Что такое Qwen-Agent

Qwen-Agent служит Python-фреймворком для приложений с моделями Qwen, инструментами, планированием и памятью. В официальном репозитории Qwen-Agent описаны function calling, RAG, MCP и примеры ассистентов. Документация Qwen3 показывает, что фреймворк может оборачивать OpenAI-совместимый сервер и представлять вызов функции в структурированном виде.

  • Облачный DashScope проще для быстрого теста, но требует учётной записи и ключа.
  • OpenAI-совместимый локальный сервер даёт больше контроля, но сложнее в настройке.
  • Function calling выбирайте для строгого набора известных действий.
  • Обычный чат безопаснее, если действия вообще не нужны.

Что подготовить для вызова одной функции

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

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

По теме: Claude и Qwen в 2026: сравнение по доступу, цене и коду

Пошаговый безопасный запуск

Установите стабильный пакет из PyPI командой pip install -U qwen-agent: по документации этого достаточно для минимального набора зависимостей function calling. Полная команда pip install -U "qwen-agent[gui,rag,code_interpreter,mcp]" добавляет зависимости для интерфейса, RAG, интерпретатора кода и MCP. Установка из исходников через git clone и pip install -e ./ нужна только для версии в разработке.

На 07.10.2026 последняя версия на PyPI имеет номер 0.0.34 и опубликована 16.02.2026. У неё есть ловушка установки: после минимальной команды import qwen_agent падает с ModuleNotFoundError: No module named 'numpy', а после добавления этой зависимости последовательно требует soundfile, tqdm и dateutil. После полной установки не хватает только soundfile. Для версии 0.0.34 все эти пропуски закрывает команда pip install numpy soundfile tqdm python-dateutil.

  1. Создайте отдельное виртуальное окружение и установите пакет командой выше. Если возникла ошибка импорта зависимостей, добавьте недостающие пакеты.
  2. Выберите локальный сервер модели или облако. Для локального примера ниже ключ не нужен; облачный ключ храните вне исходного кода.
  3. Опишите одну функцию с коротким именем, схемой аргументов и запретом записи. В её методе call вызывайте self._verify_json_format_args(params) до чтения данных.
  4. Передайте тестовый запрос, который однозначно требует этой функции.
  5. Запишите имя функции, аргументы, результат и финальный ответ агента.
  6. Повторите тест с отсутствующим полем и проверьте, останавливает ли схема вызов и просит ли агент уточнение.

Для облака DashScope в Alibaba Cloud Model Studio положите ключ в DASHSCOPE_API_KEY и задайте 'model_type': 'qwen_dashscope'. По правилам конфигурации Qwen-Agent, OpenAI-совместимый сервер принимает ключ из OPENAI_API_KEY или поля api_key. Локальному серверу ключ не нужен; в примере ниже 'api_key': 'EMPTY' служит заполнителем, поэтому секретов в коде нет.

Для пути без облака используйте Ollama и выполните ollama pull qwen3.5:9b. В реестре моделей Ollama тег qwen3.5:9b совпадает с qwen3.5:latest, размер загрузки указан как 6,6-7,6 ГБ; семейство имеет метки tools, thinking и vision. Для менее мощной машины есть qwen3.5:4b размером 3,3-4,0 ГБ. Если выбираете этот вариант, укажите его тег и в конфигурации агента.

Перед выполнением Python-примера запустите сервер Ollama. Его OpenAI-совместимый API доступен по адресу http://localhost:11434/v1; поле ключа требуется клиенту, но Ollama игнорирует его значение. В коде адрес сервера стоит в model_server, а название загруженной модели в model. Сверьте оба поля с выбранным локальным сервером: запрос агента должен попасть к нему, иначе вызов инструмента проверить не получится.

Если выбираете облако, Alibaba Cloud Model Studio после активации даёт новым пользователям стартовую квоту, обычно 1 000 000 токенов на каждую модель, сроком на 90 дней. Она действует только в регионе Singapore со scope International. Для этого пути используйте конфигурацию DashScope и DASHSCOPE_API_KEY, описанные выше; тестовые данные и функцию чтения можно оставить теми же.

Пример создаёт инструмент get_order_status, который читает только тестовый словарь ORDERS и ничего в нём не меняет. Он следует API инструментов Qwen-Agent: класс наследуется от BaseTool, содержит description, parameters и call, а @register_tool регистрирует имя. Поле order_id обязательно; self._verify_json_format_args(params) проверяет аргументы до обращения к словарю. Это пример работы с тестовыми данными, рабочую базу к нему не подключайте.

import json
from qwen_agent.agents import Assistant
from qwen_agent.tools.base import BaseTool, register_tool

ORDERS = {'A-1001': 'доставлен', 'A-1002': 'в пути'}  # только тестовые данные


@register_tool('get_order_status')
class GetOrderStatus(BaseTool):
    description = 'Возвращает статус заказа по номеру. Только чтение, ничего не меняет.'
    parameters = {
        'type': 'object',
        'properties': {
            'order_id': {'type': 'string', 'description': 'Номер заказа, например A-1001'},
        },
        'required': ['order_id'],
    }

    def call(self, params: str, **kwargs) -> str:
        args = self._verify_json_format_args(params)
        order_id = args.get('order_id')
        if order_id not in ORDERS:
            return json.dumps({'error': 'order_not_found', 'order_id': order_id}, ensure_ascii=False)
        return json.dumps({'order_id': order_id, 'status': ORDERS[order_id]}, ensure_ascii=False)


llm_cfg = {
    'model': 'qwen3.5:9b',
    'model_server': 'http://localhost:11434/v1',
    'api_key': 'EMPTY',
}
bot = Assistant(llm=llm_cfg, function_list=['get_order_status'])

messages = [{'role': 'user', 'content': 'Какой статус у заказа A-1002?'}]
for response in bot.run(messages=messages):
    pass
for msg in response:
    print(msg)

В журнале вызова инструмента Qwen-Agent ищите сообщение assistant с полем function_call, где указаны name и arguments, затем сообщение function с результатом инструмента и финальное сообщение assistant с текстом. По ним можно сопоставить выбранный инструмент, переданный номер заказа и данные, на которые опирается итоговый ответ. Конкретный ответ модели здесь не задан; проверяйте выбранную функцию и результат её работы по сообщениям журнала. Вызовет ли модель функцию вообще, зависит от модели и сервера: если в журнале нет function_call, переходите к разделу о сбоях.

Из маленьких вызовов инструментов складывается целая работа. На мастер-классе агент в Codex по голосовой задаче сам открывает браузер, собирает 15 товаров с OZON и сводит их в таблицу с рейтингом. Ведёт Яков Юдин, 11 лет в IT.

Хочу на мастер-класс

Как проверить вызов инструмента

Проверка аргументов работает, когда инструмент сам вызывает self._verify_json_format_args(params). Метод класса BaseTool сверяет данные с JSON Schema из parameters через jsonschema. Если просто разобрать строку вызовом json5.loads(params), проверки схемы не будет. Перед подключением инструмента убедитесь, что этот вызов стоит в call до действий с данными, а обязательные поля перечислены в схеме.

  • Ключ хранится вне исходного кода.
  • Инструмент работает только с тестовыми данными.
  • Инструмент вызывает self._verify_json_format_args(params) до выполнения действия и отклоняет аргументы, которые не проходят проверку схемы.
  • Повторный вызов не создаёт дубль и не меняет состояние.
  • Ошибка инструмента видна пользователю и не превращается в выдуманный результат.

При отсутствии обязательного order_id проверка останавливает вызов до чтения данных. Qwen-Agent передаёт модели сообщение об ошибке с текстом An error occurred when calling tool и ValidationError: 'order_id' is a required property, а также трассировкой. В ней есть локальные пути к файлам; при облачной модели они уходят поставщику вместе с ошибкой. Сверяйте журнал и финальный ответ: ошибка должна остаться видимой, чтобы выдуманный статус заказа не прошёл приёмку.

По теме: Китайские ИИ-агенты: Qwen, Kimi и DeepSeek

Как выбрать подходящий вариант

Если нужен ответ по документам, начните с RAG без действий. Если нужно получить текущие данные из системы, используйте функцию только для чтения. Запись добавляйте отдельным инструментом с подтверждением. Официальное руководство по function calling в Qwen3 рекомендует обрабатывать вызов и результат структурированно, а не извлекать команду из свободного текста.

Что делать, если агент не вызывает функцию или выдаёт ошибку

Если модель не вызывает функцию, начните со схемы, описания инструмента и поддержки function calling выбранным сервером. Затем проверьте аргументы, повторы и передачу ошибок: успешный ответ на один тестовый запрос ещё не закрывает эти случаи.

  • Модель не вызывает функцию: проверьте схему, описание и поддержку function calling выбранным сервером.
  • Аргументы невалидны: добавьте обязательные поля в parameters и вызов self._verify_json_format_args(params) до выполнения действия.
  • Инструмент вызывается дважды: добавьте идентификатор запроса и защиту от повторной обработки.
  • Ответ скрывает ошибку: передавайте ошибку отдельным статусом и запрещайте модели подменять её догадкой.
  • ModelServiceError: Connection error. при bot.run: запустите сервер модели и проверьте адрес в model_server.
  • ValueError: Tool <имя> is not registered.: имя передано строкой в function_list, но инструмент не зарегистрирован. Зарегистрируйте его через @register_tool или передайте экземпляр класса, как описано в конфигурации инструментов.

Для моделей Qwen3/Qwen3.5 на vLLM/SGLang Qwen-Agent рекомендует свой разборщик вызовов, включённый по умолчанию: не добавляйте --enable-auto-tool-choice --tool-call-parser hermes. Для Qwen3-Coder используйте разборщик сервера вместе с use_raw_api. Эти варианты разбора вызовов относятся к конфигурации сервера и агента; при сбое сначала сверяйте вариант для вашей модели, чтобы не смешать настройки разных семейств.

По теме: Qwen и Codex: как запустить Codex из Qwen Code в 2026

Что ещё проверить

Сравните Qwen с другими решениями в обзоре китайских ИИ-агентов. Различия моделей и доступа разобраны в сравнении Claude и Qwen, а общий выбор среды есть в статье про платформы агентов.

Какие ограничения учитывать перед подключением рабочих данных

Qwen-Agent требует навыка Python и понимания инструментов. Он не подходит как готовая кнопка для бизнес-процесса без разработчика и журнала. Локальная модель требует ресурсов, облачный сервер передаёт данные поставщику. Не подключайте критичную систему, пока не проверили права, повторные события и откат.

Встроенный code_interpreter выполняет код в локальном Docker-контейнере с базовой изоляцией; авторы Qwen-Agent рекомендуют осторожность при использовании в рабочих системах, поэтому в первый запуск его не подключайте.

Частые вопросы

Нужен ли платный API?

Для локальной модели через Ollama платить за API не нужно. Фреймворк можно связать с облаком или OpenAI-совместимым локальным сервером. В Model Studio есть стартовая квота, обычно 1 млн токенов на модель на 90 дней, для региона Singapore (International). У QwenWork есть тариф Free за 0 долларов; это отдельная готовая платформа, а для своего агента на Python используется Qwen-Agent.

Можно ли начать без инструментов?

Да. Сначала проверьте обычный диалог, затем добавьте одну функцию чтения.

Что тестировать кроме удачного вызова?

Отсутствующее поле, ошибку инструмента, повторный запрос и попытку вызвать запрещённое действие.

Работает ли Qwen-агент в России без VPN?

На 07.10.2026 сайты Qwen Studio, QwenWork и его документация, Ollama и реестр моделей открываются из России без VPN. Это доступность страниц, без гарантии успешной регистрации или оплаты; локальная модель через Ollama позволяет начать без аккаунтов и карт.

Чем QwenWork отличается от Qwen-Agent?

QwenWork работает как готовая платформа для задач без кода. Qwen-Agent нужен для собственного агента на Python: вы задаёте сервер модели и инструменты. Для примера с тестовыми заказами в этой статье выбирайте Qwen-Agent.

Подходящий Qwen выбран и запущен без риска. Завтра в 12:00 МСК на бесплатном мастер-классе покажут, как ИИ-агенты закрывают житейскую рутину вроде налогов и Госуслуг и где проходит граница доверия к ним.

Записаться бесплатно
Разборы, кейсы и фишки вайбкодинга каждую неделю в телеграм-канале «Яков вайбкодит».
Смотрите ИИ-агента в деле: завтра в 12:00 МСК, бесплатно Записаться