
13.04.2023, 13:56
|
|
Новичок
Регистрация: 18.10.2022
Сообщений: 8
С нами:
1881060
Репутация:
3
|
|
Суть скрипта: ничего необычного и сложного, обычный скрипт на API OpenAI. Бот имеет 3 команды:
/help- открыть меню помощи по командам. /chat [text] - чат с Chat GPT. /image [text] - сгенерирует картинку по Вашему запросу.
Сообщение от Спойлер
"ТОКЕН_БОТА" - вставьте между " " токен Вашего бота в Телеграм.
"АПИ_OPEN_AI" - вставьте между " " ключ от OpenAI.
Сообщение от Спойлер
terminal:
Код:
pip install python
-
telegram
-
bot
==
13.15
pip install openai
ChatGPT:
Код:
import
logging
from
telegram
import
Update
,
ReplyKeyboardMarkup
from
telegram
.
ext
import
Updater
,
CommandHandler
,
MessageHandler
,
Filters
import
openai
openai
.
api_key
=
"АПИ_OPEN_AI"
TOKEN
=
"ТОКЕН_БОТА"
updater
=
Updater
(
TOKEN
)
logging
.
basicConfig
(
format
=
'%(asctime)s - %(name)s - %(levelname)s - %(message)s'
,
level
=
logging
.
INFO
)
def
start
(
update
:
Update
,
context
)
:
commands
=
[
[
'/chat'
,
'/image'
]
,
]
reply_markup
=
ReplyKeyboardMarkup
(
commands
,
resize_keyboard
=
True
)
update
.
message
.
reply_text
(
'Выберите команду в меню или воспользуйтесь командой /help.'
,
reply_markup
=
reply_markup
)
def
help_command
(
update
:
Update
,
context
)
:
update
.
message
.
reply_text
(
'Команды бота:\n\n/help - открыть это меню.\n/chat [текст] - задать вопрос ChatGPT.\n/image [текст] - запрос нейросети для генерации картинки.\n\n\nО авторе можете узнать на сайте: r3dd1l.tk'
)
def
generate_text
(
update
:
Update
,
context
)
:
text
=
" "
.
join
(
context
.
args
)
if
not
text
:
update
.
message
.
reply_text
(
"Ошибка! Введите /chat [текст]!"
)
return
response
=
openai
.
Completion
.
create
(
prompt
=
text
,
max_tokens
=
2000
,
# Максимальное количество генерируемых токенов
n
=
1
,
# Количество предложений в ответе
stop
=
None
,
# Символы, по которым модель должна остановить генерацию
temperature
=
0.7
,
# Параметр температуры для контроля степени разнообразия генерируемого текста
model
=
"text-davinci-002"
# Модель ChatGPT от OpenAI
)
# Получаем сгенерированный текст из ответа от OpenAI
generated_text
=
response
[
'choices'
]
[
0
]
[
'text'
]
# Отправляем ответ с сгенерированным текстом пользователю
update
.
message
.
reply_text
(
generated_text
)
# Функция для генерации изображений по тексту
def
generate_image
(
update
:
Update
,
context
)
:
# Получение текста сообщения после команды /image
text
=
" "
.
join
(
context
.
args
)
if
not
text
:
update
.
message
.
reply_text
(
"Ошибка! Введите /image [текст]!"
)
return
# Используем OpenAI для генерации изображения по тексту
prompt
=
f"Сгенерируй изображение на основе текста:{text}"
response
=
openai
.
Image
.
create
(
prompt
=
prompt
)
# Получаем ссылку на изображение из ответа от OpenAI
image_url
=
response
[
'data'
]
[
0
]
[
'url'
]
# Отправляем ответ с изображением пользователю
update
.
message
.
reply_photo
(
photo
=
image_url
)
def
handle_message
(
update
:
Update
,
context
)
:
text
=
update
.
message
.
text
if
text
.
startswith
(
'/image'
)
:
context
.
args
=
text
.
split
(
)
[
1
:
]
generate_image
(
update
,
context
)
if
text
.
startswith
(
'/chat'
)
:
context
.
args
=
text
.
split
(
)
[
1
:
]
generate_text
(
update
,
context
)
updater
.
dispatcher
.
add_handler
(
CommandHandler
(
'start'
,
start
)
)
updater
.
dispatcher
.
add_handler
(
CommandHandler
(
'help'
,
help_command
)
)
updater
.
dispatcher
.
add_handler
(
CommandHandler
(
'image'
,
generate_image
)
)
updater
.
dispatcher
.
add_handler
(
CommandHandler
(
'chat'
,
generate_text
)
)
updater
.
dispatcher
.
add_handler
(
MessageHandler
(
Filters
.
text
,
handle_message
)
)
if
__name__
==
'__main__'
:
updater
.
start_polling
(
)
updater
.
idle
(
)
Буду благодарен если умельцы будут дополнять\оптимизировать код.
По возможности буду обновлять скрипт, хотя обновлять тут нечего и не зачем, а код с "мусорными" функциями можно найти и на гите.
|
|
|
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|