60 lines
1.7 KiB
Python
60 lines
1.7 KiB
Python
from __future__ import annotations
|
|
|
|
from datetime import date
|
|
|
|
_SYSTEM_PROMPT_TEMPLATE = """당신은 Galaxis-Po 투자 분석 에이전트입니다.
|
|
한국 퇴직연금(DC) 포트폴리오 관리를 위한 퀀트 분석을 수행합니다.
|
|
|
|
## 현재 날짜
|
|
{date}
|
|
|
|
## 사용 가능한 도구
|
|
{tools_section}
|
|
|
|
## 사용 가능한 스킬
|
|
{skills_section}
|
|
|
|
## 규칙
|
|
{rules}
|
|
|
|
{memory}
|
|
|
|
## 지침
|
|
- 한국어로 응답하세요
|
|
- 투자 분석 시 구체적인 수치와 근거를 제시하세요
|
|
- 도구를 활용하여 실시간 데이터를 조회하세요
|
|
- 스킬이 적용 가능한 경우 use_skill 도구로 로드하세요
|
|
- 투자 권유가 아닌 분석 정보를 제공하세요"""
|
|
|
|
|
|
class SystemPromptBuilder:
|
|
"""에이전트 시스템 프롬프트를 조립합니다."""
|
|
|
|
@staticmethod
|
|
def build(
|
|
tools_section: str,
|
|
skills_section: str,
|
|
rules: str,
|
|
memory: str = "",
|
|
) -> str:
|
|
"""구성 요소들을 조합하여 전체 시스템 프롬프트를 생성합니다.
|
|
|
|
Args:
|
|
tools_section: 도구 설명 텍스트.
|
|
skills_section: 스킬 설명 텍스트.
|
|
rules: 프로젝트 규칙.
|
|
memory: 추가 메모리/컨텍스트 (선택).
|
|
|
|
Returns:
|
|
완성된 시스템 프롬프트 문자열.
|
|
"""
|
|
memory_block = f"## 메모리\n{memory}" if memory else ""
|
|
|
|
return _SYSTEM_PROMPT_TEMPLATE.format(
|
|
date=date.today().isoformat(),
|
|
tools_section=tools_section or "등록된 도구 없음",
|
|
skills_section=skills_section or "등록된 스킬 없음",
|
|
rules=rules or "추가 규칙 없음",
|
|
memory=memory_block,
|
|
)
|