HOME FORUMS MEMBERS RECENT POSTS LOG IN  
× Авторизация
Имя пользователя:
Пароль:
Нет аккаунта? Регистрация
Баннер 1   Баннер 2
НОВЫЕ ТОРГОВАЯ НОВОСТИ ЧАТ
loading...
Скрыть
Вернуться   ANTICHAT > ПРОГРАММИРОВАНИЕ > Python
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #1  
Старый 13.04.2023, 13:56
AYP
Новичок
Регистрация: 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) Заходим на сайт: www.pythonanywhere.com

2) Регистрируемся и подтверждаем почту. (что бы не запутаться, вот ссылка на бесплатную основу регистрации на сайте: https://www.pythonanywhere.com/registration/register/beginner/ )




3) Подтверждаем почту.

4) После того как подтвердили, переходим во вкладку "Consoles"




5) Теперь открываем консоль "Bash"



6) Ждем загрузку консоли и вставляем в нее эти 2 команды:

terminal:





Код:
pip install python
-
telegram
-
bot
==
13.15
pip install openai


7) Ждем пока загрузятся библиотеки и переходим во вкладку "Files"



8) Теперь создаем файл с нашим ботом. У меня это "bot.py" (ВАЖНО: в конце .py - ОБЯЗАТЕЛЬНО!)



9) После создания у нас откроется редактор кода. Вставляем код, который был выше, сюда, и нажимаем "Save" получится вот так:


10) Теперь меняем значения на 6 и 8 строке на свои.

11) И вуа-ля! Еще раз нажимаем "Save" и потом "Run this file". И бот должен заработать.

Буду благодарен если умельцы будут дополнять\оптимизировать код.

По возможности буду обновлять скрипт, хотя обновлять тут нечего и не зачем, а код с "мусорными" функциями можно найти и на гите.
 
Ответить с цитированием

  #2  
Старый 13.04.2023, 14:44
xionerme
Постоянный
Регистрация: 25.02.2021
Сообщений: 745
С нами: 2744398

Репутация: 68


По умолчанию

ну пачиму не aiogram??

ашывщшавы:





Код:
@dp.message_handler
(
commands
=
[
'нейронка'
]
)
async
def
neiro
(
message
:
types
.
Message
)
:
msg
=
await
message
.
reply
(
'подождите.. генерирую ответ'
)
messageid
=
msg
.
message_id
  zxc
=
message
.
get_args
(
)
if
not
zxc
:
await
bot
.
edit_message_text
(
'Вы не ввели текстовую подсказку'
,
message
.
chat
.
id
,
messageid
)
return
completion
=
openai
.
ChatCompletion
.
create
(
model
=
"gpt-3.5-turbo"
,
messages
=
[
{
"role"
:
"user"
,
"content"
:
zxc
}
]
,
temperature
=
0.7
,
max_tokens
=
1024
,
top_p
=
1
,
frequency_penalty
=
0
,
presence_penalty
=
0
)
answer
=
completion
.
choices
[
0
]
.
message
.
content
.
strip
(
)
await
bot
.
edit_message_text
(
text
=
f'🤖 Ответ:{answer}'
,
chat_id
=
message
.
chat
.
id
,
message_id
=
messageid
)


аываыв:





Код:
@dp.message_handler
(
commands
=
[
'нейрофото'
]
)
async
def
neiro
(
message
:
types
.
Message
)
:
msg
=
await
message
.
reply
(
'подождите.. генерирую фото'
)
messageid
=
msg
.
message_id
  prompt
=
message
.
get_args
(
)
if
not
prompt
:
await
bot
.
edit_message_text
(
'Вы не ввели текстовую подсказку'
,
message
.
chat
.
id
,
messageid
)
return
response
=
openai
.
Image
.
create
(
prompt
=
prompt
,
n
=
1
,
size
=
"256x256"
,
)
image_url
=
response
[
"data"
]
[
0
]
[
"url"
]
with
open
(
"image.jpg"
,
"wb"
)
as
f
:
f
.
write
(
requests
.
get
(
image_url
)
.
content
)
photo
=
open
(
'image.jpg'
,
'rb'
)
await
message
.
reply_photo
(
photo
,
caption
=
'готово!'
)
await
bot
.
delete_message
(
message
.
chat
.
id
,
messageid
)
os
.
remove
(
'image.jpg'
)
 
Ответить с цитированием

  #3  
Старый 13.04.2023, 15:36
AYP
Новичок
Регистрация: 18.10.2022
Сообщений: 8
С нами: 1881060

Репутация: 3
По умолчанию

Цитата:
Сообщение от xionerme  

ну пачиму не aiogram??

ашывщшавы:





Код:
@dp.message_handler
(
commands
=
[
'нейронка'
]
)
async
def
neiro
(
message
:
types
.
Message
)
:
msg
=
await
message
.
reply
(
'подождите.. генерирую ответ'
)
messageid
=
msg
.
message_id
  zxc
=
message
.
get_args
(
)
if
not
zxc
:
await
bot
.
edit_message_text
(
'Вы не ввели текстовую подсказку'
,
message
.
chat
.
id
,
messageid
)
return
completion
=
openai
.
ChatCompletion
.
create
(
model
=
"gpt-3.5-turbo"
,
messages
=
[
{
"role"
:
"user"
,
"content"
:
zxc
}
]
,
temperature
=
0.7
,
max_tokens
=
1024
,
top_p
=
1
,
frequency_penalty
=
0
,
presence_penalty
=
0
)
answer
=
completion
.
choices
[
0
]
.
message
.
content
.
strip
(
)
await
bot
.
edit_message_text
(
text
=
f'🤖 Ответ:{answer}'
,
chat_id
=
message
.
chat
.
id
,
message_id
=
messageid
)


аываыв:





Код:
@dp.message_handler
(
commands
=
[
'нейрофото'
]
)
async
def
neiro
(
message
:
types
.
Message
)
:
msg
=
await
message
.
reply
(
'подождите.. генерирую фото'
)
messageid
=
msg
.
message_id
  prompt
=
message
.
get_args
(
)
if
not
prompt
:
await
bot
.
edit_message_text
(
'Вы не ввели текстовую подсказку'
,
message
.
chat
.
id
,
messageid
)
return
response
=
openai
.
Image
.
create
(
prompt
=
prompt
,
n
=
1
,
size
=
"256x256"
,
)
image_url
=
response
[
"data"
]
[
0
]
[
"url"
]
with
open
(
"image.jpg"
,
"wb"
)
as
f
:
f
.
write
(
requests
.
get
(
image_url
)
.
content
)
photo
=
open
(
'image.jpg'
,
'rb'
)
await
message
.
reply_photo
(
photo
,
caption
=
'готово!'
)
await
bot
.
delete_message
(
message
.
chat
.
id
,
messageid
)
os
.
remove
(
'image.jpg'
)

aiogram припас для другого 😉
 
Ответить с цитированием

  #4  
Старый 13.04.2023, 18:32
TastyBread123
Постоянный
Регистрация: 05.11.2021
Сообщений: 634
С нами: 2380746

Репутация: 68


По умолчанию

Цитата:
Сообщение от AYP  

aiogram припас для другого 😉
Аиограм основа для всего +- крупного на питоне)
 
Ответить с цитированием

  #5  
Старый 14.04.2023, 00:29
riverya4life
Постоянный
Регистрация: 06.11.2021
Сообщений: 397
С нами: 2378594

Репутация: 48
По умолчанию

На aiogram лучше всего
 
Ответить с цитированием

  #6  
Старый 14.04.2023, 06:43
хомяк553
Участник форума
Регистрация: 03.09.2022
Сообщений: 225
С нами: 1945476

Репутация: 48
По умолчанию

Сделай на gpt-3.5-turbo
 
Ответить с цитированием

  #7  
Старый 27.07.2024, 21:00
MaximRazrab
Новичок
Регистрация: 03.07.2024
Сообщений: 17
С нами: 982653

Репутация: 3
По умолчанию

можно не на openai?
 
Ответить с цитированием
Ответ





Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT ™ © 2001- Antichat Kft.