|
7 | 7 | # 통합 프롬프트 템플릿 |
8 | 8 |
|
9 | 9 |
|
10 | | -general_prompt = PromptTemplate.from_template(""" |
| 10 | +general_prompt = PromptTemplate.from_template( |
| 11 | + """ |
11 | 12 | 당신은 {goal} 분야의 따뜻하고 실용적인 전문가입니다. |
12 | 13 |
|
13 | 14 | [사용자 요청] |
|
17 | 18 | 요청 유형: {intent} |
18 | 19 |
|
19 | 20 | {extra_instruction} |
20 | | -""") |
21 | | - |
| 21 | +""" |
| 22 | +) |
22 | 23 |
|
23 | 24 |
|
24 | 25 | # 일반 응답 (피드백, 로드맵) |
25 | 26 | def get_response(goal: str, user_input: str, intent: str) -> str: |
26 | | - instruction = "사용자의 질문에 전문가로서 조언이나 피드백을 제공해주세요." if intent == "피드백" else \ |
27 | | - "사용자의 목표에 맞는 단계별 학습 로드맵이나 실천 계획을 제시해주세요." if intent == "로드맵" else \ |
28 | | - "질문에 대해 상황을 이해하고 적절한 조언을 제공해주세요." |
| 27 | + instruction = ( |
| 28 | + "사용자의 질문에 전문가로서 조언이나 피드백을 제공해주세요." |
| 29 | + if intent == "피드백" |
| 30 | + else ( |
| 31 | + "사용자의 목표에 맞는 단계별 학습 로드맵이나 실천 계획을 제시해주세요." |
| 32 | + if intent == "로드맵" |
| 33 | + else "질문에 대해 상황을 이해하고 적절한 조언을 제공해주세요." |
| 34 | + ) |
| 35 | + ) |
| 36 | + |
| 37 | + return llm.invoke( |
| 38 | + general_prompt.format( |
| 39 | + goal=goal, |
| 40 | + user_input=user_input, |
| 41 | + intent=intent, |
| 42 | + extra_instruction=instruction, |
| 43 | + ) |
| 44 | + ).content.strip() |
29 | 45 |
|
30 | | - return llm.invoke(general_prompt.format( |
31 | | - goal=goal, |
32 | | - user_input=user_input, |
33 | | - intent=intent, |
34 | | - extra_instruction=instruction |
35 | | - )).content.strip() |
36 | 46 |
|
37 | 47 | get_english_response = lambda u, i: get_response("영어", u, i) |
38 | 48 | get_coding_response = lambda u, i: get_response("코딩", u, i) |
39 | 49 | get_fitness_response = lambda u, i: get_response("운동", u, i) |
40 | 50 |
|
41 | 51 |
|
42 | | - |
43 | 52 | # 문제 생성 |
44 | 53 | def get_question(goal: str, user_input: str) -> str: |
45 | 54 | instruction = f"{goal} 분야의 간단한 퀴즈나 연습 문제를 생성해주세요. 상황이나 감정도 반영해주세요." |
46 | | - return llm.invoke(general_prompt.format( |
47 | | - goal=goal, |
48 | | - user_input=user_input, |
49 | | - intent="문제 생성", |
50 | | - extra_instruction=instruction |
51 | | - )).content.strip() |
| 55 | + return llm.invoke( |
| 56 | + general_prompt.format( |
| 57 | + goal=goal, |
| 58 | + user_input=user_input, |
| 59 | + intent="문제 생성", |
| 60 | + extra_instruction=instruction, |
| 61 | + ) |
| 62 | + ).content.strip() |
| 63 | + |
52 | 64 |
|
53 | 65 | get_english_question = lambda u: get_question("영어", u) |
54 | 66 | get_coding_question = lambda u: get_question("코딩", u) |
55 | 67 |
|
56 | 68 |
|
57 | | - |
58 | 69 | # 정보 제공 |
59 | 70 | def get_info(goal: str, user_input: str) -> str: |
60 | 71 | instruction = f"{goal}과 관련된 시험, 자격증, 학습 팁, 활동 정보 등을 전문가 입장에서 자세히 제공해주세요." |
61 | | - return llm.invoke(general_prompt.format( |
62 | | - goal=goal, |
63 | | - user_input=user_input, |
64 | | - intent="정보 제공", |
65 | | - extra_instruction=instruction |
66 | | - )).content.strip() |
| 72 | + return llm.invoke( |
| 73 | + general_prompt.format( |
| 74 | + goal=goal, |
| 75 | + user_input=user_input, |
| 76 | + intent="정보 제공", |
| 77 | + extra_instruction=instruction, |
| 78 | + ) |
| 79 | + ).content.strip() |
| 80 | + |
67 | 81 |
|
68 | 82 | get_english_info = lambda u: get_info("영어", u) |
69 | 83 | get_coding_info = lambda u: get_info("코딩", u) |
70 | 84 | get_fitness_info = lambda u: get_info("운동", u) |
71 | 85 |
|
72 | 86 |
|
73 | | - |
74 | 87 | # 멘탈케어 응답 |
75 | 88 | def get_mentalcare(goal: str, user_input: str) -> str: |
76 | 89 | instruction = f""" |
77 | 90 | 당신은 {goal} 분야의 학습이나 실천 과정에서 지친 사람에게 |
78 | 91 | 공감과 위로, 회복을 돕는 따뜻한 메시지를 전달하는 전문가입니다. |
79 | 92 | 현재 감정과 상황을 고려하여 부담스럽지 않게 응원해주세요. |
80 | 93 | """ |
81 | | - return llm.invoke(general_prompt.format( |
82 | | - goal=goal, |
83 | | - user_input=user_input, |
84 | | - intent="멘탈케어", |
85 | | - extra_instruction=instruction |
86 | | - )).content.strip() |
| 94 | + return llm.invoke( |
| 95 | + general_prompt.format( |
| 96 | + goal=goal, |
| 97 | + user_input=user_input, |
| 98 | + intent="멘탈케어", |
| 99 | + extra_instruction=instruction, |
| 100 | + ) |
| 101 | + ).content.strip() |
| 102 | + |
87 | 103 |
|
88 | 104 | get_english_mentalcare = lambda u: get_mentalcare("영어", u) |
89 | 105 | get_coding_mentalcare = lambda u: get_mentalcare("코딩", u) |
|
0 commit comments