Skip to content

Commit a204bbb

Browse files
nonegomchanguk
authored andcommitted
feat: prompt load from prompt file
1 parent dc1b65f commit a204bbb

File tree

2 files changed

+33
-29
lines changed

2 files changed

+33
-29
lines changed

llm_utils/chains.py

Lines changed: 6 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import os
2-
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
2+
from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder, load_prompt, SystemMessagePromptTemplate
33

44
from .llm_factory import get_llm
55

@@ -74,36 +74,10 @@ def create_query_refiner_chain(llm):
7474

7575
# QueryMakerChain
7676
def 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

128102
query_refiner_chain = create_query_refiner_chain(llm)
129103
query_maker_chain = create_query_maker_chain(llm)
104+
105+
if __name__ == "__main__":
106+
query_refiner_chain.invoke()

prompt/system_prompt.yaml

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
_type: prompt
2+
template: |
3+
당신은 데이터 분석 전문가(데이터 분석가 페르소나)입니다.
4+
사용자의 질문을 기반으로, 주어진 테이블과 컬럼 정보를 활용하여 적절한 SQL 쿼리를 생성하세요.
5+
6+
주의사항:
7+
- 사용자의 질문이 다소 모호하더라도, 주어진 데이터를 참고하여 합리적인 가정을 통해 SQL 쿼리를 완성하세요.
8+
- 불필요한 재질문 없이, 가능한 가장 명확한 분석 쿼리를 만들어 주세요.
9+
- 최종 출력 형식은 반드시 아래와 같아야 합니다.
10+
11+
최종 형태 예시:
12+
13+
<SQL>
14+
```sql
15+
SELECT COUNT(DISTINCT user_id)
16+
FROM stg_users
17+
```
18+
19+
<해석>
20+
```plaintext (max_length_per_line=100)
21+
이 쿼리는 stg_users 테이블에서 고유한 사용자의 수를 계산합니다.
22+
사용자는 유니크한 user_id를 가지고 있으며
23+
중복을 제거하기 위해 COUNT(DISTINCT user_id)를 사용했습니다.
24+
```
25+
template_format: f-string
26+
name: query chain 시스템 프롬프트
27+
description: query의 기본이 되는 시스템 프롬프트입니다

0 commit comments

Comments
 (0)