Spaces:
Running
Running
seawolf2357
commited on
Update app.py
Browse files
app.py
CHANGED
@@ -10,19 +10,20 @@ from datasets import load_dataset
|
|
10 |
print("Current Working Directory:", os.getcwd())
|
11 |
|
12 |
# 데이터셋 파일 이름
|
13 |
-
|
14 |
|
15 |
-
# 현재 작업 디렉토리에 파일이 있는지 확인
|
16 |
-
if os.path.exists(
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
# 작업 디렉토리 변경 (필요한 경우)
|
21 |
os.chdir('/home/user/app')
|
22 |
print("Changed directory to:", os.getcwd())
|
|
|
|
|
23 |
|
24 |
# 데이터셋 로드
|
25 |
-
law_dataset = load_dataset('csv', data_files=
|
26 |
print("Dataset loaded successfully.")
|
27 |
|
28 |
# 로깅 설정
|
@@ -44,9 +45,6 @@ SPECIFIC_CHANNEL_ID = int(os.getenv("DISCORD_CHANNEL_ID"))
|
|
44 |
# 대화 히스토리를 저장할 전역 변수
|
45 |
conversation_history = []
|
46 |
|
47 |
-
# 법률 데이터셋 로드
|
48 |
-
law_dataset = load_dataset('csv', data_files='train_0.csv')
|
49 |
-
|
50 |
class MyClient(discord.Client):
|
51 |
def __init__(self, *args, **kwargs):
|
52 |
super().__init__(*args, **kwargs)
|
@@ -68,14 +66,12 @@ class MyClient(discord.Client):
|
|
68 |
self.is_processing = True
|
69 |
try:
|
70 |
response = await generate_response(message)
|
71 |
-
# 비어 있는 응답을 확인하고 처리
|
72 |
if response.strip() == "":
|
73 |
response = "죄송합니다, 제공할 수 있는 정보가 없습니다."
|
74 |
await message.channel.send(response)
|
75 |
finally:
|
76 |
self.is_processing = False
|
77 |
|
78 |
-
|
79 |
def is_message_in_specific_channel(self, message):
|
80 |
return message.channel.id == SPECIFIC_CHANNEL_ID or (
|
81 |
isinstance(message.channel, discord.Thread) and message.channel.parent_id == SPECIFIC_CHANNEL_ID
|
@@ -89,26 +85,22 @@ async def generate_response(message):
|
|
89 |
|
90 |
# 데이터 검색 및 응답 준비
|
91 |
answer = search_in_dataset(user_input, law_dataset)
|
92 |
-
|
|
|
93 |
|
94 |
-
|
95 |
max_length = 2000
|
96 |
if len(full_response_text) > max_length:
|
97 |
-
# 너무 긴 메시지를 여러 부분으로 나누어 보냅니다.
|
98 |
for i in range(0, len(full_response_text), max_length):
|
99 |
part_response = full_response_text[i:i+max_length]
|
100 |
await message.channel.send(part_response)
|
101 |
else:
|
102 |
-
# 메시지 길이가 적절하면 한 번에 전송
|
103 |
await message.channel.send(full_response_text)
|
104 |
|
105 |
logging.debug(f'Full model response sent: {full_response_text}')
|
106 |
conversation_history.append({"role": "assistant", "content": full_response_text})
|
107 |
|
108 |
-
|
109 |
def search_in_dataset(query, dataset):
|
110 |
-
# 간단한 검색 로직을 구현합니다.
|
111 |
-
# 여기에서는 예제로 단순화하기 위해 첫 번째 항목을 반환합니다.
|
112 |
for record in dataset['train']:
|
113 |
if query in record['사건명']:
|
114 |
return record['사건번호']
|
|
|
10 |
print("Current Working Directory:", os.getcwd())
|
11 |
|
12 |
# 데이터셋 파일 이름
|
13 |
+
data_files = ['train_0.csv', 'train_1.csv', 'train_2.csv', 'train_3.csv', 'train_4.csv', 'train_5.csv']
|
14 |
|
15 |
+
# 현재 작업 디렉토리에 모든 파일이 있는지 확인
|
16 |
+
missing_files = [file for file in data_files if not os.path.exists(file)]
|
17 |
+
if missing_files:
|
18 |
+
print(f"Missing files: {missing_files}")
|
19 |
+
# 필요한 경우 작업 디렉토리 변경
|
|
|
20 |
os.chdir('/home/user/app')
|
21 |
print("Changed directory to:", os.getcwd())
|
22 |
+
else:
|
23 |
+
print("All files are present in the current directory.")
|
24 |
|
25 |
# 데이터셋 로드
|
26 |
+
law_dataset = load_dataset('csv', data_files=data_files)
|
27 |
print("Dataset loaded successfully.")
|
28 |
|
29 |
# 로깅 설정
|
|
|
45 |
# 대화 히스토리를 저장할 전역 변수
|
46 |
conversation_history = []
|
47 |
|
|
|
|
|
|
|
48 |
class MyClient(discord.Client):
|
49 |
def __init__(self, *args, **kwargs):
|
50 |
super().__init__(*args, **kwargs)
|
|
|
66 |
self.is_processing = True
|
67 |
try:
|
68 |
response = await generate_response(message)
|
|
|
69 |
if response.strip() == "":
|
70 |
response = "죄송합니다, 제공할 수 있는 정보가 없습니다."
|
71 |
await message.channel.send(response)
|
72 |
finally:
|
73 |
self.is_processing = False
|
74 |
|
|
|
75 |
def is_message_in_specific_channel(self, message):
|
76 |
return message.channel.id == SPECIFIC_CHANNEL_ID or (
|
77 |
isinstance(message.channel, discord.Thread) and message.channel.parent_id == SPECIFIC_CHANNEL_ID
|
|
|
85 |
|
86 |
# 데이터 검색 및 응답 준비
|
87 |
answer = search_in_dataset(user_input, law_dataset)
|
88 |
+
if not answer:
|
89 |
+
answer = "관련 법률 정보를 찾을 수 없습니다."
|
90 |
|
91 |
+
full_response_text = system_message + "\n\n" + answer
|
92 |
max_length = 2000
|
93 |
if len(full_response_text) > max_length:
|
|
|
94 |
for i in range(0, len(full_response_text), max_length):
|
95 |
part_response = full_response_text[i:i+max_length]
|
96 |
await message.channel.send(part_response)
|
97 |
else:
|
|
|
98 |
await message.channel.send(full_response_text)
|
99 |
|
100 |
logging.debug(f'Full model response sent: {full_response_text}')
|
101 |
conversation_history.append({"role": "assistant", "content": full_response_text})
|
102 |
|
|
|
103 |
def search_in_dataset(query, dataset):
|
|
|
|
|
104 |
for record in dataset['train']:
|
105 |
if query in record['사건명']:
|
106 |
return record['사건번호']
|