trashchenkov commited on
Commit
940b100
·
verified ·
1 Parent(s): 0f5e891

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +148 -0
app.py ADDED
@@ -0,0 +1,148 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain.schema import SystemMessage, HumanMessage
2
+ from langchain_gigachat.chat_models import GigaChat
3
+ import time
4
+ import os
5
+ from dotenv import load_dotenv
6
+ import gradio as gr
7
+ import logging
8
+ from datetime import datetime
9
+
10
+ load_dotenv()
11
+
12
+ auth = os.getenv('GIGA')
13
+
14
+ chat_pro = GigaChat(credentials=auth,
15
+ model='GigaChat-Pro',
16
+ scope="GIGACHAT_API_CORP",
17
+ temperature=1.1,
18
+ profanity_check=False,
19
+ verify_ssl_certs=False)
20
+
21
+
22
+
23
+
24
+
25
+ def min_sec(start):
26
+ finish = datetime.now()
27
+ minutes = (finish - start).seconds // 60
28
+ if minutes < 10:
29
+ minutes = '0' + str(minutes)
30
+ else:
31
+ minutes = str(minutes)
32
+ seconds = (finish - start).seconds % 60
33
+ if seconds < 10:
34
+ seconds = '0' + str(seconds)
35
+ return f'{minutes}:{seconds}'
36
+
37
+
38
+
39
+
40
+ sms_prompt = ['''Напиши три или четыре предложения суммарной длиной от 160 до 250 знаков с учетом пробелов. Начни SMS с указания на пользу продукта. Используй глагол в побудительном наклонении. Не начинай с вопроса.
41
+ Напиши рекламное SMS для следующего продукта:
42
+
43
+ «Зарплатный проект для предпринимателей. Позволяет зачислять зарплату, отпускные, компенсации и другие виды выплат в любой день. Подключение — по заявке в интернет-банке СберБизнес.».
44
+ Не изменяй название продукта: «зарплатный проект».
45
+ Преимущества:
46
+
47
+ «Разные виды зачислений.
48
+
49
+ Можно зачислять в выходные и праздники.
50
+
51
+ Срок зачисления — от 1 минуты.
52
+
53
+ Подключение без визита в банк.».
54
+
55
+ ОБЯЗАТЕЛЬНО используй в SMS один или несколько терминов, касающиеся клиента, которому направляется SMS, из КАЖДОЙ группы:
56
+
57
+ 1. контроль, управлять, экономия, стратегический, обеспечить.
58
+
59
+ Убедись, что написал не меньше трех и не больше четырех предложений суммарной длиной от 160 до 250 знаков с учетом пробелов.
60
+ Убедись, что SMS начинается с указания на пользу продукта и использования глагола в побудительном наклонении и не начинается с вопроса.
61
+ Убедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.
62
+ Убедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта: «зарплатный проект».
63
+ Убедись, что в SMS есть следующая ключевая информация: «Зачисление зарплаты сотрудникам от 1 минуты 24/7, подключение без визита в банк.».
64
+ ''',
65
+ '''Напиши три или четыре предложения суммарной длиной от 160 до 250 знаков с учетом пробелов. Начни SMS с призыва к действию с продуктом. Не начинай с вопроса / Начни сообщение с вопроса, который указывает на пользу продукта для клиента.
66
+ Обратись в SMS на ты. Напиши рекламное SMS для следующего продукта:
67
+ «Зарплатный проект для предпринимателей. Позволяет зачислять зарплату, отпускные, компенсации и другие виды выплат в любой день. Подключение — по заявке в интернет-банке СберБизнес.».
68
+ Не изменяй название продукта: «зарплатный проект».
69
+ Преимущества:
70
+ «Разные виды зачислений.
71
+
72
+ Можно зачислять в выходные и праздники.
73
+
74
+ Срок зачисления — от 1 минуты.
75
+
76
+ Подключение без визита в банк.».
77
+ ОБЯЗАТЕЛЬНО используй в SMS один или несколько терминов, касающиеся клиента, которому направляется SMS, из КАЖДОЙ группы:
78
+ 1. тренд, лайфхак, свобода, яркий.
79
+ 2. учитывать, результат, эффективность, контроль, оптимизировать.
80
+ Убедись, что написал не меньше трех и не больше четырех предложений суммарной длиной от 160 до 250 знаков с учетом пробелов.
81
+ Убедись, что готовый текст начинается с призыва к действию с продуктом и не начинается с вопроса / Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента.
82
+ Убедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.
83
+ Убедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта: «зарплатный проект».
84
+ Убедись, что в SMS есть следующая ключевая информация: «Зачисление зарплаты сотрудникам от 1 минуты 24/7, подключение без визита в банк.».
85
+ ''',
86
+ '''Напиши три или четыре предложения суммарной длиной от 160 до 250 знаков с учетом пробелов. Начни SMS с призыва к действию с продуктом. Не начинай с вопроса / Начни сообщение с вопроса, который указывает на пользу продукта для клиента.
87
+ Обратись в SMS на ты. Напиши рекламное SMS для следующего продукта:
88
+ «Зарплатный проект для предпринимателей. Позволяет зачислять зарплату, отпускные, компенсации и другие виды выплат в любой день. Подключение — по заявке в интернет-банке СберБизнес.».
89
+ Не изменяй название продукта: «зарплатный проект».
90
+ Преимущества:
91
+ «Разные виды зачислений.
92
+
93
+ Можно зачислять в выходные и праздники.
94
+
95
+ Срок зачисления — от 1 минуты.
96
+
97
+ Подключение без визита в банк.».
98
+ ОБЯЗАТЕЛЬНО используй в SMS один или несколько терминов, касающиеся клиента, которому направляется SMS, из КАЖДОЙ группы:
99
+ 1. комфорт, вдохновение, представьте, наслаждаться.
100
+ 2. тренд, лайфхак, свобода, яркий.
101
+ Убедись, что написал не меньше трех и не больше четырех предложений суммарной длиной от 160 до 250 знаков с учетом пробелов.
102
+ Убедись, что готовый текст начинается с призыва к действию с продуктом и не начинается с вопроса / Убедись, что готовый текст начинается с вопроса, который указывает на пользу продукта для клиента.
103
+ Убедись, что УМЕСТНО использовал КАЖДЫЙ необходимый термин.
104
+ Убедись, что в SMS без изменений, синонимов и перестановок слов используется наименование продукта: «зарплатный проект».
105
+ Убедись, что в SMS есть следующая ключевая информация: «Зачисление зарплаты сотрудникам от 1 минуты 24/7, подключение без визита в банк.».
106
+ ''',
107
+ ]
108
+
109
+ sms_batch = sms_prompt * 3
110
+
111
+
112
+ def process_sms(sms_batch):
113
+ prompt_tokens = 0
114
+ completion_tokens = 0
115
+ total_tokens = 0
116
+ errors = 30
117
+ logs = '# Запуск процесса\n'
118
+ start = datetime.now()
119
+ yield logs
120
+ logs += ('### '+ min_sec(start) + ' Запрос 9 sms отправлен. Ждем ответа.')
121
+ answer1 = chat_pro.batch(sms_batch)
122
+ logs += ('### '+ min_sec(start) + ' Ответы получены.')
123
+ for a in range(len(answer1)):
124
+
125
+
126
+ logs += ('### ' + min_sec(start) + f' Ответ {a+1}: ')
127
+ logs += (f'Токенов промпта: {answer1[a].response_metadata['token_usage']['prompt_tokens']}')
128
+ logs += (f'Токенов сгенерировано: {answer1[a].response_metadata['token_usage']['completion_tokens']}')
129
+ logs += (f'Токенов всего: {answer1[a].response_metadata['token_usage']['total_tokens']}')
130
+ prompt_tokens += answer1.response_metadata['token_usage']['prompt_tokens']
131
+ completion_tokens += answer1.response_metadata['token_usage']['completion_tokens']
132
+ total_tokens += answer1.response_metadata['token_usage']['total_tokens']
133
+ logs += (f'Сгенерированное сообщение: {answer1[a].content}')
134
+ yield logs
135
+
136
+ logs += f'Входные токены: {prompt_tokens}\n'
137
+ logs += f'Сгенерированные токены: {completion_tokens}\n'
138
+ logs += f'Итого: {total_tokens}\n'
139
+ yield logs
140
+
141
+ with gr.Blocks() as demo:
142
+ header = gr.Markdown(value='# Проверка многопоточности')
143
+ run_btn = gr.Button('Запуск генерации 9 сообщений')
144
+ logs_feed = gr.Markdown(value='# Логи будут отображаться здесь')
145
+
146
+ run_btn.click(process_sms, [sms_batch], logs_feed)
147
+
148
+ demo.launch(share=True)