Грок, читай инструкцию!
Вчера у меня был третий подход к боту, который постит фотки из космоса в телеграм канал, и, надо признать - этот подход оказался самым сложным.
Когда я садился за комп и открывал вкладку с Grok 3, у меня был лёгкий, позитивный настрой, ведь задача вовсе не казалась мне сложной.
Но, по порядку. Наш бот уже качает картинки из API NASA на ежедневной основе, лепит на них QR код с линком на ТГ канал и выкладывает в этот самый канал. Недавно мне показалось, что этого мало и нужно проделать такой фокус: брать из API описание картинки, которое там на английском, скармливать ассистенту ChatGPT, который красивенько переведёт это описание на русский и выложить картинку в канал с хорошим описанием того, что на ней собственно изображено.
Первым делом создаём ассистента в ChatGPT. Это дело нехитрое, но поскольку API платный, смотрим на цены разных моделей и глаза разбегаются. А тут OpenAI не так давно новых моделек подвёз, так что пришлось разбираться. В итоге мой выбор пал на gpt-4.1-mini. Перевела мои тестовые тексты прям на уровне gpt-4o, при этом она конкретно дешевле. Есть ещё gpt-4o-mini, которая ещё дешевле, но качество прям "не очень". Поэтому gpt-4.1-mini идёт в настройки ассистента.
Самое смешное, что я спросил у ChatGPT какая модель лучше, так он сказал, что gpt-4.1-mini это древняя хрень, на которую приличный человек сегодня даже смотреть не будет. Хотя по факту это новенькая модель которую дней пять назад зарелизили. Вообще, я никогда раньше не имел дела с API ChatGPT, но пребывал в полной уверенности, что Grok в курсе что там к чему, да и вряд-ли там что-то мудрёное. Как выяснилось - зря.
Поставил Гроку задачу, он всё понял, сказал, что мы быстренько со всем разберёмся, показал мне план действий, который мне показался чётким, правильным и вообще отличным. Всем бы такой план перед стартом задачи иметь! Вот идёт он по шагам, я что-то комментирую, что-то прошу переделать, с чем-то, наоборот, сразу соглашаюсь. Довольно быстро, может минут за 30, всё сделали. Проверяю - неа, не работает. API ChatGPT возвращает Error 400 - Bad Request.
Ну тут понятно - вряд ли стоит показывать ошибку Гроку, надеясь, что его осенит. Ведь ошибка на стороне API, без уточнений что именно не так в запросе. Неправильный запрос и точка! Открыл доки ChatGPT по их API и тут же закрыл обратно - не собираюсь я столько читать. Решил зайти с другой стороны - у них есть playground, через который можно проверить как работает ассистент, а может там есть обращения к API? Мысль оказалась удачной - были там вызовы API. Это что ж копировать их в Postman что-ли? Ну нет... Нашёл готовую Postman коллекцию. Форкаю её к себе, настраиваю ключи доступа, за час разобрался как этот API на самом деле работает. Но самому понять мало - надо написать инструкцию Гроку, чтобы он тоже понял весь воркфлоу и воплотил его на c#.
А воркфлоу там немного мудрёный:
1. Создать тред со своим api ключом
2. В этот тред закинуть сообщение с текстом, который должен уйти к ассистенту. Но это только начало.
3. Запустить тред на исполнение. Только тут мы указываем ID ассистента, который должен этот тред обработать.
4. Проверяем статус выполнения треда. И повторяем эту проверку, пока статус не станет "completed"
5. И только сейчас можно прочитать из треда результат работы ассистента - наш перевод.
Расписал я всю эту историю нашему ИИ - по шагам, с линками, с запросами, с респонзами, с хедерами... В общем, жаль у меня не было такой инструкции раньше.
Он прочёл, признался, что не думал, что всё так сложно, но распланировал изменения в сервисе переводов, быстренько накатал мне обновлённый класс. Я это дело запускаю - и... Error 400 Bad Request.
Я тут нервничать начинаю, понятно, что теперь нужно заглянуть в содержимое запроса - проверить чем он отличается от оригинального, из Postman. Запускаю Fiddler, пробрасываю на него запросы от бота, смотрю что там на самом деле уходит в API ChatGPT и вижу, что Грок решил заменить в хидере OpenAI-Beta значение assistants=v2 на assistants=v1. Не стал я его спрашивать зачем он так сделал, видимо хотел как лучше. Ладно, я сам поправил, всё завелось, тексты переводятся, картинки с подписями, красота.
ИИ справился с написанием кода. Но, ребята, это не похоже на вайб кодинг, про который сегодня столько разговоров. Я прям вложился. Разбирался с API, писал инструкцию, дебажил, разбирал содержимое запроса, отловив его фидлером... В принципе в этом для меня ничего нового нет - я всю свою жизнь так работаю. Что же касается написания программ ИИ без чуткого руководства опытного девелопера - ну пока рановато. Код он пишет отлично, когда ему поставишь конкретную задачу. Очень хорошо, что сейчас можно подогреть его инструкциями и тогда он может использовать эти новые знания, ещё недавно это было малореально.
Так что, товарищи разработчики, не волнуйтесь завтра он нас не заменит. Послезавтра тоже. А вот через месяцок.... посмотрим!
Перед публикацией статьи, я дал её на вычитку самому Гроку, результат был, прямо скажем, неожиданный. Он понаходил опечатки, дал дельные советы где лучше подсократить, где стоит подумать над формулировками, в общем молодец. Но! Максимум внимания он уделил тому, как я описывал его ошибки. Он прям топил за то, чтобы я переформулировал, чтобы он не выглядел профаном (его слова).
Когда мы закончили я ему задал вопрос о том, реагировал бы он так же, если бы моя критика была направлена в сторону ChatGPT или DeepSeek. Как вы думаете, что он ответил?
Самые нетерпеливые могут посмотреть его ответ тут.
Готовый код здесь - https://github.com/migihajami/TelegramNasaBot
Мой тг канал тут - .net nomad