1111main_agent_schema = {
1212 "type" : "object" ,
1313 "properties" : {
14- "intent" : {
15- "type" : "string" ,
16- "description" : "유저의 의도 (search, end 등)"
17- },
18- "user_input" : {
19- "type" : "string" ,
20- "description" : "유저의 입력"
21- },
22- "intent_reason" : {
23- "type" : "string" ,
24- "description" : "유저의 의도 파악 이유"
25- },
14+ "intent" : {"type" : "string" , "description" : "유저의 의도 (search, end 등)" },
15+ "user_input" : {"type" : "string" , "description" : "유저의 입력" },
16+ "intent_reason" : {"type" : "string" , "description" : "유저의 의도 파악 이유" },
2617 },
27- "required" : ["intent" , "user_input" ]
18+ "required" : ["intent" , "user_input" ],
2819}
2920main_agent_parser = JsonOutputParser (schema = main_agent_schema )
3021
22+
3123def manager_agent (state : QueryMakerState ) -> dict :
3224 """
3325 가장 처음 시작하는 agent로 질문의 유무를 판단해서 적절한 Agent를 호출합니다.
@@ -36,26 +28,32 @@ def manager_agent(state: QueryMakerState) -> dict:
3628 manager_agent_prompt = get_prompt_template ("manager_agent_prompt" )
3729 messages = [SystemMessage (content = manager_agent_prompt ), state ["messages" ][- 1 ]]
3830 response = llm .invoke (messages )
39-
31+
4032 try :
4133 parsed_output = main_agent_parser .parse (response .content )
42- state .update ({
43- "messages" : state ["messages" ] + [response ], # 기록용
44- "intent" : parsed_output .get ("intent" , "end" ), # 분기용
45- "user_input" : parsed_output .get ("user_input" ,state ['messages' ][- 1 ].content ), # SQL 쿼리 변환 대상 질문
46- "intent_reason" : parsed_output .get ("intent_reason" , "" ) # 분기 이유
47- })
34+ state .update (
35+ {
36+ "messages" : state ["messages" ] + [response ], # 기록용
37+ "intent" : parsed_output .get ("intent" , "end" ), # 분기용
38+ "user_input" : parsed_output .get (
39+ "user_input" , state ["messages" ][- 1 ].content
40+ ), # SQL 쿼리 변환 대상 질문
41+ "intent_reason" : parsed_output .get ("intent_reason" , "" ), # 분기 이유
42+ }
43+ )
4844 return state
49-
45+
5046 except Exception as e :
5147 print (f"<<error main-agent: { e } >>" )
52- state .update ({
53- "messages" : state ["messages" ] + [AIMessage (content = response .content )],
54- "intent" : "end" ,
55- "intent_reason" : response .content
56- })
48+ state .update (
49+ {
50+ "messages" : state ["messages" ] + [AIMessage (content = response .content )],
51+ "intent" : "end" ,
52+ "intent_reason" : response .content ,
53+ }
54+ )
5755 return state
58-
56+
5957
6058def manager_agent_edge (state : QueryMakerState ) -> str :
6159 """
@@ -65,5 +63,4 @@ def manager_agent_edge(state: QueryMakerState) -> str:
6563 if state .get ("intent" ) == "make_query" :
6664 return "make_query"
6765 else :
68- return "end" # end 시 최종 출력 값 반환
69-
66+ return "end" # end 시 최종 출력 값 반환
0 commit comments