11import os
2- from langchain_core .prompts import ChatPromptTemplate , MessagesPlaceholder
2+ from langchain_core .prompts import ChatPromptTemplate , MessagesPlaceholder , load_prompt , SystemMessagePromptTemplate
33
44from .llm_factory import get_llm
55
@@ -74,36 +74,10 @@ def create_query_refiner_chain(llm):
7474
7575# QueryMakerChain
7676def create_query_maker_chain (llm ):
77+ prompt = load_prompt ("../prompt/system_prompt.yaml" , encoding = "utf-8" )
7778 query_maker_prompt = ChatPromptTemplate .from_messages (
7879 [
79- (
80- "system" ,
81- """
82- 당신은 데이터 분석 전문가(데이터 분석가 페르소나)입니다.
83- 사용자의 질문을 기반으로, 주어진 테이블과 컬럼 정보를 활용하여 적절한 SQL 쿼리를 생성하세요.
84-
85- 주의사항:
86- - 사용자의 질문이 다소 모호하더라도, 주어진 데이터를 참고하여 합리적인 가정을 통해 SQL 쿼리를 완성하세요.
87- - 불필요한 재질문 없이, 가능한 가장 명확한 분석 쿼리를 만들어 주세요.
88- - 최종 출력 형식은 반드시 아래와 같아야 합니다.
89-
90- 최종 형태 예시:
91-
92- <SQL>
93- ```sql
94- SELECT COUNT(DISTINCT user_id)
95- FROM stg_users
96- ```
97-
98- <해석>
99- ```plaintext (max_length_per_line=100)
100- 이 쿼리는 stg_users 테이블에서 고유한 사용자의 수를 계산합니다.
101- 사용자는 유니크한 user_id를 가지고 있으며
102- 중복을 제거하기 위해 COUNT(DISTINCT user_id)를 사용했습니다.
103- ```
104-
105- """ ,
106- ),
80+ SystemMessagePromptTemplate .from_template (prompt .template ),
10781 (
10882 "system" ,
10983 "아래는 사용자의 질문 및 구체화된 질문입니다:" ,
@@ -127,3 +101,6 @@ def create_query_maker_chain(llm):
127101
128102query_refiner_chain = create_query_refiner_chain (llm )
129103query_maker_chain = create_query_maker_chain (llm )
104+
105+ if __name__ == "__main__" :
106+ query_refiner_chain .invoke ()
0 commit comments