Каждый, кто хоть раз пытался запилить свой пет-проект с ИИ, знает эту боль: только ты раскачался, только поймал дзен, а тут бац – ценник на API. И вот твой гениальный стартап, который должен был изменить мир, тихонько помирает в зародыше, потому что «дорого».
Но что, если я скажу, что есть способ обойти эту ловушку? Что, если можно получить доступ к мощным моделям и при этом не разориться? Да, есть нюанс: придётся согласиться, что ваши данные будут использоваться для обучения этих самых моделей. Ну, а что вы хотели? Бесплатный сыр, как известно, бывает только в мышеловке. Или в датасетах для обучения ИИ.
МОЙ ТОП-3 «БЕСПЛАТНЫХ» API ДЛЯ ИИ-ПРОЕКТОВ
Я тут немного покопался и собрал для вас три варианта, которые реально работают. Проверено на себе, на своих нервах и на нескольких десятках «гениальных» идей, которые так и не взлетели (но это уже другая история).
GOOGLE AI STUDIO (GEMINI API)
Это прямой доступ ко всем моделям Gemini, включая самую «умную» Gemini-2.5-pro. Звучит круто, правда? Почти как получить ключ от всех дверей в Googleplex. Но, как всегда, есть «но». Ограничения на количество запросов в день. Для pro-версии это 100 запросов, для flash – 250. Гугл, как истинный маркетолог, любит менять эти лимиты чаще, чем я меняю носки. Так что следите за новостями. И да, без VPN тут никуда. Привет, Роскомнадзор!
2. MISTRAL LA PLATEFORME
Если вы любите скорость и не гонитесь за гигантизмом, то Mistral – ваш выбор. Модели небольшие, но шустрые. И самое главное – не нужен VPN! Это уже победа, я считаю. Лимиты тут свои: 1 запрос в секунду, 500к токенов в минуту и 1кк токенов в месяц. Вполне себе для большинства пет-проектов. Главное – не пытайтесь на нём генерировать «Войну и мир» в режиме реального времени.
3. OPENROUTER
Это такой агрегатор всего и вся. Если какой-то модели нет на Openrouter, то, возможно, она вам и не нужна. Здесь можно найти практически любую модель. Но «бесплатность» тут условная. Бесплатными считаются только те, что с суффиксом `:free` (например, Deepseek R1 или Qwen3-235B-A22B). Чтобы получить к ним доступ, нужно закинуть денег на баланс. Да-да, вы не ослышались. Закинуть, но не обязательно тратить. Меньше 10$ на балансе – 50 бесплатных запросов в день. Больше 10$ – уже 1000. Маркетинг 80-го уровня, не иначе. Зато VPN не нужен, и пополнить можно криптой. Удобно, если вы уже в теме.
ЧТО ВЫБРАТЬ И ПОЧЕМУ ВСЁ ЭТО НЕ СОВСЕМ БЕСПЛАТНО
Я, как истинный прагматик, использую все эти варианты. Когда кончаются бесплатные лимиты на одном, переключаюсь на другой. А когда и там всё заканчивается, то, скрипя зубами, перехожу на платный API. Жизнь боль, когда ты разработчик.
Самый простой и быстрый способ без VPN и танцев с бубном – это Mistral. Но если вы готовы к небольшим приключениям и хотите попробовать всё, то Google AI Studio и Openrouter тоже вполне себе варианты.
В конечном итоге, «бесплатные» API – это отличный способ начать, протестировать идею и понять, стоит ли вообще вкладываться в ваш проект. Но не обольщайтесь: рано или поздно за всё придётся платить. Либо деньгами, либо вашими данными. Выбор за вами, господа энтузиасты.
А как вы считаете, это реальная помощь для разработчиков или просто очередной маркетинговый трюк, чтобы подсадить нас на иглу ИИ-сервисов? Жду ваших мнений в комментах.
Зачем я вообще взялся за всё это? В одном небольшом розничном магазине стоит POS-система с не самыми гибкими настройками. Нужно было сделать так, чтобы продавец не видел остатки товаров в магазине — он продаёт только то, что отображается. Но! В некоторых разделах каталога остатки всё же должны быть видны. Для чего — это уже вопрос бизнес-логики.
Конечно можно было бы использовать API POS-системы, но они нагло запросили за это денег😁
Реверс инжениринг API POS-системы
Логинюсь в POS-систему под админом и открываю dev-tools браузере. Вижу, что используется reactjs, что для меня было хорошо. Перехожу в каталог. В каталоге все товары разбиты по категориям, открываю категорию и вижу, что данные приходят по Ajax. Соответственно, если данные приходят через ajax, то на бэкенд должен отправляться какой-то ключ аутентификации (jwt, access-token и т.д.). Это в общем база при HTTP запросах. Остаётся понять, как это работает.
-H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36' \
-H 'x-calledmethod: Nomenclature.List' \
-H 'x-originalmethodname: Nf32Jkl4342nafi4=' \
-H 'x-requested-with: XMLHttpRequest' \
-b $'lang=ru; region=RU; DeviceId=qqqq-qqqq-qqqq-qqqq-qqqq; _ym_uid=123; _ym_d=1234; ... и далее много чего в куках' \
--data-raw '{"jsonrpc":"2.0","protocol":7,"method":"Nomenclature.List","params": ... и далее большой json в теле запроса'
Выполнил в консоли запрос и пришёл необходимый мне ответ от POS-системы. Это было небольшой успех, т.к. значит, можно отравлять и получать запросы.
Изучив curl запрос, предположил, что данные для аутентификации передаются через cookie. Удалил всё лишнее и выполнил запрос
curl 'https://my-pos-system.ru/service/?x_version=25.2155-162.10' \ -b $'lang=ru; region=RU; DeviceId=qqqq-qqqq-qqqq-qqqq-qqqq; _ym_uid=123; _ym_d=1234; ... и далее много чего в куках' \ --data-raw '{"jsonrpc":"2.0","protocol":7,"method":"Nomenclature.List","params": ... и далее большой json в теле запроса'
В ответ пришел 403 HTTP код. Значит удалил, что-то лишнее. Начал потихоньку пробовать возвращать параметры в curl и через пару минут понял, что не хватает заголовка -H 'content-type: application/json; charset=UTF-8'
Добавил в запрос и выполнил
curl 'https://my-pos-system.ru/service/?x_version=25.2155-162.10' \ -H 'content-type: application/json; charset=UTF-8' \ -b $'lang=ru; region=RU; DeviceId=qqqq-qqqq-qqqq-qqqq-qqqq; _ym_uid=123; _ym_d=1234; ... и далее много чего в куках' \ --data-raw '{"jsonrpc":"2.0","protocol":7,"method":"Nomenclature.List","params": ... и далее большой json в теле запроса'
Необходимый ответ пришёл. Это успех. Значит можно переходить к кодингу.
Ответ в JSON там очень большой, подробно разбирать его не будет, это не сильно интересно. Много полей с названиями полей f, a, t и т.д., но опытным путём нашёл какие поля необходимы. Мне нужно было найти только название номенклатуры, описание и остаток. Кто в своей юности использовал ArtMoney для получения бесконечных жизней и ресурсов в играх меня поймут. Взял первоначальный ответ, потом поправил в необходимые параметры в POS-системе и снова сделал запрос. Нашёл поля, которые изменились, они то мне и нужны.
Стек
К выбору стека исходил из своих навыков. Можно было конечно взять C++ и начал писать, но это не мой случай. Нужно быстро и чтобы я мог поддерживать это. Оценив свои навыки PHP, Golang, JS (TS), немного reactjs, начал гуглить, что вообще есть. Есть отличный фреймворк electron на котором написано ряд популярных приложений (slack, postman).
В общем взял electron начал создавать проект и компилировать его. Из плюсов, он очень мощный, можно копилить сразу под разные платформы. Развернул проект, начал компилить и у меня упорно не хотела происходить сборка. Потратив вечер на борьбу с electron, не хотел тратить много времени, решил погуглить ещё варианты. Нашёл фреймворк Wails на котором можно писать на Golang + JS (TS). Развернул и скомпилировал пустой проект за 5 минут. Было принято решение использовать его.
По итогу экспериментов на пустом проекте у меня получился такой стек:
Golang — backend-прослойка и основа приложения.
Wails — фреймворк для сборки desktop-приложений с UI на web-технологиях и backend на Go.
React — библиотека для построения интерфейсов.
TypeScript — типизированное надмножество JavaScript, упрощающее разработку и отладку.
MUI (Material UI) — готовый набор компонентов интерфейса в стиле Material Design.
Такой стек позволяет быстро разрабатывать современное desktop-приложение с мощной логикой на Go и удобным интерфейсом на React.
Инициализация wails
Первым шагом создадим базовый каркас desktop-приложения с использованием Wails
Установка Wails
Перед установкой убедитесь, что у вас установлен Go (версия 1.20+) и Node.js. Затем установим сам CLI:
Если появилась надпись SUCCESS Your system is ready for Wails development! значит всё установилось и готово к работе
Создание проекта каркаса проекта
Создаём новый проект с шаблоном React + Vite + TypeScript:
wails init -n catalog-desktop -t react-ts
В результате структура проекта будет выглядеть примерно так:
Запуск в режиме разработки
Перейдём в директорию проекта и запустим в dev-режиме:
cd catalog-desktop
wails dev
Эта команда одновременно запускает frontend (с hot reload через Vite) и backend на Go. Любые изменения в интерфейсе или логике пересобираются автоматически.
При успешной сборке у вас откроется окно приложения
При запуске приложения сходить в POS-систему получить необходимые данные
Забегая немного вперед, после написания кода для получения необходимых данных из POS-систему я столкнулся с CORS проблемой. Как я это решал, будет позже, пока пишем код.
Накидал метод handleRequest который будет отвечать за запрос к POS-системе. Он будет использоваться при старте приложения, при автоматическом обновлении и хэндлером для кнопки ручного обновления.
Как я уже упоминал, столкнулся с проблемой CORS — политики безопасности браузеров, которая блокирует запросы между разными доменами. Из-за этого нельзя напрямую отправлять запросы в POS-систему. Чтобы обойти это, сервер должен возвращать в заголовках значение Access-Control-Allow-Origin, разрешающее такие запросы.
Чтобы обойти эту проблему, нужен был прокси. Самый простой вариант — поднять веб-сервер прямо в приложении и ходить через него в POS-систему. Но у Wails есть одна интересная фишка: можно писать логику на Go и вызывать её из JavaScript. Магия, подумал я — и решил попробовать.
Немного вайбкодинга(да я вначале хотел проверить теорию, сработает ли и только потом углубляться в технические составляющие) и у меня получился вот такой комит.
Wails для этой магии использует IPC(Inter-Process Communication). IPC (Inter-Process Communication) — это набор механизмов, позволяющих двум или более процессам обмениваться данными между собой.
В случаем wails используется WebView messaging. WebView messaging — это механизм обмена сообщениями между веб-содержимым (WebView) и внешним приложением. Он позволяет вызывать действия на стороне приложения в ответ на события, происходящие в WebView, и наоборот. При этом запрос не отправляется через сеть.
[Go] Выполняем метод MyService.Hello("World") → "Hello World"
↓
[Nativе Bridge] Возвращаем результат
↓
[Frontend] Promise resolved → "Hello World"
Сборка
Для сборки приложения достаточно выполнить команду wails build. В результате в папке build/bin будет создан исполняемый файл.
Главное преимущество Wails в том, что он не включает в себя целый браузер, как это делает Electron. Благодаря этому итоговый размер моего приложения составил всего 9.5 МБ.
Но есть нюанс — для каждой платформы (Windows, Linux, MacOS) придётся собирать приложение в её родной среде.
Итоги
После нескольких вечеров экспериментов с Electron и Wails мне удалось решить поставленную задачу. Код, конечно, пока далёк от идеала — многое можно переписать и оптимизировать. Кто-то может указать на небезопасность хранения авторизационной куки прямо в приложении, но в моём случае вопрос безопасности был не приоритетом: приложение должно работать в единственном экземпляре на рабочем месте кассира.
С развитием ИИ подход к таким задачам сильно упростился — просто набрасываешь код, запускаешь, проверяешь, как работает, и уже по ходу разбираешься, что и как. Быстро, гибко и эффективно — настоящий вайб кодинга в наше время.
❗️Популярный онлайн-переводчик DeepL ограничил доступ пользователям из России. При попытке зайти на сайт появляется сообщение: «Этот сервис недоступен в вашем регионе».
🚫 Мобильное приложение DeepL также перестало работать. Согласно сообщению в нём, переводчик недоступен из-за «технических проблем», над которыми уже работают.
💡 Пользователи в соцсетях сообщили, что DeepL ограничил не только сайт и приложение, но и доступ к переводчику через API.
Судя по сообщениям в сети, DeepL также стал недоступен и в Беларуси.
Привет! Сразу прошу, не закидывайте камнями: да, тупой, да, куда я лезу, да, "ваш_вариант". Но все с чего то начинают.
По работе возник запрос, провести маркетинговый анализ. Там материал объемом около 800 страниц, и по этой базе данных (текст, диалоги, описания) нужно провести исследование и получить ответ на около 100 вопросов. Обычно я с нейросетями работаю просто тупо через чат. Покупаю иногда подписку на GPT, но он много придумывает и очень быстро возникает что-то типо "аналитическая усталось", когда он гоняет одни и те же тезисы по кругу, и начинает додумывать и говорить общими словами. Deepseek красавчик, но постоянно ошибка сервера, и файл приходится дробить на кучу частей, соответственно уходит контекст.
Почитал на форумах, что проблему можно решить, если купить API у Deepseek-а, и с этим API будет мне счастье: ошибки сервера минимизируются, модель сможет глубоко озучать информацию внутри аналитической базы данных.
Но я нифига не понимаю ни в кодинге, ни во всех этих питонах, удавах и прочее) Я умею работать через чат, и все тут...
Подскажите мне, какие решения могут быть для моей задачи? Может быть есть сервисы, куда можно тупо вставить свой api и работать также, как я работаю чате?
API нейросети Sora Images открывает пользователям удобную возможность для генерации изображения непосредственно внутри любых своих проектов. Это может быть чат-бот для мессенджеров, таких как Telegram, стороннее приложение или интернет-сервис. Несмотря на то, что возможности нейросети Sora охватывают генерацию не только картинок, но и видеороликов, данная инструкция посвящена исключительно созданию изображений. Если же вы хотите узнать подробнее о генерации видео с помощью Sora, обратитесь к отдельному руководству по API.
Как подключить нейросеть Sora Images для генерации изображения через API
Если вы решили использовать возможности Sora Images посредством API Yes Ai, то вам необходимо предварительно получить специальный авторизационный токен. Подробную инструкцию по его получению вы найдете в нашем руководстве.
Прежде чем приступать к созданию собственного приложения с использованием нашего API, стоит протестировать весь доступный функционал Sora Images через телеграм-бота @yes_ai_bot. Также советуем тщательно ознакомиться с возможностями самой нейросети — этому вопросу посвящена отдельная статья, с которой вы можете ознакомиться.
Ключевые положения:
Любые косвенные или прямые ссылки на контент, маркированный пометкой «18+» или иным образом относящийся к категории NSFW, недопустимы. Необходимо заранее проверять запросы на наличие запрещенных слов и выражений, прежде чем направлять их к нашему API.
Нейросеть Sora Images обладает возможностью создавать изображения по текстовым описаниям (промтам), заданным на разных языках, включая русский язык.
Система позволяет задать от одного до десяти изображений в качестве визуальных референсов-ориентиров, которые будут учитываться при создании нового контента.
При использовании API с добавлением хотя бы одной картинки-референса пользователю необходимо в обязательном порядке указать промт — описание конкретных действий или изменений, которые нужно применить к отображённым на исходном материале объектам.
Sora генерирует изображения в трёх доступных пропорциях сторон картинки: 1:1, 2:3 и 3:2.
После каждого обращения API выдаёт результирующие изображения в количестве от одного до четырёх. В большинстве сценариев пользователи получат именно 4 готовых изображения; меньшее их число встречается значительно реже.
Обратите внимание! В настоящее время для работы с API Sora Images действуют определенные ограничения по количеству одновременно выполняемых задач. Эти ограничения зависят от того, какой пакет услуг подключен к вашему аккаунту:
Пакет Demo позволяет поставить в очередь не более 1 задачи одновременно.
Пакет Micro ограничен 2 задачами в очереди.
Пакет Start предусматривает очередь до 3 задач.
Пакет Standard допускает не более 5 задач одновременно в очереди.
Пакет VIP предоставляет максимальное значение — до 10 задач в очереди.
Если при использовании API Sora Images у вас возникнут дополнительные вопросы или вам потребуется расширение установленных лимитов, пожалуйста, обращайтесь в нашу службу технической поддержки по адресу: @yes_ai_support.
Как формулировать задания через промты (без использования референсов)
Пример составления запроса для создания изображений в сервисе Sora Images без референс-материалов
Параметр style = '', '0', '1' или '2,3,4' (необязательный): Задает стилистическое оформление. По умолчанию используется значение "0", то есть стиль не применяется. Доступны следующие варианты выбора:
0 – без заданного стиля
1 – случайный выбор стиля
2,3,4 и т.п. — выбор конкретного тематического стиля:
2 – Midjourney
3 – Стимпанк (Steampunk)
4 – Киберпанк (Cyberpunk)
5 – Аниме (Anime)
6 – Логотип (Logo)
7 – Фото (Photo)
8 – Изображение (Image)
9 – Кино (Cinema)
10 – Иллюстрация (Illustration)
11 – Ужасы (Horror)
12 – Детализированный (Detailed)
13 – Космос (Space)
14 – Готика (Gothic)
15 – Сюрреализм (Surrealism)
16 – Реализм (Realism)
17 – Фэнтези (Fantasy)
18 – Научная фантастика (Sci-Fi)
19 – Арт-фэнтези (FantasyArt)
20 – Комиксы (ComicBook)
21 – Пиксель-арт (PixelArt)
22 – 3D графика
23 – Линейный рисунок (LineArt)
24 – Оригами (Origami)
25 – Изометрия (Isometric)
26 – Неонпанк (NeonPunk)
27 – Аниме-премиум (PrimeAnime)
28 – Акварель (Watercolor)
29 – Поп-арт (Pop art)
30 – Каваии (Kawaii)
31 – Минимализм (Minimalism)
32 – Ретро футуризм (RetroFutur)
33 – Антиутопия (Dystopian)
34 – Реклама (Advertising)
35 – Ренессанс (Renaissance)
36 – Биомеханика (Biomechanical)
37 – Футуризм (Futuristic)
38 – Арт-деко (Art deco)
39 – Кубизм (Cubism)
40 – Мода (Fashion)
41 – RPG
42 – Диско (Disco)
43 – Архитектура (Architecture)
44 – Роскошь (Luxury)
45 – Кибернетика (Cybernetic)
46 – Ретро-кибер (RetroCyber)
47 – Биокибер (BioCyber)
48 – Сказочный (FairyTale)
49 – Пин-ап (Pin-up)
50 – Сияние (Shining)
51 – Сдвиг цветов (Color shift)
Параметр prompt = '' (обязательный): описывает задание, сформулированное пользователем. Язык описания может быть любым.
Параметр dimensions = '2:3' (необязательный): устанавливает пропорции получаемого изображения. По умолчанию установлено соотношение сторон 1:1 (квадрат). Возможные варианты:
1:1 – квадратное изображение
2:3 – вертикальное изображение
3:2 – горизонтальное изображение
Обратите внимание: по умолчанию нейросеть Sora Images часто генерирует изображения с приглушенными оттенками и недостаточной яркостью. Чтобы устранить такую особенность алгоритма, наши специалисты разработали специальный стиль обработки с названием "Shining", которому присвоен индекс "50". Настоятельно рекомендуем использовать этот стиль по умолчанию при выполнении заданий.
При этом важно сохранить удобство и свободу для пользователей, предоставляя возможность вручную отключать данный стиль в настройках. Опытные пользователи, знакомые с особенностями формирования запросов, смогут таким образом использовать оригинальную версию нейросети и избегать появления изображений с тусклой палитрой без дополнительной корректировки.
Пример успешного ответа при постановке задачи: ['success' => true, 'message' => 'OK', 'results' => ['generation_data' => [ ... ]]], 200
Как подать задание с помощью референсов
Разбираем на примере, как создавать изображения в Sora Images с использованием референсов
references_urls = [] (необязательно, массив ссылок на референсные изображения, минимум 1, максимум 10)
В это поле нужно вставлять от 1 до 10 прямых ссылок, ведущих на изображения в форматах jpg, jpeg или png, которые служат референсами для создания изображений нейросетью. Ко всем заданиям также обязательно следует добавлять подробные текстовые описания-промты, поясняющие, какое именно изображение требуется сгенерировать.
Как получить готовые изображения через Sora Images API?
Когда вы отправляете запрос на генерацию через API Sora Images, сервис возвращает вам индивидуальный идентификатор задания. Именно этот ID используется далее для получения готовых результатов, которыми выступают ссылки на скачивание изображений. Обычно их количество составляет от одной до четырёх ссылок на одно задание.
Специалисты сервиса советуют первый раз проверять готовность генерации не ранее, чем через полминуты после отправки запроса. Ранее этого срока изображения просто не успеют сгенерироваться. Последующие проверки лучше всего проводить с интервалом от 10 до 15 секунд. Это оптимальный промежуток, позволяющий сервису завершить генерацию без лишней нагрузки и обеспечить комфортный пользовательский опыт.
Перечень возможных статусов задания представлен ниже:
"status": 0 ("status_description":"in queue"): задание ожидает своей очереди на выполнение. Требуемое действие – ожидание.
"status": 1 ("status_description":"in progress"): в данный момент идет работа над заданием. Нужно некоторое время подождать, пока работа не будет завершена.
"status": 2 ("status_description":"completed"): задание выполнено успешно. Исходя из этого статуса, вы можете приступать к обработке доступных результатов. По мере их готовности будут появляться новые дочерние задания (примерный временной интервал добавления таких заданий составляет от 3 до 10 секунд).
"status": 3 ("status_description":"rejected with error"): задание отклонено из-за возникшей ошибки. В таком случае обязательно ознакомьтесь с подробным комментарием, поясняющим причину, в полях "comment_ru" и "comment_en".
"status": 4 ("status_description":"rejected due to timeout"): срок выполнения задания вышел, и оно было автоматически отклонено системой. Рекомендуется повторно отправить задание.
Как разобрать JSON-данные, полученные через API от Sora Images при пакетной генерации (batch) изображений
Рассмотрим конкретный пример ответа API, который возвращается при запросе статуса задания по идентификатору родительского задания.
{ "success": true,// данные успешно получены "message": "OK", "results": { "generations_data": { "info": { "count": 4, // количество изображений в задании "max_id": 457, "limit_offset": 0, "limit_count": 20, "sort_field": "id", "sort_order": 1, "id_offset": 2147483647 }, "data": [ { "id": 454, // id первого задания в пачке (это ID родительского задания) "user_id": 1234567890, // id пользователя, подавшего задание "tariff_id": 30, // id тарифа пользователя, подавшего задание, 30 - VIP "model_id": 1, "type": 53, "styles": [], // массив стилей, использованных для генерации изображений "settings": { "model_alias": "sora_images", "sora_dimensions": "1:1", "sora_references_urls": [ "https://api.yesai.su/tests/face1.jpeg", "https://api.yesai.su/tests/face2.jpeg" ] }, "child_ids": [ // список дочерних заданий, от 1 до 3 штук 455, 456, 457 ], "parent_id": 0, "result_url": "https://yesai.su/files/sora/generations/1234567890_174741769...", ссылка на скачивание первой картинки из пачки заданий "result_type": "image", "result_data": { "image_width": 1024, "image_height": 1024, "image_mime_type": "image/png" }, "comment_ru": "", // комментарий к заданию на русском языке, будет заполнен только при ошибке генерации со статуосм 3 "comment_en": "", // комментарий к заданию на английском языке, будет заполнен только при ошибке генерации со статуосм 3 "accounting": { "total_cost": 0.7, "spent_points": 0, "spent_rpoints": 0.7, // стоимость генерации этого изображения из пачки в монетах, все генерации в Sora Images оцениваются в монетах "spent_repost_points": 0, "spent_balance": 0, "spent_rbalance": 0, "remaining_points": 1832.87225, "remaining_rpoints": 9809.445587639999, // остаток монет на балансе заказчика в помент выполнения задания "remaining_repost_points": 0, "remaining_balance": 0, "remaining_rbalance": 22106.49481 }, "language": "", "prompt": "текст вашего промта", // текст промта, по которому сгенерировано это изображение "prompt_en": "", "prompt_language": "", "status": 2, // статус задания, 2 - успешное выполнение генерации "status_description": "completed", // текстовое описание статусы задания "start_at": 1747417691, // время начала выполнения задания в формате Unixtime "finish_at": 1747417696, // время завершения выполнения задания в формате Unixtime "created_at": 1747417518, // время подачи задания в формате Unixtime "updated_at": 1747417792, "deleted_at": 0 }, { // здесь будет находиться блок с данными о второй генерации в пачке. Блоки JSON идентичны тем, которые были описаны выше. }, { // здесь будет находиться блок с данными о третьей генерации в пачке. Блоки JSON идентичны тем, которые были описаны выше. }, { // здесь будет находиться блок с данными о четвертой генерации в пачке. Блоки JSON идентичны тем, которые были описаны выше. } ] } } }
Если при обращении к API сервиса Sora Images вы получили JSON-ответ, содержащий только одну ссылку в разделе "result_url", это означает, что остальные изображения еще находятся в процессе генерации. Для получения оставшихся ссылок следует выполнять повторные запросы каждые 10–15 секунд. При этом мы рекомендуем ограничиться 7 попытками. Если через 50–70 секунд после первой ссылки новые изображения не появились, значит, нейросеть не смогла создать дополнительные картинки. Аналогично иногда нейросеть может выдать вместо стандартных 4 изображений только 2 или 3.
В случае невозможности выполнения генерации, поле статуса запроса ("status") будет содержать цифру 3, свидетельствующую об ошибке. Тогда важно сообщить клиенту разъяснение причин ошибки, которое представлено в описании блоков "comment_ru" (на русском языке) и "comment_en" (на английском языке). Такой подход позволяет предупредить повторные ошибки, заранее информируя пользователей о потенциальных проблемах.
Наиболее распространенной причиной отказа в генерации является нарушение правил использования сервиса Sora Images. Особенно строго запрещена генерация NSFW-контента ("Not Safe For Work" — неподобающий контент). Для предотвращения блокировки API обязательно уведомите клиентов о запрете отправки подобных запросов. Игнорирование этих рекомендаций может привести к ограничению доступа к API-платформе.
Как происходит обработка заданий на генерацию изображений в Sora Images, отправленных через API Yes Ai?
После того как вы через API отправили запрос на создание изображений в нейросети Sora Images, успешно выполненное задание предоставит вам индивидуальные ссылки. По этим ссылкам вам станут доступны изображения форматов PNG либо JPG. Однако обратите внимание, что данные файлы хранятся на сервере всего 60 минут. Поэтому, не откладывая, сразу скачайте полученные картинки на собственный сервер.
Если у вас возникнут любые дополнительные вопросы, служба технической поддержки оперативно поможет решить их в мессенджере Telegram: @yes_ai_support.
Оригинал инструкции по подключению нейросети Sora Images для генерации изображения через API - ПЕРЕЙТИ
Сегодня пришел директор и сказал, что теперь я счастливый обладатель 25 сообществ ВКонтакте и что в них надо будет постить инфу, которая пришла из министерства. Именно постить, то есть от имени сообщества. Дело это не сложное, но времязатратное.
Я далёк от программирования, самое большое мое достижение - загуглить макрос, вставить его в эксель и нарисовать кнопку для запуска.
Вот теперь появилась задача посложнее, надо сделать так, чтобы текст с картинками постился во все мои группы. Загуглил решение, предлагают это делать через api. Нашел варианты кода для node.js, создал standalone приложение, установил vs code, вроде пока понятно. Но главный затык в том, что я никак не могу понять принцип работы. В код необходимо вставить access token. И вот дальше все.
Я нахрен не понимаю, куда писать эти команды для получения токена ( посмотрел видео, там говорят прямо в адресную строку, но в документации ВК написано, что это больше не работает).
Я нахрен не понимаю что вообще такое этот токен и для чего он нужен.
И наконец я нахрен не понимаю, раз этот токен действителен только час, его каждый раз получать надо?
В общем, если кто-то может, объясните на пальцах.
УПД. Надо было сразу написать, чтобы было понятно: 1. Я работаю в бюджете 2. Моя работа не связана с точными науками и программированием, я гуманитарий. 3. Это не спам, это тупые управленческие решения министерства. 4. Платить не будут, даже если напишешь министру. Вот лишить премии за не выполнение КПИ могут всю контору. 5. Отказаться нельзя, чисто по-человечески (да, у нас поселок маленький, здесь это работает).
Они прилетели, чтобы изучать нашу планету, но оказалось, что без защитной оболочки им тут не справиться. Но в ваших силах им помочь! Открывайте игру с тамагочи и сделайте электронного питомца счастливым. Это не так просто, как было в детстве. Если справитесь, получите награду в профиль.
Я потратил на неё 1851₽ и 20 часов, чтобы вам не пришлось.
Я аналитик-самоучка с опытом ±3 года. Поэтому, иногда, подогреваемый синдромом самозванца, нет-нет да и посматриваю каких-то блогеров вкатывающих в аналитику.
От них и узнал об этой книге. Реально, каждый друг с другом не пересекается, но все в какой-то момент причисляли книгу к категории “ЭТО БАЗА!”.
Соблазнился на тайные магические знания сразу, но к прочтению приступил только спустя 1,5 года.
Если серьёзно, по делу и по содержанию, то книгу рассматриваю с 3-х позиций, т.к. за свой скромный стаж успел поработать в большом-большом банке, среднем телекоме и маааленькой медицине.
Целиком читать книгу рекомендую только для общего ознакомления с тем какие задачи бывают у разработчиков или если в планах стать архитектором или разработчиком. В реальности, если вы новичок, даже за год, вам навряд ли попадутся задачи хотя бы по трети глав книги.
Это связано с тем что в больших корпоратах за вас уже давно подумали и установили свои золотые стандарты разработки\архитектуры. Попытаться изменить что-то конечно можно, но сложно, т.к. изменение придётся обосновать как-то объёмнее фразы “Нууу, в той книжке написано что вот так правильно”.
В маленьком стартапе, скорее всего, большая часть знаний просто не применима. Если и применима, то всё будет нацелено на то чтобы сделать максимально быстро и дешево, лишь бы деньги приносило, даже если это будет велосипед из костылей.
А вот в средней, в которой я нахожусь сейчас, мне удалось протолкнуть изменение касательно проектирования API, в т.ч. оперируя данной книжкой. Поскольку занимаемся разработкой продукта с нуля, то это даже существенно повлияло на скорость дальнейшей разработки.
Большую часть книги я прочитал из соображения “Блин! Ну не зря же я её купил!”. И даже при таком раскладе время было потрачено не зря, т.к.:
Часто ловил себя на мысли “О! Оказывается вон оно как работает!)”;
В книге много UML диаграмм - некоторые моменты начал применять в своих задачах, т.к. увидел что можно улучшить;
Подробнее ознакомился с подходами к версионированию, пагинации и мягкому удалению. Что кстати, т.к. скоро по ним предстоят задачи;
Из минусов могу отметить:
Много воды;
Лишние или повторяющиеся из раза в раз примеры;
А если моё мнение не повлияло на ваше желание получения каких-то тайных знаний, то рекомендую читать книгу также как “Разработка требований к программному обеспечению” - только главу по теме, с которой вы впервые столкнулись прямо сейчас. Задачу за вас она не сделает, но подскажет куда смотреть при выполнении.