AIRider commited on
Commit
48a4d38
·
verified ·
1 Parent(s): d6bc4b8

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -11
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 history for i, m in enumerate(h) if m])
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 history + [(message, response)]
44
 
45
  except Exception as e:
46
- yield history + [(message, f"오류 발생: {str(e)}")]
47
 
48
- def continue_writing(message, chat_history, system_message, max_tokens, temperature, top_p, selected_model):
49
- if not chat_history:
50
- return "대화 내역이 없습니다."
51
- last_user_message = chat_history[-1][0]
52
- last_assistant_message = chat_history[-1][1]
53
- prompt = f"이전 대화를 계속 이어서 작성해주세요. 이전 응답: {last_assistant_message}"
54
- return respond(prompt, chat_history, system_message, max_tokens, temperature, top_p, selected_model)
 
 
 
 
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()