Spaces:
Sleeping
Sleeping
Update api.py
Browse files
api.py
CHANGED
@@ -288,10 +288,6 @@ class SimilarityMemory:
|
|
288 |
# ํ
์คํธ
|
289 |
memory = SimilarityMemory()
|
290 |
|
291 |
-
memory.add("์ด์ ๋ ๊ธฐ๋ถ์ด ๋ณ๋ก์์ด")
|
292 |
-
memory.add("์ํ ๋ณด๋ฌ ๊ฐ๋ค๊ฐ ์น๊ตฌ๋ ์ธ์ ์ด")
|
293 |
-
memory.add("์นดํ์์ ๊ณต๋ถํ๋๋ฐ ์ง์ค์ด ์ ๋์ด")
|
294 |
-
|
295 |
def merge_prompt_with_memory(prompt: str, memories: list):
|
296 |
context = "\n".join(f"{mem}" for mem in memories)
|
297 |
return f"{context} {prompt}"
|
@@ -395,34 +391,56 @@ def parse_math_question(text):
|
|
395 |
except:
|
396 |
return "๊ณ์ฐํ ์ ์๋ ์์์ด์์. ๋ค์ ํ๋ฒ ํ์ธํด ์ฃผ์ธ์!"
|
397 |
|
|
|
398 |
def respond(input_text):
|
|
|
|
|
|
|
399 |
intent = simple_intent_classifier(input_text)
|
400 |
|
401 |
if "์ด๋ฆ" in input_text:
|
402 |
-
|
|
|
|
|
403 |
|
404 |
if "๋๊ตฌ" in input_text:
|
405 |
-
|
|
|
|
|
406 |
|
407 |
if intent == "์ํ์ง๋ฌธ":
|
408 |
-
|
|
|
|
|
409 |
|
410 |
if intent == "์ ๋ณด์ง๋ฌธ":
|
411 |
keyword = re.sub(r"(์ ๋ํด|์ ๋ํ|์ ๋ํด์)?\s*(์ค๋ช
ํด์ค|์๋ ค์ค|๋ญ์ผ|๊ฐ๋
|์ ์|์ ๋ณด)?", "", input_text).strip()
|
412 |
if not keyword:
|
413 |
-
|
|
|
|
|
414 |
summary = summarize_from_wikipedia(keyword)
|
415 |
-
|
|
|
|
|
416 |
|
417 |
-
#
|
418 |
related_memories = memory.retrieve(input_text, top_k=3)
|
419 |
merged_prompt = merge_prompt_with_memory(input_text, related_memories)
|
420 |
|
|
|
421 |
response = generate_text_sample(model, merged_prompt)
|
|
|
|
|
422 |
if not is_valid_response(response) or mismatch_tone(input_text, response):
|
423 |
response = generate_text_sample(model, merged_prompt)
|
|
|
|
|
|
|
|
|
424 |
return response
|
425 |
|
|
|
426 |
@app.get("/generate", response_class=PlainTextResponse)
|
427 |
async def generate(request: Request):
|
428 |
prompt = request.query_params.get("prompt", "์๋
ํ์ธ์")
|
|
|
288 |
# ํ
์คํธ
|
289 |
memory = SimilarityMemory()
|
290 |
|
|
|
|
|
|
|
|
|
291 |
def merge_prompt_with_memory(prompt: str, memories: list):
|
292 |
context = "\n".join(f"{mem}" for mem in memories)
|
293 |
return f"{context} {prompt}"
|
|
|
391 |
except:
|
392 |
return "๊ณ์ฐํ ์ ์๋ ์์์ด์์. ๋ค์ ํ๋ฒ ํ์ธํด ์ฃผ์ธ์!"
|
393 |
|
394 |
+
|
395 |
def respond(input_text):
|
396 |
+
# 1) ์ฌ์ฉ์ ์
๋ ฅ ๊ธฐ์ต์ ์ ์ฅ (์ํ๋ฉด)
|
397 |
+
memory.add(input_text)
|
398 |
+
|
399 |
intent = simple_intent_classifier(input_text)
|
400 |
|
401 |
if "์ด๋ฆ" in input_text:
|
402 |
+
response = "์ ์ด๋ฆ์ Flexi์
๋๋ค."
|
403 |
+
memory.add(response) # ๋ต๋ณ๋ ๊ธฐ์ต์ ์ถ๊ฐ ๊ฐ๋ฅ
|
404 |
+
return response
|
405 |
|
406 |
if "๋๊ตฌ" in input_text:
|
407 |
+
response = "์ ๋ Flexi๋ผ๊ณ ํด์."
|
408 |
+
memory.add(response)
|
409 |
+
return response
|
410 |
|
411 |
if intent == "์ํ์ง๋ฌธ":
|
412 |
+
response = parse_math_question(input_text)
|
413 |
+
memory.add(response)
|
414 |
+
return response
|
415 |
|
416 |
if intent == "์ ๋ณด์ง๋ฌธ":
|
417 |
keyword = re.sub(r"(์ ๋ํด|์ ๋ํ|์ ๋ํด์)?\s*(์ค๋ช
ํด์ค|์๋ ค์ค|๋ญ์ผ|๊ฐ๋
|์ ์|์ ๋ณด)?", "", input_text).strip()
|
418 |
if not keyword:
|
419 |
+
response = "์ด๋ค ์ฃผ์ ์ ๋ํด ๊ถ๊ธํ๊ฐ์?"
|
420 |
+
memory.add(response)
|
421 |
+
return response
|
422 |
summary = summarize_from_wikipedia(keyword)
|
423 |
+
response = f"{summary}\n๋ค๋ฅธ ๊ถ๊ธํ ์ ์์ผ์ ๊ฐ์?"
|
424 |
+
memory.add(response)
|
425 |
+
return response
|
426 |
|
427 |
+
# ๊ธฐ์ต์์ ์ ์ฌ ๋ฌธ์ฅ ๊บผ๋ด์ ํ๋กฌํํธ ๋ง๋ค๊ธฐ
|
428 |
related_memories = memory.retrieve(input_text, top_k=3)
|
429 |
merged_prompt = merge_prompt_with_memory(input_text, related_memories)
|
430 |
|
431 |
+
# ๋ชจ๋ธ๋ก ์๋ต ์์ฑ
|
432 |
response = generate_text_sample(model, merged_prompt)
|
433 |
+
|
434 |
+
# ์๋ต ๊ฒ์ฆ, ์ ๋ง์ผ๋ฉด ์ฌ์์ฑ
|
435 |
if not is_valid_response(response) or mismatch_tone(input_text, response):
|
436 |
response = generate_text_sample(model, merged_prompt)
|
437 |
+
|
438 |
+
# ์ต์ข
์๋ต๋ ๊ธฐ์ต์ ์ถ๊ฐ
|
439 |
+
memory.add(response)
|
440 |
+
|
441 |
return response
|
442 |
|
443 |
+
|
444 |
@app.get("/generate", response_class=PlainTextResponse)
|
445 |
async def generate(request: Request):
|
446 |
prompt = request.query_params.get("prompt", "์๋
ํ์ธ์")
|