stand1 / app.py
trashchenkov's picture
Update app.py
4e890da verified
from langchain.schema import SystemMessage, HumanMessage
from langchain_gigachat.chat_models import GigaChat
import time
import os
from dotenv import load_dotenv
import gradio as gr
import logging
from datetime import datetime
load_dotenv()
auth = os.getenv('GIGA')
chat_pro = GigaChat(credentials=auth,
model='GigaChat-Max',
scope="GIGACHAT_API_CORP",
temperature=1.1,
profanity_check=False,
verify_ssl_certs=False)
chat_pro.invoke('Hello!')
def min_sec(start):
finish = datetime.now()
minutes = (finish - start).seconds // 60
if minutes < 10:
minutes = '0' + str(minutes)
else:
minutes = str(minutes)
seconds = (finish - start).seconds % 60
if seconds < 10:
seconds = '0' + str(seconds)
return f'{minutes}:{seconds}'
sms_prompt = ['''Напиши три или четыре предложения суммарной длиной от 160 до 250 знаков с учетом пробелов. Начни SMS с указания на пользу продукта. Используй глагол в побудительном наклонении. Не начинай с вопроса.
Напиши рекламное SMS для следующего продукта:
«Зарплатный проект для предпринимателей. Позволяет зачислять зарплату, отпускные, компенсации и другие виды выплат в любой день. Подключение — по заявке в интернет-банке СберБизнес.».
Не изменяй название продукта: «зарплатный проект».
Преимущества:
«Разные виды зачислений.
Можно зачислять в выходные и праздники.
Срок зачисления — от 1 минуты.
Подключение без визита в банк.».
ОБЯЗАТЕЛЬНО используй в SMS один или несколько терминов, касающиеся клиента, которому направляется SMS, из КАЖДОЙ группы:
1. контроль, управлять, экономия, стратегический, обеспечить.
Убедись, что написал не меньше трех и не больше четырех предложений суммарной длиной от 160 до 250 знаков с учетом пробелов.
Убедись, что SMS начинается с указания на пользу продукта и использования глагола в побудительном наклонении и не начинается с вопроса.
Убедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.
Убедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта: «зарплатный проект».
Убедись, что в SMS есть следующая ключевая информация: «Зачисление зарплаты сотрудникам от 1 минуты 24/7, подключение без визита в банк.».
''',
'''Напиши три или четыре предложения суммарной длиной от 160 до 250 знаков с учетом пробелов. Начни SMS с призыва к действию с продуктом. Не начинай с вопроса / Начни сообщение с вопроса, который указывает на пользу продукта для клиента.
Обратись в SMS на ты. Напиши рекламное SMS для следующего продукта:
«Зарплатный проект для предпринимателей. Позволяет зачислять зарплату, отпускные, компенсации и другие виды выплат в любой день. Подключение — по заявке в интернет-банке СберБизнес.».
Не изменяй название продукта: «зарплатный проект».
Преимущества:
«Разные виды зачислений.
Можно зачислять в выходные и праздники.
Срок зачисления — от 1 минуты.
Подключение без визита в банк.».
ОБЯЗАТЕЛЬНО используй в SMS один или несколько терминов, касающиеся клиента, которому направляется SMS, из КАЖДОЙ группы:
1. тренд, лайфхак, свобода, яркий.
2. учитывать, результат, эффективность, контроль, оптимизировать.
Убедись, что написал не меньше трех и не больше четырех предложений суммарной длиной от 160 до 250 знаков с учетом пробелов.
Убедись, что готовый текст начинается с призыва к действию с продуктом и не начинается с вопроса / Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента.
Убедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.
Убедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта: «зарплатный проект».
Убедись, что в SMS есть следующая ключевая информация: «Зачисление зарплаты сотрудникам от 1 минуты 24/7, подключение без визита в банк.».
''',
'''Напиши три или четыре предложения суммарной длиной от 160 до 250 знаков с учетом пробелов. Начни SMS с призыва к действию с продуктом. Не начинай с вопроса / Начни сообщение с вопроса, который указывает на пользу продукта для клиента.
Обратись в SMS на ты. Напиши рекламное SMS для следующего продукта:
«Зарплатный проект для предпринимателей. Позволяет зачислять зарплату, отпускные, компенсации и другие виды выплат в любой день. Подключение — по заявке в интернет-банке СберБизнес.».
Не изменяй название продукта: «зарплатный проект».
Преимущества:
«Разные виды зачислений.
Можно зачислять в выходные и праздники.
Срок зачисления — от 1 минуты.
Подключение без визита в банк.».
ОБЯЗАТЕЛЬНО используй в SMS один или несколько терминов, касающиеся клиента, которому направляется SMS, из КАЖДОЙ группы:
1. комфорт, вдохновение, представьте, наслаждаться.
2. тренд, лайфхак, свобода, яркий.
Убедись, что написал не меньше трех и не больше четырех предложений суммарной длиной от 160 до 250 знаков с учетом пробелов.
Убедись, что готовый текст начинается с призыва к действию с продуктом и не начинается с вопроса / Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента.
Убедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.
Убедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта: «зарплатный проект».
Убедись, что в SMS есть следующая ключевая информация: «Зачисление зарплаты сотрудникам от 1 минуты 24/7, подключение без визита в банк.».
''',
]
sms_batch = sms_prompt #* 3
sms_batch = [[HumanMessage(content=x)] for x in sms_batch]
def process_sms():
prompt_tokens = 0
completion_tokens = 0
total_tokens = 0
errors = 30
logs = '# Запуск процесса\n'
start = datetime.now()
yield logs
logs += ('### '+ min_sec(start) + ' Запрос 9 sms отправлен. Ждем ответа.\n')
answer1 = chat_pro.batch(sms_batch)
logs += ('### '+ min_sec(start) + ' Ответы получены.\n')
for a in range(len(answer1)):
logs += ('### ' + min_sec(start) + f' Ответ {a+1}: \n')
prompt_tokens_a = answer1[a].response_metadata['token_usage']['prompt_tokens']
completion_tokens_a = answer1[a].response_metadata['token_usage']['completion_tokens']
total_tokens_a = answer1[a].response_metadata['token_usage']['total_tokens']
logs += f'Токенов промпта: {prompt_tokens_a}\n'
logs += f'Токенов сгенерировано: {completion_tokens_a}\n'
logs += f'Токенов всего: {total_tokens_a}\n\n'
prompt_tokens += answer1[a].response_metadata['token_usage']['prompt_tokens']
completion_tokens += answer1[a].response_metadata['token_usage']['completion_tokens']
total_tokens += answer1[a].response_metadata['token_usage']['total_tokens']
logs += (f'Сгенерированное сообщение:\n {answer1[a].content}\n\n')
yield logs
logs += f'Входные токены: {prompt_tokens}\n'
logs += f'Сгенерированные токены: {completion_tokens}\n'
logs += f'Итого: {total_tokens}\n'
yield logs
with gr.Blocks() as demo:
header = gr.Markdown(value='# Проверка многопоточности')
run_btn = gr.Button('Запуск генерации 9 сообщений')
logs_feed = gr.Markdown(value='# Логи будут отображаться здесь')
run_btn.click(process_sms, [], logs_feed)
demo.launch(share=True)