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)