SayknowLab commited on
Commit
a69dc25
·
verified ·
1 Parent(s): 5914126

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +11 -3
app.py CHANGED
@@ -4,6 +4,7 @@ from flask import Flask, request, Response
4
  from transformers import AutoTokenizer, GPT2LMHeadModel
5
  from dicttoxml import dicttoxml
6
  import traceback
 
7
 
8
  app = Flask(__name__)
9
 
@@ -22,6 +23,9 @@ except Exception as e:
22
  print(f"데이터셋 로드 에러: {e}")
23
  knowledge_list = []
24
 
 
 
 
25
  def find_relevant_context(query, top_n=2):
26
  """질문과 관련된 지식 데이터 문장 최대 top_n개 반환"""
27
  query_words = query.replace(" ", "").lower()
@@ -60,7 +64,7 @@ def ask_sayknow(query):
60
  gen_ids = model.generate(
61
  input_ids,
62
  attention_mask=attention_mask,
63
- max_new_tokens=200,
64
  min_length=5,
65
  repetition_penalty=1.3,
66
  do_sample=True,
@@ -90,14 +94,18 @@ def ask_sayknow(query):
90
  traceback.print_exc()
91
  return f"내부 오류: {str(e)}"
92
 
93
- # --- 3. API (XML 응답) ---
94
  @app.route('/chatapi.html', methods=['GET'])
95
  @app.route('/index.html', methods=['GET'])
96
  def chat_api():
97
  query = request.args.get('askdata', '')
98
  if not query:
99
  result = {"status": "error", "message": "No data"}
100
- else:
 
 
 
 
101
  try:
102
  answer = ask_sayknow(query)
103
  result = {
 
4
  from transformers import AutoTokenizer, GPT2LMHeadModel
5
  from dicttoxml import dicttoxml
6
  import traceback
7
+ from threading import Lock # ← 추가
8
 
9
  app = Flask(__name__)
10
 
 
23
  print(f"데이터셋 로드 에러: {e}")
24
  knowledge_list = []
25
 
26
+ # --- 3. 동시 요청 제한용 Lock ---
27
+ request_lock = Lock()
28
+
29
  def find_relevant_context(query, top_n=2):
30
  """질문과 관련된 지식 데이터 문장 최대 top_n개 반환"""
31
  query_words = query.replace(" ", "").lower()
 
64
  gen_ids = model.generate(
65
  input_ids,
66
  attention_mask=attention_mask,
67
+ max_new_tokens=100, # ← 200 -> 100으로 줄여 워커 점유 시간 단축
68
  min_length=5,
69
  repetition_penalty=1.3,
70
  do_sample=True,
 
94
  traceback.print_exc()
95
  return f"내부 오류: {str(e)}"
96
 
97
+ # --- 4. API (XML 응답) ---
98
  @app.route('/chatapi.html', methods=['GET'])
99
  @app.route('/index.html', methods=['GET'])
100
  def chat_api():
101
  query = request.args.get('askdata', '')
102
  if not query:
103
  result = {"status": "error", "message": "No data"}
104
+ xml_output = dicttoxml(result, custom_root='SayknowAPI', attr_type=False)
105
+ return Response(xml_output, mimetype='text/xml')
106
+
107
+ # ← Lock으로 요청 순차 처리
108
+ with request_lock:
109
  try:
110
  answer = ask_sayknow(query)
111
  result = {