
Прямого доступа к сервисам OpenAI в РФ, как известно, нет. Для работы с ChatGPT многие пользуются телеграм-ботами, чаще всего бесплатными. В основном, запросы к ним — непритязательные. Пользователи практикуются в английском и, не раздражая никого пробелами в орфографии, получают списком все свои ошибки. Можно задавать ботам относительно простые вопросы.
Но, боты, в подавляющем большинстве работают на версии GPT3.5, возможности которой ограничены. Поэтому даже на хороший, но не релевантный запрос можно получить очень странный ответ, который начинается чем-то вроде «Да, я просто языковая модель и не могу сделать того, что вы от меня хотите...» и т. д. Нельзя забывать и о том, что телеграм-бот едва ли сможет хранить контекст, размером более 4000 токенов.
Поэтому в некоторых случаях удобнее использовать именно веб-сервисы, у них функции побогаче.
Есть, конечно, телеграм-боты с ChatGPT4 но и с теми и с другими — много проблем. Они ограничивают вас лимитом по 10-20 сообщений в сутки, просто забиты рекламой, постоянно требуют подписку на новые телеграм-каналы, а иногда даже на их группы или регистрацию в других ботах. Ваше сообщение может не конца быть передано модели, и вы об этом не узнаете. Чат просто «подрежет» лишнее.
«Родной» веб-интерфейс позволяет хранить не один контекст диалога, а несколько. Можно также возвращаться к ним потом, продолжать с ними работать, переключаться с одного с одного на другой. У ботов этого функционала, естественно, нет. Хорошо, что телеграм сохраняет, хотя бы историю запросов. Работа в таком режиме, если её ещё можно назвать работой, довольно неудобна.
Но и это — не все «минусы». Мало того, что все данные профиля и переписка сохраняются Open Ai и серверами «Телеграма» или его приложениями, чат-бот может специально создан для того, чтобы их у вас украсть и, при прочих равных об этом не стоит забывать.
Существуют доступные разработки, основанные на других моделях ИИ. Например, Google Bard ищет ответ в выдаче Google, Perplexity AI использует цитаты, Anthropic Claude пересказывает видео Youtube и различные тексты, длина которых не превышает 75 тысяч слов. Но это — экспериментальные модели и с ними пока всё сложно.
В разной степени и оригинальный ChatGPT включён в различные доступные ресурсы. Но в таком случае он не всегда может быть полезен. Например, на сайте Bing.com, его функционал урезан до предела. На запрос о написании несложной программы он ответил общими словами, вроде: «…Создание такого приложения может быть сложным процессом, но есть множество ресурсов в Интернете, которые могут помочь вам начать.»
Словом, для регулярной работы с ИИ лучше найти подходящий сервис.
Веб-сервисы: грузите апельсины токены бочками
Одно из важных, эмпирически выведенных правил, которое стоит учитывать при пользовании платными ресурсами, предоставляющими доступ к искусственному интеллекту (хорошие веб-сервисы — все платные), заключается в том, что один токен обычно соответствует примерно четырём символам стандартного текста на английском языке или трём четвертям слова. Сто токенов — это около 75 слов.
Другой тонкий момент связан с тем, что ChatGPT разрабатывался для английского языка и (при равном контексте) способен запоминать и обрабатывать примерно в пять раз больше информации на английском, чем на русском языке. Это можно проверить с помощью токенизаторов (при этом надо помнить, что для GPT-3.5 и 4 они различны).
Сервисов, предоставляющих доступ из РФ к услугам искусственного интеллекта уже довольно много. Некоторые прямо дублируют друг друга, некоторые копируют интерфейс OpenAI. Лишь немногие идут своим путём, добавляя пользователям удобства и разных фич.
TheB.AI

Вполне корректно отвечает на поставленные вопросы. Использует актуальную информацию и данные. Предоставляет доступ к другим моделям искусственного интеллекта и, по существу, является сервисом. К сожалению, в настоящее время доступны ещё далеко не все анонсированные возможности. Поэтому бóльшая часть моделей неактивна. Сервис даёт возможность пробного использования. Какую-то практическую пользу от него можно получить, вложив хотя бы 1000₽ и более. Суточный лимит: пять запросов. И это не российский сервис, так что могут возникнуть сложности с оплатой.
GPTunnel

Добротный веб-сервис, предоставляющий доступ к ChatGPT и популярному ресур��у для генерации изображений Midjourney. Предлагает ряд ролей, которые разбиты по разделам: графика, аудио, учёба, разработка, жизнь, контент. На бесплатном тарифе можно воспользоваться услугами ChatGPT 3.5. Стоимость различается в зависимости от модели чата и вида сообщения: всё просто, лаконично и понятно. Оплачиваются только использованные ресурсы, что очень подкупает. В дальнейшем для генерации кода будем использовать его.
ChatGPT.ru

Создатели сервиса не мудрствуя лукаво дали ему наименование оригинала. Функционал тот же, что и у модели ChatGPT — создание и анализ текстовой информации. Сервис генерирует вполне адекватные тексты. Его функционал предполагает и создание изображений, но тут не стоит ждать «вау-эффекта»: вместо нужных картинок появляется какая-то ерунда. Версия ChatGPT — неизвестна. Лимит — до десяти запросов в сутки. Сервис (или, скорее чат) бесплатен.
GPT-OPEN

Минималистичный интерфейс намекает на простоту использования. На первом плане — роли, которые можно использовать: программист, копирайтер, маркетолог — и т.д. В премиум-версии доступна возможность генерации изображений. Анонсирована возможность создания аудио и видеофайлов. Стоимость премиум-аккаунта — 1000 рублей. Как и предыдущий ресурс, это, скорее не сервис в полном смысле слова, а больше онлайн-чат.
Нейро Текстер

Анонсирован как сервис, но возможностей не так уж и много. Генерация картинок — никудышная. Лимит составляет 1100 токенов, цена — 299₽/мес. Безусловно, ChatGPT4 это неплохо — но от «сервиса будущего» хотелось большего. Хотя цены доступные.
Chad

Есть доступ к генерации изображений. Но эта функция платная. Даёт возможность получить ответы на десять бесплатных запросов один раз и потом — до трёх раз ежедневно. Цены стартуют от 290₽. Есть даже приложения для смартфона под IOS и Android. Кажется, это старейший из подобных сервисов в РФ и лидер по посещениям (1,1 млн посетителей в месяц), но данные там не обновляются уже несколько месяцев. Такое ощущение, что его забросили.
GOGPT

Преимущество данного сервиса — бесплатный тариф на 60 000 токенов, позволяющий отправлять до пяти запросов ежедневно, правда, оговаривается ожидание ответов, от 10 до 30 секунд. Скорее всего, в реальности больше. Всё бы хорошо, но тариф с доступом к ChatGPT4 у этого сервиса будет стоить уже от 699₽, а генерация картинок и вовсе пока недоступна.
SEOPTIMUS

Интересный ресурс для SEO-оптимизаторов. Имеются специальные шаблоны промтов и функция проверки текста на уникальность с помощью соответствующего встроенного API. Сервис можно попробовать бесплатно, далее придётся воспользоваться тарифами, от 299₽. Этот сервис пригодится специалистам в области SEO. Обычному пользователю он будет непонятен.
Генерируем… софт
Открываем GPTunnel как наиболее оптимальный для нашей задачи сервис (по соотношению цена/качество) — и вводим необходимые запросы на родном языке. Предлагаем модели сгенерировать программу на Arduino. Она должна управлять водяным электрокотлом с тремя нагревателями, поддержать в помещении температуру от 20 до 25 ⁰C. При этом необходимо не допускать перегрева котла, периодически случайным образом отключать один из нагревателей для экономии ресурса и выводить основную информацию на дисплей. Сервис выдал следующий, неплохо документированный фрагмент, который сходу скомпилировался в Arduino IDE:
// Импортируем библиотеки #include <OneWire.h> #include <DallasTemperature.h> #include <LiquidCrystal_I2C.h> #include <Tone.h> // Подключение пинов для управления тэнами const int ten1Pin = 2; const int ten2Pin = 3; const int ten3Pin = 4; // Подключение пинов для датчиков температуры const int roomTempPin = 5; const int waterTempPin = 6; // Подключение пинов для дисплея const int lcdAddr = 0x27; const int lcdCols = 16; const int lcdRows = 2; // Подключение пина для звукового сигнала const int speakerPin = 7; // Инициализация объектов для работы с датчиками температуры OneWire oneWireRoom(roomTempPin); OneWire oneWireWater(waterTempPin); DallasTemperature roomTempSensor(&oneWireRoom); DallasTemperature waterTempSensor(&oneWireWater); // Инициализация объекта для работы с дисплеем LiquidCrystal_I2C lcd(lcdAddr, lcdCols, lcdRows); // Инициализация объекта для работы со звуковым сигналом Tone speaker; // Пороговые значения температуры для включения и выключения тэнов const float targetTemp = 25.0; // Желаемая температура в помещении const float minTemp = 20.0; // Минимальная температура в помещении для включения тэнов const float maxTemp = 25.0; // Максимальная температура в помещении для выключения тэнов const float waterMaxTemp = 85.0; // Максимальная температура воды в котле // Флаги для отслеживания состояния нагревателей и перегрева котла bool ten1On = false; bool ten2On = false; bool ten3On = false; bool waterOverheated = false; void setup() { // Инициализация пинов для управления тэнами pinMode(ten1Pin, OUTPUT); pinMode(ten2Pin, OUTPUT); pinMode(ten3Pin, OUTPUT); // Инициализация пина для звукового сигнала pinMode(speakerPin, OUTPUT); // Запуск коммуникации с датчиками температуры roomTempSensor.begin(); waterTempSensor.begin(); // Инициализация дисплея lcd.begin(lcdCols, lcdRows); lcd.backlight(); // Приветствие на дисплее lcd.setCursor(0, 0); lcd.print("Heating Control"); lcd.setCursor(0, 1); lcd.print("System"); delay(2000); // Очистка дисплея lcd.clear(); } void loop() { // Получение температуры в помещении roomTempSensor.requestTemperatures(); float roomTemp = roomTempSensor.getTempCByIndex(0); // Получение температуры воды в котле waterTempSensor.requestTemperatures(); float waterTemp = waterTempSensor.getTempCByIndex(0); // Включение/выключение нагревателей в зависимости от температуры в помещении if (roomTemp < minTemp && !ten1On && !ten2On && !ten3On) { ten1On = true; digitalWrite(ten1Pin, HIGH); } else if (roomTemp > maxTemp && (ten1On || ten2On || ten3On)) { ten1On = false; ten2On = false; ten3On = false; digitalWrite(ten1Pin, LOW); digitalWrite(ten2Pin, LOW); digitalWrite(ten3Pin, LOW); } // Проверка перегрева котла if (waterTemp > waterMaxTemp && !waterOverheated) { waterOverheated = true; digitalWrite(ten1Pin, LOW); digitalWrite(ten2Pin, LOW); digitalWrite(ten3Pin, LOW); lcd.clear(); lcd.setCursor(0, 0); lcd.print("Boiler Overheated!"); lcd.setCursor(0, 1); lcd.print("Water Temp: "); lcd.print(waterTemp); speaker.play(NOTE_A4, 500); } // Отображение информации на дисплее lcd.clear(); lcd.setCursor(0, 0); lcd.print("Room Temp: "); lcd.print(roomTemp); lcd.setCursor(0, 1); lcd.print("Water Temp: "); lcd.print(waterTemp); // Задержка перед следующей итерацией delay(1000); }
Это, конечно, только макет и с ним ещё придётся поработать. Пойдём дальше и попросим сервис сделать программку для удалённого управления нашим котлом через смартфон на Android, в которой будет несколько кнопок – включение-отключение котла, отображение его температуры и температуры в помещении. После нескольких вариантов запроса, я получил такой код:
import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; public class MainActivity extends AppCompatActivity { private TextView airTemperatureTextView; private TextView waterTemperatureTextView; private Button powerOnButton; private Button powerOffButton; // Предположим, что у нас есть объекты или методы для получения температуры воздуха и воды. @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); airTemperatureTextView = findViewById(R.id.air_temperature_text_view); waterTemperatureTextView = findViewById(R.id.water_temperature_text_view); powerOnButton = findViewById(R.id.power_on_button); powerOffButton = findViewById(R.id.power_off_button); // Установка обработчика нажатия на кнопку Включения котла powerOnButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Здесь можно вызвать метод или действие для включения котла } }); // Установка обработчика нажатия на кнопку Выключения котла powerOffButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // Здесь можно вызвать метод или действие для выключения котла } }); // Обновление температуры на экране (в примере предполагается использование отдельного потока // для обновления значений температур) updateTemperatures(); } private void updateTemperatures() { // Получение температуры воздуха и воды и обновление значений на экране /* double airTemperature = getAirTemperature(); double waterTemperature = getWaterTemperature(); airTemperatureTextView.setText("Air Temperature: " + airTemperature + "°C"); waterTemperatureTextView.setText("Water Temperature: " + waterTemperature + "°C"); */ // В примере выше предполагается, что у вас есть объекты или методы для получения значений температур. // Если у вас нет таких объектов или методов, вы можете заменить комментарии в коде на нужный вам способ // получения значений температур. } }
Xml-файл:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:padding="16dp"> <TextView android:id="@+id/air_temperature_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Air Temperature: N/A" android:textAppearance="?android:textAppearanceMedium" /> <TextView android:id="@+id/water_temperature_text_view" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Water Temperature: N/A" android:textAppearance="?android:textAppearanceMedium" /> <Button android:id="@+id/power_on_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Power On" /> <Button android:id="@+id/power_off_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Power Off" /> </LinearLayout>
С этим фрагментом программы работы будет ещё много. Ну, хотя бы так.
Осталось заказать Midjourney концепт интерфейса программы управления котлом:


Пожалуй, такого не нагуглишь. Для копирования, конечно, не годится, но как идея для дизайна — сойдёт.
Как видим, в общем и целом, некоторые сервисы позволяют комфортно работать как с ChatGPT, так и с Midjourney, так что можно пробовать их в деле. Тот же GPTunnel показывает очень неплохой результат.
