fruitpicker01 commited on
Commit
591c30d
·
verified ·
1 Parent(s): ebf77ca

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +100 -20
app.py CHANGED
@@ -1,31 +1,111 @@
1
  import gradio as gr
2
- from PIL import Image
 
 
 
 
 
3
 
4
- def simple_function(name):
5
- # Возвращаем приветственное сообщение
6
- return f"Привет, {name}!"
7
 
8
- def load_image():
9
- # Загружаем изображение pipeline.png
 
 
 
 
 
 
 
 
 
 
 
 
10
  try:
11
- img = Image.open("pipeline.png")
12
- return img
13
- except IOError:
14
- return None # Если изображение не найдено, возвращаем None
15
 
16
- with gr.Blocks() as demo:
17
- gr.Markdown("# Генерация приветственного сообщения и отображение изображения")
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
  with gr.Row():
20
  with gr.Column(scale=1):
21
- name_input = gr.Textbox(label="Введите ваше имя")
22
- greeting_output = gr.Textbox(label="Приветствие")
23
- submit_btn = gr.Button("Отправить")
24
-
25
- with gr.Column(scale=1):
26
- image_output = gr.Image(value=load_image, label="Pipeline изображение")
27
 
28
- # Устанавливаем действия для кнопки
29
- submit_btn.click(simple_function, inputs=name_input, outputs=greeting_output)
 
 
 
 
 
30
 
31
  demo.launch()
 
1
  import gradio as gr
2
+ import requests
3
+ import os
4
+ import pandas as pd
5
+ import time
6
+ from langchain.schema import SystemMessage
7
+ from langchain.chat_models.gigachat import GigaChat
8
 
9
+ # Установка ключа API для OpenAI и GigaChat
10
+ openai_api_key = os.getenv('GPT_KEY')
11
+ gc_key = os.getenv('GC_KEY')
12
 
13
+ # Авторизация в сервисе GigaChat
14
+ chat_pro = GigaChat(credentials=gc_key, model='GigaChat-Pro', verify_ssl_certs=False)
15
+ chat_lite = GigaChat(credentials=gc_key, model='GigaChat', verify_ssl_certs=False)
16
+
17
+ # Загрузка данных из Excel-файла
18
+ try:
19
+ data = pd.read_excel('Признаки.xlsx', sheet_name=None)
20
+ except Exception as e:
21
+ print(f"Ошибка при загрузке Excel-файла: {e}")
22
+ data = {}
23
+
24
+ # Создание списка признаков и их значений
25
+ features = {}
26
+ for sheet_name, df in data.items():
27
  try:
28
+ features[sheet_name] = df.set_index(df.columns[0]).to_dict()[df.columns[1]]
29
+ except Exception as e:
30
+ print(f"Ошибка при обработке данных листа {sheet_name}: {e}")
31
+ features[sheet_name] = {}
32
 
33
+ # Функция для генерации промпта
34
+ def generate_prompt(*selected_values):
35
+ prompt = "Напиши типичное рекламное SMS-сообщение от ПАО Сбербанк, но с учетом следующих правил (длина сообщения не должна превышать 250 знаков с учетом пробелов):\n"
36
+ for i, feature in enumerate(features.keys()):
37
+ if selected_values[i]:
38
+ try:
39
+ prompt += f"{features[feature][selected_values[i]]}\n"
40
+ except KeyError:
41
+ return f"Ошибка: выбранное значение {selected_values[i]} не найдено в данных."
42
+ return prompt.strip()
43
+
44
+ # Функция для генерации сообщения с помощью GPT-4o
45
+ def generate_message_gpt4o(prompt):
46
+ try:
47
+ headers = {
48
+ "Content-Type": "application/json",
49
+ "Authorization": f"Bearer {openai_api_key}"
50
+ }
51
+ data = {
52
+ "model": "gpt-4o",
53
+ "messages": [{"role": "system", "content": prompt}],
54
+ "max_tokens": 700
55
+ }
56
+ response = requests.post("https://api.openai.com/v1/chat/completions", json=data, headers=headers)
57
+ response_data = response.json()
58
+ return response_data["choices"][0]["message"]["content"].strip()
59
+ except Exception as e:
60
+ return f"Ошибка при обращении к GPT-4o: {e}"
61
+
62
+ # Функция для генерации сообщения с помощью GigaChat-Pro
63
+ def generate_message_gigachat_pro(prompt):
64
+ try:
65
+ messages = [SystemMessage(content=prompt)]
66
+ res = chat_pro(messages)
67
+ return res.content.strip()
68
+ except Exception as e:
69
+ return f"Ошибка при обращении к GigaChat-Pro: {e}"
70
 
71
+ # Функция для генерации сообщения с помощью GigaChat
72
+ def generate_message_gigachat_lite(prompt):
73
+ try:
74
+ time.sleep(2) # Задержка 2 секунды перед запросом к GigaChat
75
+ messages = [SystemMessage(content=prompt)]
76
+ res = chat_lite(messages)
77
+ return res.content.strip()
78
+ except Exception as e:
79
+ return f"Ошибка при обращении к GigaChat-Lite: {e}"
80
+
81
+ # Функция для обработки нажатия кнопки Submit
82
+ def generate_messages(*selected_values):
83
+ prompt = generate_prompt(*selected_values)
84
+ if "Ошибка" in prompt:
85
+ return prompt, "", "", ""
86
+ message_gpt4o = generate_message_gpt4o(prompt)
87
+ message_gigachat_pro = generate_message_gigachat_pro(prompt)
88
+ message_gigachat_lite = generate_message_gigachat_lite(prompt)
89
+ return prompt, message_gpt4o, message_gigachat_pro, message_gigachat_lite
90
+
91
+ # Создание интерфейса Gradio
92
+ with gr.Blocks() as demo:
93
+ gr.Markdown("# Генерация SMS-сообщений по заданным признакам")
94
+
95
  with gr.Row():
96
  with gr.Column(scale=1):
97
+ selections = []
98
+ for feature in features.keys():
99
+ selections.append(gr.Dropdown(choices=[None] + list(features[feature].keys()), label=f"Выберите {feature}"))
100
+
101
+ submit_btn = gr.Button("Submit") # Оранжевая кнопка по умолчанию
 
102
 
103
+ with gr.Column(scale=2):
104
+ prompt_display = gr.Textbox(label="Сгенерированный промпт", lines=4, interactive=False)
105
+ output_text_gpt4o = gr.Textbox(label="Создание сообщения GPT-4o", lines=3)
106
+ output_text_gigachat_pro = gr.Textbox(label="Создание сообщения GigaChat-Pro", lines=3)
107
+ output_text_gigachat_lite = gr.Textbox(label="Создание сообщения GigaChat-Lite", lines=3)
108
+
109
+ submit_btn.click(generate_messages, selections, [prompt_display, output_text_gpt4o, output_text_gigachat_pro, output_text_gigachat_lite])
110
 
111
  demo.launch()