Spaces:
Sleeping
Sleeping
File size: 11,047 Bytes
940b100 186b511 940b100 a482560 940b100 4e890da 940b100 678ab54 940b100 bcca3b6 940b100 aca0783 940b100 aca0783 940b100 aca0783 22483c1 aca0783 22483c1 aca0783 940b100 bcca3b6 940b100 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 |
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) |