roolaml commited on
Commit
2cf1d61
1 Parent(s): 4505ef1

Add application file

Browse files
Files changed (1) hide show
  1. app.py +113 -0
app.py ADDED
@@ -0,0 +1,113 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import openai
2
+ import gradio as gr
3
+ from datetime import datetime
4
+ import json
5
+ import chromadb
6
+ import pandas as pd
7
+ from sentence_transformers import SentenceTransformer
8
+ from tqdm import tqdm
9
+ from FlagEmbedding import BGEM3FlagModel
10
+ import re
11
+
12
+ # Đặt API key của bạn ở đây
13
+ api_key = "sk-optimi-ai-zR7o9I8TWt6vOwOHJFEpT3BlbkFJlGLNXidFLiV3E10jQv1p"
14
+ openai.api_key = api_key
15
+
16
+ # Khởi tạo mô hình embedding
17
+
18
+
19
+ # Đọc dữ liệu từ JSONL
20
+ data_path = "/home/acer/Documents/ABI/Lich_optimi/nhansu_optimi.xlsx"
21
+ data = pd.read_excel(data_path)
22
+ data['index'] = range(len(data))
23
+
24
+ # Hàm truy vấn cơ sở dữ liệu để tìm tên đầy đủ của người tham gia
25
+ def get_full_name(participant):
26
+ list_name = []
27
+ for i in range(len(data)):
28
+ if participant in data['Họ và tên'][i]:
29
+ #print(data['Họ và tên'][i])
30
+ list_name.append(data['Họ và tên'][i])
31
+ return list_name
32
+ def replace_participants(reply, dict_replace):
33
+ for key, names in dict_replace.items():
34
+ if names:
35
+ # Join names with comma for display
36
+ names_str = ','.join(names)
37
+ # Replace the key with the list of names
38
+ reply = reply.replace(key, names_str)
39
+ else:
40
+ reply = reply.replace(key,'')
41
+ parts = reply.split('Người tham gia:')
42
+ if len(parts) > 1:
43
+ participants = parts[1].strip().split(',')
44
+ cleaned_participants = [p.strip() for p in participants if p.strip()]
45
+ reply = parts[0] + 'Người tham gia: ' + ', '.join(cleaned_participants)
46
+ return reply
47
+ # Định nghĩa hệ thống prompt
48
+ def create_system_prompt():
49
+ localtime = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
50
+ system_prompt = f"Tách yêu cầu sau thành 5 trường thông tin gồm: Tên cuộc họp (Ngắn gọn dưới 10 từ bao quát về mục đích cuộc họp), Ngày họp (DD/MM/YYYY), Giờ học bắt đầu (HH/MM), Giờ học kết thúc (HH/MM) và Người tham gia (Chỉ trích dẫn tên).\
51
+ Chú ý xác định thời điểm hiện tại là: {localtime} từ đó xác định ngày họp cụ thể bao gồm ngày, tháng, năm.\
52
+ Ví dụ: Tách yêu cầu 'họp với team AI, anh Hoa và giám đốc Dương design search ngày mai 10h sáng đến 3 giờ chiều.' thành:\
53
+ Tên cuộc họp: Design search.\
54
+ Ngày họp: 15/06/2024.\
55
+ Giờ bắt đầu: 10:00.\
56
+ Giờ kết thúc: 15:00.\
57
+ Người tham gia: Hoa,Dương.\
58
+ Bắt đầu tách yêu cầu sau: "
59
+ return system_prompt
60
+
61
+ # Hàm dự đoán cho Gradio
62
+ def predict(message, history):
63
+ # Tạo prompt hệ thống
64
+ system_prompt = create_system_prompt()
65
+
66
+ # Chuẩn bị lịch sử hội thoại
67
+ history_openai_format = [{"role": "system", "content": system_prompt}]
68
+ for human, assistant in history:
69
+ history_openai_format.append({"role": "user", "content": human})
70
+ history_openai_format.append({"role": "assistant", "content": assistant})
71
+ history_openai_format.append({"role": "user", "content": message})
72
+
73
+ # Gọi API của OpenAI
74
+ response = openai.ChatCompletion.create(
75
+ model='gpt-3.5-turbo',
76
+ messages=history_openai_format,
77
+ temperature=1.0
78
+ )
79
+
80
+ # Trích xuất phản hồi từ mô hình
81
+ reply = response.choices[0].message['content']
82
+ #print(reply)
83
+ #print(type(reply))
84
+ # Tách các tên người tham gia từ phản hồi
85
+ # Tách các tên người tham gia từ phản hồi
86
+ start_index = reply.find("Người tham gia:") + len("Người tham gia:")
87
+ end_index = reply.find("\n", start_index)
88
+
89
+ # Trích xuất danh sách người tham gia
90
+ participants_str = reply[start_index:end_index].strip()
91
+
92
+ # Tách danh sách thành từng phần tử
93
+ participants = [participant.strip() for participant in participants_str.split(",")]
94
+ participants = [participant.rstrip('.') for participant in participants_str.split(",")]
95
+ print(participants)
96
+ # Thay thế các tên người tham gia bằng tên đầy đủ
97
+ replace_dict = {participant: get_full_name(participant) for participant in participants}
98
+ print(replace_dict)
99
+ # replace_dict = {key: value for key, value in replace_dict.items() if value != []}
100
+ # print(replace_dict)
101
+ reply = replace_participants(reply,replace_dict)
102
+ print(reply)
103
+ # Cập nhật lịch sử hội thoại
104
+ history.append((message, reply))
105
+
106
+ return reply
107
+
108
+ # Khởi tạo giao diện Gradio
109
+ iface = gr.ChatInterface(fn=predict, title="Tách Thông Tin Cuộc Họp")
110
+
111
+ # Chạy Gradio
112
+ iface.launch(share=True)
113
+