Spaces:
Sleeping
Sleeping
File size: 1,781 Bytes
5fc69e4 07f17f1 5fc69e4 ce27d3f 5fc69e4 07f17f1 5fc69e4 07f17f1 5fc69e4 07f17f1 5fc69e4 07f17f1 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
from fastapi import Request
from pipeline.preprocess import preprocess_input
from pipeline.generator import generate_response
from pipeline.postprocess import postprocess_fallback, postprocess_main
from models.fallback_model import generate_fallback_response
from .prompt_builder import build_main_prompt, build_fallback_prompt # ์์ ๋ prompt ๋น๋ ์ฌ์ฉ
async def handle_dialogue(
request: Request,
session_id: str,
npc_id: str,
user_input: str,
context: dict,
) -> dict:
"""
์ ์ฒด ๋ํ ์ฒ๋ฆฌ ํ์ดํ๋ผ์ธ:
1) preprocess_input() โ pre ๋ฐ์ดํฐ ์์ฑ
2) main ๊ฒฝ๋ก: main prompt โ main model โ postprocess_pipeline()
3) fallback ๊ฒฝ๋ก: fallback prompt โ fallback model โ fallback_final_check()
"""
# 1. Preprocess
pre = await preprocess_input(request, session_id, npc_id, user_input, context)
# 2. Fallback ๊ฒฝ๋ก
if not pre.get("is_valid", True):
# fallback prompt ๊ตฌ์ฑ (๋ด๋ถ์์ additional_trigger ๊ธฐ๋ฐ ๋ถ๊ธฐ)
fb_prompt = build_fallback_prompt(pre, session_id, npc_id)
# fallback model ํธ์ถ
fb_raw = await generate_fallback_response(request, fb_prompt)
return_payload_fb = postprocess_fallback(request, pre, fb_raw)
return return_payload_fb
# 3. Main ๊ฒฝ๋ก
main_prompt = build_main_prompt(pre, session_id, npc_id)
# main model ํธ์ถ
result = await generate_response(session_id, npc_id, main_prompt, max_tokens=200)
# postprocess_pipeline์์ ์ต์ข
payload ์์ฑ
return_payload_main = await postprocess_main(
request=request,
pre_data=pre, # preprocess ๊ฒฐ๊ณผ ์ ์ฒด ์ ๋ฌ
model_payload=result, # main model ์ถ๋ ฅ
)
return return_payload_main
|