seawolf2357 commited on
Commit
104f578
·
verified ·
1 Parent(s): aece062

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +27 -36
app.py CHANGED
@@ -5,6 +5,7 @@ from huggingface_hub import InferenceClient
5
  import asyncio
6
  import subprocess
7
  from datasets import load_dataset
 
8
 
9
  # 현재 작업 디렉토리 출력
10
  print("Current Working Directory:", os.getcwd())
@@ -22,8 +23,16 @@ if missing_files:
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
  # 로깅 설정
@@ -36,7 +45,7 @@ intents.messages = True
36
  intents.guilds = True
37
  intents.guild_messages = True
38
 
39
- # 추론 API 클라이언트 설정
40
  hf_client = InferenceClient("CohereForAI/c4ai-command-r-plus", token=os.getenv("HF_TOKEN"))
41
 
42
  # 특정 채널 ID
@@ -81,43 +90,25 @@ class MyClient(discord.Client):
81
 
82
  async def generate_response(message):
83
  global conversation_history
84
- case_number = message.content.strip()
85
  user_mention = message.author.mention
86
- system_message = f"{user_mention}, 다음은 요청하신 사건의 전문입니다:"
87
-
88
- # 데이터 검색 및 응답 준비
89
- full_text = search_in_dataset_by_case_number(case_number, law_dataset)
90
- full_response_text = f"{system_message}\n\n{full_text}"
91
- max_length = 2000
92
- if len(full_response_text) > max_length:
93
- response_parts = []
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
- response_parts.append(part_response)
98
- logging.debug(f'Full model response sent: {full_response_text}')
99
- conversation_history.append({"role": "assistant", "content": full_response_text})
100
- return "".join(response_parts) # 조각난 메시지들을 연결하여 반환
101
  else:
102
- await message.channel.send(full_response_text)
103
- logging.debug(f'Full model response sent: {full_response_text}')
104
- conversation_history.append({"role": "assistant", "content": full_response_text})
105
- return full_response_text # 전체 메시지를 반환
106
-
107
- return "" # 반환 값이 없을 경우 빈 문자열 반환
108
 
109
- def search_in_dataset(query, dataset):
110
- for record in dataset['train']:
111
- if record['사건명'] and query in record['사건명']:
112
- return record['사건번호']
113
- return "관련 법률 정보를 찾을 수 없습니다."
114
-
115
- def search_in_dataset_by_case_number(case_number, dataset):
116
- for record in dataset['train']:
117
- if record['사건번호'] == case_number:
118
- return record.get('전문', "해당 사건에 대한 전문 정보가 없습니다.")
119
- return "관련 법률 정보를 찾을 수 없습니다."
120
 
121
  if __name__ == "__main__":
122
  discord_client = MyClient(intents=intents)
123
  discord_client.run(os.getenv('DISCORD_TOKEN'))
 
 
5
  import asyncio
6
  import subprocess
7
  from datasets import load_dataset
8
+ import pandas as pd
9
 
10
  # 현재 작업 디렉토리 출력
11
  print("Current Working Directory:", os.getcwd())
 
23
  else:
24
  print("All files are present in the current directory.")
25
 
26
+ # 데이터셋 로드 및 최적화
27
+ def load_optimized_dataset(data_files):
28
+ data_frames = [pd.read_csv(file) for file in data_files]
29
+ full_data = pd.concat(data_frames, ignore_index=True)
30
+ # 사건명을 키로 하고 사건번호와 전문을 저장하는 딕셔너리 생성
31
+ name_to_number = full_data.set_index('사건명')['사건번호'].to_dict()
32
+ number_to_fulltext = full_data.set_index('사건번호')['전문'].to_dict()
33
+ return name_to_number, number_to_fulltext
34
+
35
+ name_to_number, number_to_fulltext = load_optimized_dataset(data_files)
36
  print("Dataset loaded successfully.")
37
 
38
  # 로깅 설정
 
45
  intents.guilds = True
46
  intents.guild_messages = True
47
 
48
+ # 추론 API 클라이언트 설정 (예시로 포함, 실제로 사용되지 않음)
49
  hf_client = InferenceClient("CohereForAI/c4ai-command-r-plus", token=os.getenv("HF_TOKEN"))
50
 
51
  # 특정 채널 ID
 
90
 
91
  async def generate_response(message):
92
  global conversation_history
93
+ user_input = message.content.strip()
94
  user_mention = message.author.mention
95
+
96
+ # 입력이 사건명인지 사건번호인지 확인
97
+ if user_input in name_to_number:
98
+ case_number = name_to_number[user_input]
99
+ system_message = f"{user_mention}, '{user_input}' 사건의 사건번호는 다음과 같습니다:\n사건번호: {case_number}"
100
+ elif user_input in number_to_fulltext:
101
+ full_text = number_to_fulltext[user_input]
102
+ system_message = f"{user_mention}, 사건번호 '{user_input}'의 전문은 다음과 같습니다:\n\n{full_text}"
 
 
 
 
 
 
 
103
  else:
104
+ system_message = f"{user_mention}, 관련 법률 정보를 찾을 수 없습니다."
 
 
 
 
 
105
 
106
+ # 응답 보내기
107
+ await message.channel.send(system_message)
108
+ logging.debug(f'Full model response sent: {system_message}')
109
+ conversation_history.append({"role": "assistant", "content": system_message})
 
 
 
 
 
 
 
110
 
111
  if __name__ == "__main__":
112
  discord_client = MyClient(intents=intents)
113
  discord_client.run(os.getenv('DISCORD_TOKEN'))
114
+