55명령어 예시: lang2sql --datahub_server http://localhost:8080 --run-streamlit
66"""
77
8+ import os
89import logging
910import subprocess
1011
1112import click
13+ import dotenv
1214
1315from llm_utils .check_server import CheckServer
1416from llm_utils .tools import set_gms_server
5254 "기본 포트는 8501이며, 포트 충돌을 피하거나 여러 인스턴스를 실행할 때 변경할 수 있습니다."
5355 ),
5456)
57+ @click .option (
58+ "--env-file-path" ,
59+ type = click .Path (exists = True , file_okay = True , dir_okay = False , readable = True ),
60+ help = "환경 변수를 로드할 .env 파일의 경로를 지정합니다. 지정하지 않으면 기본 경로를 사용합니다." ,
61+ )
62+ @click .option (
63+ "--prompt-dir-path" ,
64+ type = click .Path (exists = True , file_okay = False , dir_okay = True , readable = True ),
65+ help = "프롬프트 템플릿(.md 파일)이 저장된 디렉토리 경로를 지정합니다. 지정하지 않으면 기본 경로를 사용합니다." ,
66+ )
5567# pylint: disable=redefined-outer-name
5668def cli (
5769 ctx : click .Context ,
5870 datahub_server : str ,
5971 run_streamlit : bool ,
6072 port : int ,
73+ env_file_path : str = None ,
74+ prompt_dir_path : str = None ,
6175) -> None :
6276 """
6377 Datahub GMS 서버 URL을 설정하고, Streamlit 애플리케이션을 실행할 수 있는 CLI 명령 그룹입니다.
@@ -66,17 +80,43 @@ def cli(
6680 - 전달받은 'datahub_server' URL을 바탕으로 GMS 서버 연결을 설정합니다.
6781 - 설정 과정 중 오류가 발생하면 오류 메시지를 출력하고 프로그램을 종료합니다.
6882 - '--run-streamlit' 옵션이 활성화된 경우, 지정된 포트에서 Streamlit 웹 앱을 즉시 실행합니다.
83+ - '--env-file-path' 옵션이 지정된 경우, 해당 .env 파일에서 환경 변수를 로드합니다.
84+ - '--prompt-dir-path' 옵션이 지정된 경우, 해당 디렉토리에서 프롬프트 템플릿을 로드합니다.
6985
7086 매개변수:
7187 ctx (click.Context): 명령어 실행 컨텍스트 객체입니다.
7288 datahub_server (str): 설정할 Datahub GMS 서버의 URL입니다.
7389 run_streamlit (bool): Streamlit 앱을 실행할지 여부를 나타내는 플래그입니다.
7490 port (int): Streamlit 서버가 바인딩될 포트 번호입니다.
91+ env_file_path (str, optional): 환경 변수를 로드할 .env 파일 경로입니다.
92+ prompt_dir_path (str, optional): 프롬프트 템플릿을 로드할 디렉토리 경로입니다.
7593
7694 주의:
7795 'set_gms_server' 함수에서 ValueError가 발생할 경우, 프로그램은 비정상 종료(exit code 1)합니다.
7896 """
7997
98+ # 환경 변수 파일 로드
99+ if env_file_path :
100+ try :
101+ if not dotenv .load_dotenv (env_file_path , override = True ):
102+ click .secho (f"환경 변수 파일 로드 실패: { env_file_path } " , fg = "yellow" )
103+ else :
104+ click .secho (f"환경 변수 파일 로드 성공: { env_file_path } " , fg = "green" )
105+ except Exception as e :
106+ click .secho (f"환경 변수 로드 중 오류 발생: { str (e )} " , fg = "red" )
107+ ctx .exit (1 )
108+
109+ # 프롬프트 디렉토리를 환경 변수로 설정
110+ if prompt_dir_path :
111+ try :
112+ os .environ ["PROMPT_TEMPLATES_DIR" ] = prompt_dir_path
113+ click .secho (
114+ f"프롬프트 디렉토리 환경변수 설정됨: { prompt_dir_path } " , fg = "green"
115+ )
116+ except Exception as e :
117+ click .secho (f"프롬프트 디렉토리 환경변수 설정 실패: { str (e )} " , fg = "red" )
118+ ctx .exit (1 )
119+
80120 logger .info (
81121 "Initialization started: GMS server = %s, run_streamlit = %s, port = %d" ,
82122 datahub_server ,
0 commit comments