Skip to content

Commit

Permalink
28janOK
Browse files Browse the repository at this point in the history
  • Loading branch information
shliamb committed Jan 28, 2024
1 parent 2051371 commit f4b5bcf
Show file tree
Hide file tree
Showing 3,370 changed files with 8,318 additions and 293,132 deletions.
The diff you're trying to view is too large. We only load the first 3000 changed files.
11 changes: 10 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,14 @@

ChatGPT + Telegram bot. В интернете таких много, мой возможно не лучше. Сделал потому что понадобился мне. К сожалению в РФ использовать стандартные методы - это искусство запуска VPN. Потому было решено быстренько сделать телеграм бот с ChatGPT. Который позволит в простейшем формате и быстро получить ответ.

Коротко:



Подробненько:



Особенности:
1. Логирование на logging,
2. Бот на библиотеке telebot,
Expand All @@ -28,4 +36,5 @@ Features:
1. Logging on logging,
2. Bot on the telebot library,
3. If the waiting is exceeded, it is automatically re-logged,
4. ..
4. ..

32 changes: 15 additions & 17 deletions app/open_ai.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,43 +5,41 @@
from worker_db import add_session_data, read_data_ans_ques
import datetime

# Получаем текущую дату и время
current_datetime = datetime.datetime.now()
# Преобразуем дату и время в строку
formatted_datetime = current_datetime.strftime("%Y-%m-%d %H:%M:%S")
# Выводим результат
print("Текущая дата и время:", formatted_datetime)


client = AsyncOpenAI(api_key=api_key)

async def main(question: str, id): # -> Union[str, None]:
the_gap = 0.10 # Часы.минуты время использования истории общения
models_chat = "gpt-3.5-turbo" #"gpt-4", "text-davinci-002", "text-curie-003", or "gpt-3.5-turbo"

async def main(question: str, id: int): # -> Union[str, None]:
session_data = [] # Clear переменную ОЗУ каждый раз на всякий случай
# Условие вычитывания истории вопросов-ответа, наверно проверяется время обновления времени последней записи, если больше часа, то или очищает, то ли другую ячейку..
read_data = read_data_ans_ques(id)
if read_data:
session_data.append(read_data[0])
session_date = read_data[1]
time_time = session_date.strftime('%Y-%m-%d') # ('%Y-%m-%d %H:%M')
time_date = session_date.strftime('%H.%M')
# print(session_data)
print(f"{time_time}\n{time_date}")
session_date = read_data[1] # Дата и время переписки из DB
time_data = session_date.strftime("%Y-%m-%d"), session_date.strftime("%H.%M") # Вывод в кортеже
date_time = datetime.datetime.utcnow() # Получаем текущую дату и время
formatted_datetime = date_time.strftime("%Y-%m-%d"), date_time.strftime("%H.%M")
difference = float(formatted_datetime[1]) - float(time_data[1])
if time_data[0] == formatted_datetime[0] and difference < the_gap and read_data[0] is not None: # Условие использование данных из базы
session_data.append(read_data[0]) # Добавляем к переменной историю из DB

#raise



session_data.append(f"{question}\n") # Добавляю новый вопрос в переменную ОЗУ
format_session_data = ' '.join(session_data) # Пробелы между словами и убираю запятую

raise
#raise
chat_completion = await client.chat.completions.create(
messages=[
{
"role": "user",
"content": format_session_data,
}
],
model="gpt-3.5-turbo", #"gpt-4", "text-davinci-002", "text-curie-003", or "gpt-3.5-turbo"
model=models_chat,
)

answer = chat_completion.choices[0].message.content # Ответ
Expand All @@ -53,7 +51,7 @@ async def main(question: str, id): # -> Union[str, None]:
session_data.append(f"{answer}\n") # Добавляю ответ
clear_data = ' '.join(session_data) # Пробелы между словами и убираю запятую
# Передаю переменую ОЗУ в DB переписывая ячейку по id

#raise
add_session_data(id, clear_data) # Вношу данные из переменной в DB, дата меняется автоматом
session_data = [] # Чистим переменную
return total_answer or None # Возвращаю ответ
Expand Down
2 changes: 1 addition & 1 deletion app/tele_bot.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,7 @@ def handle_message(message):
async def run_main():
bot.send_chat_action(message.chat.id, 'typing') # Typing bot
result = await main(message.text, id)
send = f"{result[0]}\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nВерсия модели: {result[1]}\nЗавершенные токены: {result[2]}\nПодсказки токены: {result[3]}\nВсего токенов: {result[4]}"
send = f"{result[0]}\n- - - - - - - - - - - - - - - - - - - - - - - - - -\nВерсия модели: {result[1]}\nЗавершенные токены: {result[2]}\nПодсказки токены: {result[3]}\nВсего токенов: {result[4]}"
# send = f"{переменная}\n<b>Жирным - b</b> <i>Курсив - i</i> <code>Код - code</code> <pre>Отдельный блок для копирования - pre</pre>"
bot.reply_to(message, send) # bot.reply_to(message, send, parse_mode='HTML')
loop = asyncio.new_event_loop()
Expand Down
Binary file modified db/sqlite3.db
Binary file not shown.
Loading

0 comments on commit f4b5bcf

Please sign in to comment.