Этот проект представляет собой Telegram-бота, имеющего возможность использовать все модели ChatGPT, включая последнюю ChatGPT-4o-mini. Однако функционал реализован только под текстовые модели. Возможно, чуть позже будет добавлена поддержка DALL_E_3 и т. п.
Бот автоматически обрабатывает сообщения пользователей и сжимает текст беседы, чтобы обеспечить оптимальную производительность и взаимодействие. Если выбрана модель ниже ChatGPT-3.5-instruct, бот переключается на старый режим обработки входящего текста. Идет перевод текста с выбранного языка на английский с помощью YandexTranslate, затем запрос передается на английском языке в OpenAi, а возвращаемый ответ уходит обратно в YandexTranslate для перевода на выбранный язык и последующего отправления в Telegram-чат, откуда и был сделан запрос. Это сделано для того, чтобы старые модели, которые преимущественно обучались на английских текстах, могли отвечать качественно на вашем языке, иначе они могут показаться слабоватыми.
-
Нажмите или введите:
/start
-
Затем бот спросит пароль, введите:
пароль
-
Затем бот попросит ввести имя. Можете придумать что-нибудь смешное и начинать пользоваться :)
- Язык программирования: Java
- Библиотеки:
- Telegram Bots API
- Hibernate
- YandexTranslate API
- OpenAI API
- СУБД: SQL (например, PostgreSQL, MySQL)
- Хранение контекста беседы: Бот хранит историю общения с пользователем в реляционной базе данных, что позволяет сохранять контекст для более качественного взаимодействия.
- Сжатие текста: По умолчанию, каждые 3 сообщения бот автоматически сжимает текст беседы в 1.5 раза для оптимизации хранения и обработки. Эти константы можно настраивать под ваши нужды.
- Конфигурация контекста: По умолчанию, бот хранит контекст длиной 6500 символов и/или 15 сообщений (где запрос пользователя и ответ бота считаются одним сообщением).
Поле | Тип | Описание |
---|---|---|
CHAT_ID | BIGINT | Уникальный идентификатор чата |
TEXT | TEXT | Хранение текста беседы |
MESSAGE_COUNT | DECIMAL(0, 15) | Количество сообщений в текущем контексте |
USER_NAME | VARCHAR | Имя пользователя |
VERSION | INT | Версия записи (для управления изменениями) |
Для сборки и запуска проекта необходимы следующие зависимости Maven:
<dependencies>
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>client</artifactId>
<version>0.18.2</version>
</dependency>
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>service</artifactId>
<version>0.18.2</version>
</dependency>
<dependency>
<groupId>com.theokanning.openai-gpt3-java</groupId>
<artifactId>api</artifactId>
<version>0.18.2</version>
</dependency>
<dependency>
<groupId>com.googlecode.json-simple</groupId>
<artifactId>json-simple</artifactId>
<version>1.1.1</version>
</dependency>
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20180813</version>
</dependency>
<dependency>
<groupId>org.jsoup</groupId>
<artifactId>jsoup</artifactId>
<version>1.15.4</version>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots</artifactId>
<version>5.2.0</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.15</version>
</dependency>
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>5.4.2.Final</version>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-longpolling</artifactId>
<version>7.7.1</version>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-extensions</artifactId>
<version>7.0.0</version>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-client</artifactId>
<version>7.7.1</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>5.0.1</version>
</dependency>
<dependency>
<groupId>org.telegram</groupId>
<artifactId>telegrambots-meta</artifactId>
<version>7.7.1</version>
</dependency>
</dependencies>
-
Клонируйте репозиторий:
git clone https://github.com/IamKJLUM/Telegram-OpenAi-YandexTranslate.git cd telegram-chatgpt-bot
-
Настройте базу данных и внесите параметры подключения в конфигурационный файл.
-
Соберите проект:
mvn clean install
-
Запустите бота:
java -jar target/telegram-chatgpt-bot.jar
-
Зарегистрируйте бота в Telegram и получите токен.
-
Получите новый oAuth token от YandexCloud.
-
Настройте переменные окружения с токеном:
export TOKEN_BOT=your_bot_token_telegram_here export TOKEN_OPENAI=your_bot_token_open_ai_here export FOLDER_ID=your_folder_id export O_AUTH_TOKEN=your_o_auth_token
- После запуска бот будет принимать сообщения от пользователей и поддерживать беседу с учетом сохраненного контекста.
- Для получения помощи отправьте команду
/help
.
Этот проект лицензируется на условиях MIT License.
Если вы хотите внести свой вклад, пожалуйста, создайте pull request или откройте issue с предложениями!
Клим / KJLUM