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