man smart-home

man smart-home 

Закулисная жизнь блога про умный дом

43subscribers

36posts

goals1
4 of 10 paid subscribers
Лиха беда начало.

Roo Code + Cloud.ru: как ИИ-агент и облачный Qwen2.5-Coder помогли мне написать интеграцию для Home Assistant

Пост немного устарел: Roo Code более недоступен. Вместо него я теперь использую Kilo.
На днях я в Telegram анонсировал, что работаю над новой ИИ-интеграцией для Home Assistant. Раскрываю карты: это интеграция с Cloud.ru Foundation Models. Недавно в своём облаке они начали предоставлять доступ к опенсорсным языковым моделям, и я не мог пройти мимо.
В моём Home Assistant ИИ в основном используется для ассистента Тамагочи, который работает на инференсе Llama от Yandex Cloud. И когда я сравнил цены в Cloud.ru и у Яндекса, то сразу понял: срочно нужно писать конкурента своей же интеграции с Yandex Cloud! 😀 Очень уж вкусные у Cloud.ru цены. Ещё и входные токены стоят дешевле генерируемых.
Но этот пост не про интеграцию для Home Assistant и даже не про Llama. Хочу рассказать про ИИ-инструменты, которые я использовал для работы с кодом интеграции, а так же хочу поделиться опытом работы с моделью Qwen2.5-Coder, доступной в Cloud.ru.
От копипастинга к ИИ-агентам
Для генерации кода я обычно пользуюсь DeepSeek или Grok: отправляю куски кода в чат, жду ответа, а затем «допиливаю» результат если потребуется. Чтобы немного упростить копипастинг кода, я использую LLMDog — он читает файлы с диска и форматирует содержимое в понятный для ИИ вид, сохраняя пути к файлам.
Но недавно я прочитал статью My AI Skeptic Friends Are All Nuts, из которой стало понятно, что я использую ИИ неправильно 🙂. Цитата из статьи (примерный перевод):
Если полгода назад вы попытались использовать LLM для написания кода и у вас ничего не получилось, значит вы делали совсем не то, что делают современные продвинутые разработчики, использующие помощь ИИ.
Сегодня те, кто программируют с LLM, используют агентов. Агенты могут самостоятельно изучать ваш код, они создают файлы напрямую, выполняют консольные команды, компилируют код, запускают тесты и итеративно улучшают результаты.
Статья написана для ИИ-скептиков: лично я в их число не вхожу, но почитать всё равно было познавательно.
В итоге мне захотелось попробовать «энтих ихних» агентов, но я не знал с чего начать. Да, я раньше уже слышал про агентов и про MCP-серверы, но руки так и не дошли попробовать.
Знакомство с Roo Code
И тут, по счастливой случайности, в комментариях @Tom_OC посоветовал дополнение для VSCode — Roo Code. Это прям то, о чём говорилось в статье! Настоящий агент!
Roo Code умеет сам читать и редактировать файлы, а так же сам выполняет команды в терминале — звучит как фантастика. Но если не фантастика, то как минимум это в 100 раз удобнее, чем копипастить код туда-сюда.
Причём тут Cloud.ru?
Roo Code — это «руки», но ему нужны «мозги» (LLM). Оказалось, что Cloud.ru предоставляют модель Qwen2.5-Coder, которая специально обучена для генерации кода. Более того, их API совместим с OpenAI, а Roo Code как раз умеет работать с таким API. Получилось идеальное комбо:
1. Удобный ИИ-ассистент (Roo Code), интегрированный прямо в VSCode.
2. Недорогой инференс от Cloud.ru.
3. Специализированная модель для работы с кодом (Qwen2.5-Coder).
Забегая вперёд, скажу, что общие впечатления от этого комбо получились смешанными. Если кратко:
- Roo Code — огонь!
- Модель Qwen/Qwen2.5-Coder-32B-Instruct немного разочаровала в сложных задачах.
- Cloud.ru Foundation Models — в итоге работает отлично, но поначалу были трудности.
Но поскольку «система» состоит из трёх независимых компонентов, то оценивать их нужно по отдельности.
Roo Code
Про Roo Code даже писать ничего не хочу — просто попробуйте сами. 🙂
До него я пользовался бета-версией Yandex Code Assistant (SourceCraft Code Assistant), которая поначалу умела только продвинутый автокомплит. Позже у них появился чат, плюс генерация документации и тестов, но к тому моменту я уже переметнулся на GigaCode.
В GigaCode тоже есть продвинутый автокомплит и генерация документации/тестов, но на этом по сути всё.
В случае с Code Assistant и в случае с GigaCode, чат больше похож на обычный DeepSeek или Grok, только встроенный в VSCode: файлы не редактирует, консольные команды не выполняет, код из чата так же нужно копипастить в редактор. Думаю, в будущем допилят, но пока так.
Roo Code же — это качественный скачок. Будучи полноценным агентом, он:
- Сам находит и читает нужные файлы в проекте.
- Редактирует их по вашей просьбе.
- Выполняет консольные команды (с вашего разрешения).
- Может даже автоматически исправлять ошибки в коде.
Хотя автоисправление ошибок немного бесит: после сохранения внесённых им изменений, Roo Code по умолчанию шлёт ещё один запрос, пытаясь исправить найденные ошибки. Мне это не нужно и мелкие огрехи проще поправить самому. Не знаю, может это где-то, выключается, но я пока не понял где.
У меня пока не было возможности как следует потестировать новинку, но я использовал Roo Code для написания интеграции с Cloud.ru Foundation Models и остался дико доволен. Теперь хочу ещё что-нибудь пописать. 🙂
Настройка Roo Code для Cloud.ru
Если захотите попробовать Roo Code, то можете настроить его на использование какой-нибудь бесплатной модели из OpenRouter. Но у нас тут статья про Cloud.ru, поэтому сейчас расскажу как интегрировать его и Roo Code. 🙂
В настройках Roo Code нужно указать следующие параметры:
- API Provider: "OpenAI compatible".
- Base URL: "https://foundation-models.api.cloud.ru/v1".
- API Key: ваш ключ из Cloud.ru.
- Model: "Qwen/Qwen2.5-Coder-32B-Instruct" (или более новая "Qwen/Qwen3-235B-A22B-Instruct-2507" или другая поддерживаемая).
- Use legacy OpenAI format: включить.
- Enable streaming: включить.
- Custom Headers:
   - x-project-id — идентификатор вашего проекта в Cloud.ru;
   - x-api-key — ваш API-ключ.
- Context Window Size: для Qwen3-Coder установите 32000.
- Image Support, Computer Use: выключить.
Но крутость Roo Code прямиком зависит от продвинутости используемой модели. Cloud.ru предоставляет инференс для разных популярных опенсорсных моделей — есть из чего повыбирать.
Опыт с Cloud.ru
Я пользуюсь Cloud.ru уже несколько лет. Не считая мелких нюансов, нареканий у меня почти нет. Плюс они периодически радуют скидками и раздают бесплатные виртуалки, так что все нюансы компенсируются ценой. 🙂
Но с Evolution Foundation Models я по сути стал early adopter'ом и собрал полную коллекцию граблей. Про их новый сервис я узнал в конце апреля и сразу же кинулся его тестировать. Но ничего не вышло — в техподдержке мне намекнули, что ещё не всё готово.
В конце мая пришло долгожданное письмо, в котором мне сообщили, что теперь всё точно готово (включая документацию). И я погрузился в эксперименты.
API Cloud.ru совместим с OpenAI, но не совсем. Ключевая разница — обязательные заголовки `x-project-id` и `x-api-key`. Именно из-за этого для Home Assistant не подойдет готовая «универсальная» интеграция вроде Extended OpenAI Conversation — пришлось писать свою. 😉
Выбор моделей у Cloud.ru весьма неплохой, но лично мне интересны только две:
1. Llama 3.3 для моих ассистентов (Тамагочи и Скрепыша). По сравнению с Yandex Cloud, у Cloud.ru гораздо более гуманный ценник на эту модель.
2. Qwen2.5-Coder: собственно, та самая кодовая модель, которую я хотел попробовать вместе с Roo Code.
В итоге всё сошлось идеально: я хотел потестировать Roo Code, мне нужно было написать интеграцию для Cloud.ru, и в конце концов я написал её… используя модель из Cloud.ru и Roo Code! 😀
Qwen2.5-Coder: сильные и слабые стороны
Про саму модель Qwen2.5-Coder я знаю не так много. На сайте заявлено, что флагманская 32B версия сопоставима с GPT-4o, демонстрирует сильные навыки в программировании, математике и общих задачах, позиционируется как практичный код-ассистент. Звучит многообещающе!
За основу своей интеграции я взял родной компонент OpenAI из Home Assistant. Поскольку API Cloud.ru совместим с OpenAI, мне по сути нужно было внести минимальные изменения: поменять base URI и добавить нужные HTTP-заголовки.
И тут меня ждало первое разочарование: Qwen2.5-Coder споткнулся на, казалось бы, элементарном — ребрендинге названий классов и переменных. Класс `OpenAIConversationEntity` он «переименовал» в `Cloud.ru Foundation ModelsConversationEntity` — прям вот так, вместе с точкой и пробелами. Хотя справедливости ради, даже 70B дистиллят DeepSeek тоже с этим не справился.
После нормального DeepSeek и Grok, Qwen немножко расстроил — работать с каким-то относительно сложным кодом по сути невозможно. Хотя простой рефакторинг Qwen выполняет вообще без проблем.
Короче пока что копипастить код в DeepSeek получается быстрее. 🙂
Но Roo Code позволяет переключаться между разными моделями. Со временем, поняв ограничения каждой, становится ясно: простой рефакторинг или рутинную кодогенерацию можно смело доверить быстрому и дешёвому Qwen, а для сложных задач лучше переключиться на что-нибудь «поумнее».
К тому же, я нашёл, где Qwen2.5-Coder действительно хорош — в генерации Jinja-шаблонов и автоматизаций для Home Assistant.
Я как-то публиковал пост про то, зачем YandexGPT нужен в Home Assistant, и одним из примеров упомянул ассистента по генерации шаблонов. На тот момент YandexGPT справлялся с шаблонами не очень хорошо. Qwen же здесь — настоящий молодец. 🙂
Поэтому даже если вы не пишете код и вам не нужен никакой Roo Code, то Qwen2.5-Coder может вам пригодиться в качестве ассистента по Jinja.
Вместо заключения
Честно говоря, не знаю, для кого я написал этот пост. 😀 Просто меня взбудоражили новые технологии и я решил поделиться своим опытом.
Но надеюсь, что для кого-то из вас этот опыт окажется полезным или просто интересным. А если у вас есть свои находки и лайфхаки, то буду рад почитать о них в комментариях.
Subscription levels3

☕ На чашку кофе

$1.68 per month
Безвозмездная поддержка автора — для питания организма, преобразующего кофе в статьи и код.
 
В благодарность за поддержку:
➕ Доступ к закрытым статьям.
➕ Лаборатория (чат) в Telegram.
+ chat

🌯 На гирос

$3.4 per month
По вашему желанию можете оформить подписку на чуть большую сумму.
 
В благодарность за поддержку:
➕ Доступ к blueprint'ам для Home Assistant + Easy Mesh to Telegram.
+ chat
Subscription Spots Are Limited

🍕 На пиццу

$8.4 per month
Можете оформить подписку на еще большую сумму.
 
В качестве «спасибо»:
➕ Личная консультация 1 раз в месяц (до 30 минут).
➕ В рамках консультации возможен созвон, помощь по удалёнке, помощь с написанием шаблонов и автоматизаций.
 
Напишите в Telegram-чат для получения подробностей.
+ chat
Go up