Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -16,12 +16,19 @@ models = {
|
|
16 |
def get_client(model):
|
17 |
return InferenceClient(model=model, token=hf_token)
|
18 |
|
|
|
|
|
|
|
|
|
|
|
19 |
def respond(message, history, system_message, max_tokens, temperature, top_p, selected_model):
|
20 |
stop_event.clear()
|
21 |
client = InferenceClient(model=selected_model, token=hf_token)
|
22 |
|
|
|
|
|
23 |
messages = [{"role": "system", "content": system_message + "\n사용자의 입력에만 직접적으로 답변하세요. 추가 질문을 생성하거나 사용자의 입력을 확장하지 마세요."}]
|
24 |
-
messages.extend([{"role": "user" if i % 2 == 0 else "assistant", "content": m} for h in
|
25 |
messages.append({"role": "user", "content": message})
|
26 |
|
27 |
try:
|
@@ -37,21 +44,24 @@ def respond(message, history, system_message, max_tokens, temperature, top_p, se
|
|
37 |
break
|
38 |
if chunk:
|
39 |
response += chunk
|
40 |
-
# 응답의 시작 부분에서 사용자 입력의 반복을 제거
|
41 |
if response.startswith(message):
|
42 |
response = response[len(message):].lstrip()
|
43 |
-
yield
|
44 |
|
45 |
except Exception as e:
|
46 |
-
yield
|
47 |
|
48 |
-
def continue_writing(
|
49 |
-
if not
|
50 |
-
return "대화 내역이 없습니다."
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
|
|
|
|
|
|
|
|
55 |
|
56 |
def stop_generation():
|
57 |
stop_event.set()
|
|
|
16 |
def get_client(model):
|
17 |
return InferenceClient(model=model, token=hf_token)
|
18 |
|
19 |
+
MAX_HISTORY_LENGTH = 5 # 히스토리에 유지할 최대 대화 수
|
20 |
+
|
21 |
+
def truncate_history(history):
|
22 |
+
return history[-MAX_HISTORY_LENGTH:] if len(history) > MAX_HISTORY_LENGTH else history
|
23 |
+
|
24 |
def respond(message, history, system_message, max_tokens, temperature, top_p, selected_model):
|
25 |
stop_event.clear()
|
26 |
client = InferenceClient(model=selected_model, token=hf_token)
|
27 |
|
28 |
+
truncated_history = truncate_history(history)
|
29 |
+
|
30 |
messages = [{"role": "system", "content": system_message + "\n사용자의 입력에만 직접적으로 답변하세요. 추가 질문을 생성하거나 사용자의 입력을 확장하지 마세요."}]
|
31 |
+
messages.extend([{"role": "user" if i % 2 == 0 else "assistant", "content": m} for h in truncated_history for i, m in enumerate(h) if m])
|
32 |
messages.append({"role": "user", "content": message})
|
33 |
|
34 |
try:
|
|
|
44 |
break
|
45 |
if chunk:
|
46 |
response += chunk
|
|
|
47 |
if response.startswith(message):
|
48 |
response = response[len(message):].lstrip()
|
49 |
+
yield truncated_history + [(message, response)]
|
50 |
|
51 |
except Exception as e:
|
52 |
+
yield truncated_history + [(message, f"오류 발생: {str(e)}")]
|
53 |
|
54 |
+
def continue_writing(history, system_message, max_tokens, temperature, top_p, model):
|
55 |
+
if not history:
|
56 |
+
return [("시스템", "대화 내역이 없습니다.")]
|
57 |
+
|
58 |
+
truncated_history = truncate_history(history)
|
59 |
+
last_user_message = truncated_history[-1][0]
|
60 |
+
last_assistant_message = truncated_history[-1][1]
|
61 |
+
|
62 |
+
prompt = f"이전 대화를 간단히 요약하고 이어서 작성해주세요. 마지막 응답: {last_assistant_message[:100]}..."
|
63 |
+
|
64 |
+
return respond(prompt, truncated_history[:-1], system_message, max_tokens, temperature, top_p, model)
|
65 |
|
66 |
def stop_generation():
|
67 |
stop_event.set()
|