@@ -140,12 +140,21 @@ def context_enrichment_node(state: QueryMakerState):
140140 searched_tables = state ["searched_tables" ]
141141 searched_tables_json = json .dumps (searched_tables , ensure_ascii = False , indent = 2 )
142142
143- question_profile = state ["question_profile" ].model_dump ()
143+ # question_profile이 BaseModel인 경우 model_dump() 사용, dict인 경우 그대로 사용
144+ if hasattr (state ["question_profile" ], "model_dump" ):
145+ question_profile = state ["question_profile" ].model_dump ()
146+ else :
147+ question_profile = state ["question_profile" ]
144148 question_profile_json = json .dumps (question_profile , ensure_ascii = False , indent = 2 )
145149
150+ # refined_input이 없는 경우 초기 사용자 입력 사용
151+ refined_question = state .get ("refined_input" , state ["messages" ][0 ].content )
152+ if hasattr (refined_question , "content" ):
153+ refined_question = refined_question .content
154+
146155 enriched_text = query_enrichment_chain .invoke (
147156 input = {
148- "refined_question" : state [ "refined_input" ] ,
157+ "refined_question" : refined_question ,
149158 "profiles" : question_profile_json ,
150159 "related_tables" : searched_tables_json ,
151160 }
@@ -207,3 +216,33 @@ def query_maker_node_with_db_guide(state: QueryMakerState):
207216 state ["generated_query" ] = res .sql
208217 state ["messages" ].append (res .explanation )
209218 return state
219+
220+
221+ # 노드 함수: QUERY_MAKER 노드 (refined_input 없이)
222+ def query_maker_node_without_refiner (state : QueryMakerState ):
223+ """
224+ refined_input 없이 초기 사용자 입력만을 사용하여 SQL을 생성하는 노드입니다.
225+
226+ 이 노드는 QUERY_REFINER 단계를 건너뛰고, 초기 사용자 입력, 프로파일 정보,
227+ 컨텍스트 보강 정보를 모두 활용하여 SQL을 생성합니다.
228+ """
229+ # 컨텍스트 보강된 질문 (refined_input이 없는 경우 초기 입력 사용)
230+ enriched_question = state .get ("refined_input" , state ["messages" ][0 ])
231+
232+ # enriched_question이 AIMessage인 경우 content 추출, 문자열인 경우 그대로 사용
233+ if hasattr (enriched_question , "content" ):
234+ enriched_question_content = enriched_question .content
235+ else :
236+ enriched_question_content = str (enriched_question )
237+
238+ res = query_maker_chain .invoke (
239+ input = {
240+ "user_input" : [state ["messages" ][0 ].content ],
241+ "refined_input" : [enriched_question_content ],
242+ "searched_tables" : [json .dumps (state ["searched_tables" ])],
243+ "user_database_env" : [state ["user_database_env" ]],
244+ }
245+ )
246+ state ["generated_query" ] = res
247+ state ["messages" ].append (res )
248+ return state
0 commit comments