fruitpicker01 commited on
Commit
da49cff
·
verified ·
1 Parent(s): 1a91d76

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +125 -47
app.py CHANGED
@@ -72,6 +72,60 @@ def generate_standard_prompt(description, advantages, *selected_values):
72
  )
73
  return prompt
74
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
75
  # Функция для генерации сообщения с помощью ChatGPT-4o-Latest
76
  def generate_message_gpt4o(prompt):
77
  try:
@@ -119,30 +173,52 @@ def generate_message_gigachat_plus(prompt):
119
  return f"Ошибка при обращении к GigaChat-Lite+: {e}"
120
 
121
  # Функция для обработки нажатия кнопки Submit и последовательного отображения результатов
122
- def generate_messages(description, advantages, *selected_values):
123
- standard_prompt = generate_standard_prompt(description, advantages, *selected_values)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
124
 
125
- results = {
126
- "prompt": standard_prompt,
127
- "gpt4o": None,
128
- "gigachat_pro": None,
129
- "gigachat_lite": None,
130
- "gigachat_plus": None
131
- }
132
 
133
- yield results["prompt"], "", "", "", ""
 
 
 
 
 
 
 
134
 
135
- results["gpt4o"] = generate_message_gpt4o(standard_prompt)
136
- yield results["prompt"], results["gpt4o"], "", "", ""
 
137
 
138
- results["gigachat_pro"] = generate_message_gigachat_pro(standard_prompt)
139
- yield results["prompt"], results["gpt4o"], results["gigachat_pro"], "", ""
140
 
141
- results["gigachat_lite"] = generate_message_gigachat_lite(standard_prompt)
142
- yield results["prompt"], results["gpt4o"], results["gigachat_pro"], results["gigachat_lite"], ""
143
 
144
- results["gigachat_plus"] = generate_message_gigachat_plus(standard_prompt)
145
- yield results["prompt"], results["gpt4o"], results["gigachat_pro"], results["gigachat_lite"], results["gigachat_plus"]
146
 
147
  # Создание интерфейса Gradio
148
  with gr.Blocks() as demo:
@@ -150,30 +226,6 @@ with gr.Blocks() as demo:
150
 
151
  with gr.Row():
152
  with gr.Column(scale=1):
153
- description_input = gr.Textbox(
154
- label="Описание предложения (предзаполненный пример можно поменять на свой)",
155
- lines=6,
156
- value=(
157
- "Необходимо предложить клиенту оформить дебетовую премиальную бизнес-карту Mastercard Preffered. "
158
- "Обслуживание карты стоит 700 рублей в месяц, но клиент может пользоваться ей бесплатно. "
159
- "Что необходимо сделать, чтобы воспользоваться предложением:\n"
160
- "1. Оформить премиальную бизнес-карту в офисе банка или онлайн в интернет-банке СберБизнес.\n"
161
- "2. Забрать карту.\n"
162
- "3. В течение календарного месяца совершить по ней покупки на сумму от 100 000 рублей.\n"
163
- "4. В течение следующего месяца пользоваться ей бесплатно."
164
- )
165
- )
166
- advantages_input = gr.Textbox(
167
- label="Преимущества (предзаполненный пример можно поменять на свой)",
168
- lines=4,
169
- value=(
170
- "Предложение по бесплатному обслуживанию — бессрочное.\n"
171
- "Оплата покупок без отчётов и платёжных поручений.\n"
172
- "Платёжные документы без комиссии.\n"
173
- "Лимиты на расходы сотрудников.\n"
174
- "Мгновенные переводы на карты любых банков."
175
- )
176
- )
177
  selections = []
178
  for feature in features.keys():
179
  selections.append(gr.Dropdown(choices=[None] + list(features[feature].keys()), label=f"Выберите {feature}"))
@@ -181,16 +233,42 @@ with gr.Blocks() as demo:
181
  submit_btn = gr.Button("Submit") # Оранжевая кнопка по умолчанию
182
 
183
  with gr.Column(scale=2):
184
- prompt_display = gr.Textbox(label="Стандартный промпт", lines=15, interactive=False)
185
  output_text_gpt4o = gr.Textbox(label="Создание сообщения GPT-4o", lines=3)
186
  output_text_gigachat_pro = gr.Textbox(label="Создание сообщения GigaChat-Pro", lines=3)
187
  output_text_gigachat_lite = gr.Textbox(label="Создание сообщения GigaChat-Lite", lines=3)
188
  output_text_gigachat_plus = gr.Textbox(label="Создание сообщения GigaChat-Lite+", lines=3)
189
-
 
 
 
 
 
 
 
 
 
 
 
 
190
  submit_btn.click(
191
- generate_messages,
192
- inputs=[description_input, advantages_input] + selections,
193
- outputs=[prompt_display, output_text_gpt4o, output_text_gigachat_pro, output_text_gigachat_lite, output_text_gigachat_plus]
 
 
 
 
 
 
 
 
 
 
 
 
 
 
194
  )
195
 
196
  demo.launch()
 
72
  )
73
  return prompt
74
 
75
+ # Функции для генерации сообщений с персонализацией
76
+ def create_personalization_prompt(message, *selected_values):
77
+ prompt = f"Пожалуйста, адаптируйте данное сообщение: '{message}' в соответствии со следующими требованиями:\n"
78
+ for i, feature in enumerate(features.keys()):
79
+ if selected_values[i]:
80
+ try:
81
+ prompt += f"- {features[feature][selected_values[i]]}\n"
82
+ except KeyError:
83
+ return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
84
+ return prompt.strip()
85
+
86
+ def generate_personalized_message_gpt4o(message, personalization_prompt):
87
+ try:
88
+ headers = {
89
+ "Content-Type": "application/json",
90
+ "Authorization": f"Bearer {openai_api_key}"
91
+ }
92
+ data = {
93
+ "model": "chatgpt-4o-latest",
94
+ "messages": [{"role": "system", "content": f"{personalization_prompt}"}],
95
+ "max_tokens": 700
96
+ }
97
+ response = requests.post("https://api.openai.com/v1/chat/completions", json=data, headers=headers)
98
+ response_data = response.json()
99
+ return response_data["choices"][0]["message"]["content"].strip()
100
+ except Exception as e:
101
+ return f"Ошибка при обращении к ChatGPT-4o-Latest: {e}"
102
+
103
+ def generate_personalized_message_gigachat_pro(message, personalization_prompt):
104
+ try:
105
+ messages = [SystemMessage(content=f"{personalization_prompt}")]
106
+ res = chat_pro(messages)
107
+ return res.content.strip()
108
+ except Exception as e:
109
+ return f"Ошибка при обращении к GigaChat-Pro: {e}"
110
+
111
+ def generate_personalized_message_gigachat_lite(message, personalization_prompt):
112
+ try:
113
+ time.sleep(2)
114
+ messages = [SystemMessage(content=f"{personalization_prompt}")]
115
+ res = chat_lite(messages)
116
+ return res.content.strip()
117
+ except Exception as e:
118
+ return f"Ошибка при обращении к GigaChat-Lite: {e}"
119
+
120
+ def generate_personalized_message_gigachat_plus(message, personalization_prompt):
121
+ try:
122
+ messages = [SystemMessage(content=f"{personalization_prompt}")]
123
+ res = chat_plus(messages)
124
+ return res.content.strip()
125
+ except Exception as e:
126
+ return f"Ошибка при обращении к GigaChat-Lite+: {e}"
127
+
128
+
129
  # Функция для генерации сообщения с помощью ChatGPT-4o-Latest
130
  def generate_message_gpt4o(prompt):
131
  try:
 
173
  return f"Ошибка при обращении к GigaChat-Lite+: {e}"
174
 
175
  # Функция для обработки нажатия кнопки Submit и последовательного отображения результатов
176
+ def generate_messages(*selected_values):
177
+ prompt = generate_prompt(*selected_values)
178
+ if "Ошибка" в prompt:
179
+ yield prompt, "", "", "", "", "", "", "", "", "", "", "", ""
180
+ return
181
+
182
+ # Генерация стандартных сообщений от разных моделей
183
+ message_gpt4o = generate_message_gpt4o(prompt)
184
+ yield prompt, message_gpt4o, "", "", "", "", "", "", "", "", "", "", ""
185
+
186
+ message_gigachat_pro = generate_message_gigachat_pro(prompt)
187
+ yield prompt, message_gpt4o, message_gigachat_pro, "", "", "", "", "", "", "", "", "", ""
188
+
189
+ message_gigachat_lite = generate_message_gigachat_lite(prompt)
190
+ yield prompt, message_gpt4o, message_gigachat_pro, message_gigachat_lite, "", "", "", "", "", "", "", ""
191
+
192
+ message_gigachat_plus = generate_message_gigachat_plus(prompt)
193
+ yield prompt, message_gpt4o, message_gigachat_pro, message_gigachat_lite, message_gigachat_plus, "", "", "", "", "", "", "", ""
194
 
195
+ # Создание персонализированных промптов на основе сгенерированных сообщений и выбранных признаков
196
+ personalization_prompt_gpt4o = f"Пожалуйста, адаптируйте следующее сообщение: '{message_gpt4o}' под следующие требования:\n"
197
+ personalization_prompt_gigachat_pro = f"Пожалуйста, адаптируйте следующее сообщение: '{message_gigachat_pro}' под следующие требования:\n"
198
+ personalization_prompt_gigachat_lite = f"Пожалуйста, адаптируйте следующее сообщение: '{message_gigachat_lite}' под следующие требования:\n"
199
+ personalization_prompt_gigachat_plus = f"Пожалуйста, адаптируйте следующее сообщение: '{message_gigachat_plus}' под следующие требования:\n"
 
 
200
 
201
+ # Добавляем требования, выбранные пользователем
202
+ for i, feature in enumerate(features.keys()):
203
+ if selected_values[i]:
204
+ requirement = f"- {features[feature][selected_values[i]]}\n"
205
+ personalization_prompt_gpt4o += requirement
206
+ personalization_prompt_gigachat_pro += requirement
207
+ personalization_prompt_gigachat_lite += requirement
208
+ personalization_prompt_gigachat_plus += requirement
209
 
210
+ # Генерация и отображение персонализированных сообщений
211
+ personalized_message_gpt4o = generate_personalized_message_gpt4o(message_gpt4o, personalization_prompt_gpt4o)
212
+ yield prompt, message_gpt4o, message_gigachat_pro, message_gigachat_lite, message_gigachat_plus, personalized_message_gpt4o, "", "", "", personalization_prompt_gpt4o, "", "", ""
213
 
214
+ personalized_message_gigachat_pro = generate_personalized_message_gigachat_pro(message_gigachat_pro, personalization_prompt_gigachat_pro)
215
+ yield prompt, message_gpt4o, message_gigachat_pro, message_gigachat_lite, message_gigachat_plus, personalized_message_gpt4o, personalized_message_gigachat_pro, "", "", "", personalization_prompt_gigachat_pro, "", ""
216
 
217
+ personalized_message_gigachat_lite = generate_personalized_message_gigachat_lite(message_gigachat_lite, personalization_prompt_gigachat_lite)
218
+ yield prompt, message_gpt4o, message_gigachat_pro, message_gigachat_lite, message_gigachat_plus, personalized_message_gpt4o, personalized_message_gigachat_pro, personalized_message_gigachat_lite, "", "", "", personalization_prompt_gigachat_lite, ""
219
 
220
+ personalized_message_gigachat_plus = generate_personalized_message_gigachat_plus(message_gigachat_plus, personalization_prompt_gigachat_plus)
221
+ yield prompt, message_gpt4o, message_gigachat_pro, message_gigachat_lite, message_gigachat_plus, personalized_message_gpt4o, personalized_message_gigachat_pro, personalized_message_gigachat_lite, personalized_message_gigachat_plus, "", "", "", personalization_prompt_gigachat_plus
222
 
223
  # Создание интерфейса Gradio
224
  with gr.Blocks() as demo:
 
226
 
227
  with gr.Row():
228
  with gr.Column(scale=1):
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  selections = []
230
  for feature in features.keys():
231
  selections.append(gr.Dropdown(choices=[None] + list(features[feature].keys()), label=f"Выберите {feature}"))
 
233
  submit_btn = gr.Button("Submit") # Оранжевая кнопка по умолчанию
234
 
235
  with gr.Column(scale=2):
236
+ prompt_display = gr.Textbox(label="Сгенерированный промпт", lines=4, interactive=False)
237
  output_text_gpt4o = gr.Textbox(label="Создание сообщения GPT-4o", lines=3)
238
  output_text_gigachat_pro = gr.Textbox(label="Создание сообщения GigaChat-Pro", lines=3)
239
  output_text_gigachat_lite = gr.Textbox(label="Создание сообщения GigaChat-Lite", lines=3)
240
  output_text_gigachat_plus = gr.Textbox(label="Создание сообщения GigaChat-Lite+", lines=3)
241
+
242
+ # Добавляем поля для персонализированных сообщений
243
+ personalized_output_text_gpt4o = gr.Textbox(label="Персонализированное сообщение GPT-4o", lines=3)
244
+ personalized_output_text_gigachat_pro = gr.Textbox(label="Персонализированное сообщение GigaChat-Pro", lines=3)
245
+ personalized_output_text_gigachat_lite = gr.Textbox(label="Персонализированное сообщение GigaChat-Lite", lines=3)
246
+ personalized_output_text_gigachat_plus = gr.Textbox(label="Персонализированное сообщение GigaChat-Lite+", lines=3)
247
+
248
+ # Добавляем поля для персонализированных промптов
249
+ personalization_prompt_gpt4o_display = gr.Textbox(label="Промпт для персонализации GPT-4o", lines=6, interactive=False)
250
+ personalization_prompt_gigachat_pro_display = gr.Textbox(label="Промпт для персонализации GigaChat-Pro", lines=6, interactive=False)
251
+ personalization_prompt_gigachat_lite_display = gr.Textbox(label="Промпт для персонализации GigaChat-Lite", lines=6, interactive=False)
252
+ personalization_prompt_gigachat_plus_display = gr.Textbox(label="Промпт для персонализации GigaChat-Lite+", lines=6, interactive=False)
253
+
254
  submit_btn.click(
255
+ generate_messages,
256
+ inputs=selections,
257
+ outputs=[
258
+ prompt_display,
259
+ output_text_gpt4o,
260
+ output_text_gigachat_pro,
261
+ output_text_gigachat_lite,
262
+ output_text_gigachat_plus,
263
+ personalized_output_text_gpt4o,
264
+ personalized_output_text_gigachat_pro,
265
+ personalized_output_text_gigachat_lite,
266
+ personalized_output_text_gigachat_plus,
267
+ personalization_prompt_gpt4o_display,
268
+ personalization_prompt_gigachat_pro_display,
269
+ personalization_prompt_gigachat_lite_display,
270
+ personalization_prompt_gigachat_plus_display
271
+ ]
272
  )
273
 
274
  demo.launch()