Найти тему
КиберMamedov 💻🔥

Получаем список популярных персонажей на базе API нейросети Character AI

Важно! Если Вы не читали предыдущей статьи, то понять данный материал будет очень сложно. Обязательно прочитайте первую статью и возвращайтесь сюда.

У нас сейчас есть определенная особенность в нашей программе, там выбран один персонаж, который зашит в переменной char.

Принудительно присвоенное значение идентификатора персонажа
Принудительно присвоенное значение идентификатора персонажа

Если помните, то в документации предлагался input, где необходимо было при каждом запуске программы вводить идентификатор персонажа. Я думаю, что это совсем плохая идея. У меня есть предложение, сделать чат-рулетку, где случайно выбираются персонажи, которые общаются с тобой на разные темы, в соответствии со своей легендой.

В таком случае необходимо получить список идентификаторов персонажей, которые есть на сервисе character.ai. Получить абсолютно всех будет достаточно сложно, но самых популярных можем. Как это сделать? Все просто, идем в документацию библиотеки.

Скрин с сайта документации
Скрин с сайта документации

Есть специальный метод, который называется trending(). Он возвращает словарь с одни ключом, значением которого является список.

Структура возвращаемого словаря
Структура возвращаемого словаря

Предлагаю разгрузить наш основной файл и создать отдельный файл под названием information.py в папке с проектом. Там создадим класс под названием Trending. Также создадим метод для инициализации объекта и объявляем аргумент, который будет принимать экземпляр класса PyCAI. Назовем его также, как и в основном файле client. Сам метод будет содержать две строки:

Создание класса и метода инициализации
Создание класса и метода инициализации

В первой строке данного метода мы получаем, посредством метода trending заявленный ранее словарь. Во второй строке создается поле list_characters, в которое присваивается значение от метода get_list_characters.

Можно было без него и сразу в этой строке писать, но давайте держать код в чистоте, чтобы дальше можно было его легко читать. Поэтому создаем отдельный метод.

Содержимое метода get_list_characters
Содержимое метода get_list_characters

В данном методе мы просто возвращаем список, который доступен по ключу trending_characters, а сам находится в поле info_characters.

Инициализация закончилась, экземпляр класса будет создан успешно. А теперь нужно задуматься о том, чтобы получить случайный элемент. Поэтому нам необходимо подключить библиотеку random.

Подключение библиотеки random
Подключение библиотеки random

Теперь можно смело приступать к созданию метода, который возвращает идентификатор случайного персонажа. Давайте так и назовем метод get_random_character_id.

Его задача получить случайный элемент, а затем взять из этого элемента значение, которое хранится под ключом external_id.

Содержимое метода get_random_character_id
Содержимое метода get_random_character_id

На этом создание данного класса можно считать законченны. Теперь переходим в наш основной файл и импортируем класс Trending.

Подключение класса
Подключение класса

Теперь создаем его экземпляр.

Создание экземпляра класса
Создание экземпляра класса

В заключении присваиваем случайный идентификатор вместо того, который у нас сейчас введен руками.

Присваиваем идентификатор случайного персонажа
Присваиваем идентификатор случайного персонажа

Давай проверять. Запускай и сразу спрашивай кто этот персонаж и пусть он представится. Так как ты теперь не знаешь кто это такой.

Запуск со случайным персонажем
Запуск со случайным персонажем

Очень хорошо, все работает, но есть небольшая проблема. Каждый раз нам необходимо вводить руками вопрос о том, чтобы персонаж представился и рассказал о себе. Я предлагаю сделать так, чтобы при запуске персонаж сразу сказал о себе. Сделаем это простым действием: перед бесконечным циклом отправим ему заранее подготовленное сообщение и выведем ответ.

Просим бота представиться
Просим бота представиться

Теперь запускаем и смотрим.

Персонаж вначале здоровается с нами, а затем программа просит нас ввести текст.
Персонаж вначале здоровается с нами, а затем программа просит нас ввести текст.

Отлично! Все работает. Теперь у нас есть мини чат-рулетка. Продолжение будет в следующих статьях.

Если понравилось, подпишись на канал и побалуй автора лайком и добрым комментарием.