From a2b276222616b184f3d1b4965fa3982e5799108c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B4=89=EA=B7=A0?= Date: Tue, 13 May 2025 11:57:35 +0900 Subject: [PATCH 1/2] feat: setup.py --- .env.example | 66 -------------------------------------------------- pyproject.toml | 51 -------------------------------------- setup.py | 20 ++++++++++++--- 3 files changed, 17 insertions(+), 120 deletions(-) delete mode 100644 .env.example delete mode 100644 pyproject.toml diff --git a/.env.example b/.env.example deleted file mode 100644 index 7403b34..0000000 --- a/.env.example +++ /dev/null @@ -1,66 +0,0 @@ -############################################### -############## LLM API SELECTION ############## -############################################### - -# LLM_PROVIDER=openai -# OPEN_AI_LLM_KEY= -# OPEN_AI_LLM_MODEL=gpt-4o - -# LLM_PROVIDER=gemini -# GEMINI_API_KEY= -# GEMINI_LLM_MODEL=gemini-2.0-flash-lite - -# LLM_PROVIDER=azure -# AZURE_OPENAI_LLM_ENDPOINT= -# AZURE_OPENAI_LLM_KEY= -# AZURE_OPENAI_LLM_MODEL= -# AZURE_OPENAI_LLM_API_VERSION= - -# LLM_PROVIDER=ollama -# OLLAMA_LLM_BASE_URL= -# OLLAMA_LLM_MODEL= - -# LLM_PROVIDER=huggingface -# HUGGING_FACE_LLM_REPO_ID= -# HUGGING_FACE_LLM_ENDPOINT= -# HUGGING_FACE_LLM_API_TOKEN= - -# LLM_PROVIDER=bedrock -# AWS_BEDROCK_LLM_ACCESS_KEY_ID= -# AWS_BEDROCK_LLM_SECRET_ACCESS_KEY= -# AWS_BEDROCK_LLM_REGION=us-west-2 -# AWS_BEDROCK_LLM_ENDPOINT_URL=https://bedrock.us-west-2.amazonaws.com -# AWS_BEDROCK_LLM_MODEL=anthropic.claude-3-5-sonnet-20241022-v2:0\ - -############################################### -########### Embedding API SElECTION ########### -############################################### -# Only used if you are using an LLM that does not natively support embedding (openai or Azure) -# EMBEDDING_ENGINE='openai' -# OPEN_AI_KEY=sk-xxxx -# EMBEDDING_MODEL_PREF='text-embedding-ada-002' - -# EMBEDDING_ENGINE='azure' -# AZURE_OPENAI_ENDPOINT= -# AZURE_OPENAI_KEY= -# EMBEDDING_MODEL_PREF='my-embedder-model' # This is the "deployment" on Azure you want to use for embeddings. Not the base model. Valid base model is text-embedding-ada-002 - -# EMBEDDING_ENGINE='ollama' -# EMBEDDING_BASE_PATH='http://host.docker.internal:11434' -# EMBEDDING_MODEL_PREF='nomic-embed-text:latest' -# EMBEDDING_MODEL_MAX_CHUNK_LENGTH=8192 - -# EMBEDDING_ENGINE='bedrock' -# AWS_BEDROCK_EMBEDDING_ACCESS_KEY_ID= -# AWS_BEDROCK_EMBEDDING_ACCESS_KEY= -# AWS_BEDROCK_EMBEDDING_REGION=us-west-2 -# AWS_BEDROCK_EMBEDDING_MODEL_PREF=amazon.embedding-embedding-ada-002:0 - -# EMBEDDING_ENGINE='gemini' -# GEMINI_EMBEDDING_API_KEY= -# EMBEDDING_MODEL_PREF='text-embedding-004' - -# EMBEDDING_ENGINE='huggingface' -# HUGGING_FACE_EMBEDDING_REPO_ID= -# HUGGING_FACE_EMBEDDING_MODEL= -# HUGGING_FACE_EMBEDDING_API_TOKEN= diff --git a/pyproject.toml b/pyproject.toml deleted file mode 100644 index 3297e1f..0000000 --- a/pyproject.toml +++ /dev/null @@ -1,51 +0,0 @@ -[tool.black] -line-length = 88 -target-version = ['py311'] -include = '\.pyi?$' -exclude = ''' -( - /( - \.git - | \.venv - | build - | dist - )/ -) -''' - -[tool.poetry.group.dev.dependencies] -pytest = "^8.3.5" - -[project] -name = "lang2sql" -version = "0.1.9" -description = "" -authors = [ - {name = "Yoonjin Hwang",email = "21603682@hankooktech.com"} -] -readme = "README.md" -requires-python = ">=3.11, <4.0" -dependencies = [ - "langgraph (==0.2.62)", - "datahub (==0.999.1)", - "langchain (==0.3.14)", - "langchain-community (==0.3.14)", - "openai (==1.59.8)", - "langchain-openai (==0.3.0)", - "streamlit (==1.41.1)", - "python-dotenv (==1.0.1)", - "faiss-cpu (==1.10.0)", - "pre-commit (==4.1.0)", - "setuptools (>=78.1.1,<79.0.0)", - "wheel (>=0.45.1,<0.46.0)", - "twine (>=6.1.0,<7.0.0)", - "langchain-aws (>=0.2.21,<0.3.0)", - "langchain-google-genai (>=2.1.3,<3.0.0)", - "langchain-ollama (>=0.3.2,<0.4.0)", - "langchain-huggingface (>=0.1.2,<0.2.0)" -] - - -[build-system] -requires = ["poetry-core>=2.0.0,<3.0.0"] -build-backend = "poetry.core.masonry.api" diff --git a/setup.py b/setup.py index 78f0612..ca517f6 100644 --- a/setup.py +++ b/setup.py @@ -1,11 +1,17 @@ # setup.py from setuptools import setup, find_packages +import os +import glob -with open("docs/README.md", "r", encoding="utf-8") as fh: +with open("README.md", "r", encoding="utf-8") as fh: long_description = fh.read() +# 프롬프트 파일들을 찾습니다 +prompt_files = glob.glob('prompt/*.md') +prompt_files = [os.path.basename(f) for f in prompt_files] + setup( - name="lang2sql", # 패키지 이름 + name="lang2SQL", # 패키지 이름 version="0.1.9", # 버전 author="ehddnr301", author_email="dy95032@gmail.com", @@ -13,7 +19,14 @@ description="Lang2SQL - Query Generator for Data Warehouse", long_description=long_description, long_description_content_type="text/markdown", - packages=find_packages(), # my_package를 자동으로 찾음 + packages=find_packages() + ['prompt'], # prompt 패키지 직접 추가 + package_data={ + 'prompt': ['*.md', '*.py'], # prompt 디렉토리의 모든 .md 파일 포함 + }, + data_files=[ + ('prompt', [os.path.join('prompt', f) for f in prompt_files]) + ], + include_package_data=True, install_requires=[ "langgraph==0.2.62", "datahub==0.999.1", @@ -29,6 +42,7 @@ "langchain-ollama>=0.3.2,<0.4.0", "langchain-huggingface>=0.1.2,<0.2.0", "transformers==4.51.2", + "clickhouse-driver==0.2.9", ], entry_points={ "console_scripts": [ From 0c4622b33d55a5603492748e7a0d855c7ba0aef0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=86=90=EB=B4=89=EA=B7=A0?= Date: Thu, 15 May 2025 15:08:27 +0900 Subject: [PATCH 2/2] =?UTF-8?q?Fix:=20=EB=A6=AC=EB=B7=B0=EC=97=90=EC=84=9C?= =?UTF-8?q?=20=EC=A7=80=EC=A0=81=EB=90=9C=20=EB=B6=80=EB=B6=84=20=EB=B3=B4?= =?UTF-8?q?=EC=99=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.example | 66 ++++++++++++++++++++++++++++++++++++++++++++++++++ pyproject.toml | 51 ++++++++++++++++++++++++++++++++++++++ setup.py | 13 +++++----- 3 files changed, 123 insertions(+), 7 deletions(-) create mode 100644 .env.example create mode 100644 pyproject.toml diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..eee66b5 --- /dev/null +++ b/.env.example @@ -0,0 +1,66 @@ +############################################### +############## LLM API SELECTION ############## +############################################### + +# LLM_PROVIDER=openai +# OPEN_AI_LLM_KEY= +# OPEN_AI_LLM_MODEL=gpt-4o + +# LLM_PROVIDER=gemini +# GEMINI_API_KEY= +# GEMINI_LLM_MODEL=gemini-2.0-flash-lite + +# LLM_PROVIDER=azure +# AZURE_OPENAI_LLM_ENDPOINT= +# AZURE_OPENAI_LLM_KEY= +# AZURE_OPENAI_LLM_MODEL= +# AZURE_OPENAI_LLM_API_VERSION= + +# LLM_PROVIDER=ollama +# OLLAMA_LLM_BASE_URL= +# OLLAMA_LLM_MODEL= + +# LLM_PROVIDER=huggingface +# HUGGING_FACE_LLM_REPO_ID= +# HUGGING_FACE_LLM_ENDPOINT= +# HUGGING_FACE_LLM_API_TOKEN= + +# LLM_PROVIDER=bedrock +# AWS_BEDROCK_LLM_ACCESS_KEY_ID= +# AWS_BEDROCK_LLM_SECRET_ACCESS_KEY= +# AWS_BEDROCK_LLM_REGION=us-west-2 +# AWS_BEDROCK_LLM_ENDPOINT_URL=https://bedrock.us-west-2.amazonaws.com +# AWS_BEDROCK_LLM_MODEL=anthropic.claude-3-5-sonnet-20241022-v2:0\ + +############################################### +########### Embedding API SElECTION ########### +############################################### +# Only used if you are using an LLM that does not natively support embedding (openai or Azure) +# EMBEDDING_ENGINE='openai' +# OPEN_AI_KEY=sk-xxxx +# EMBEDDING_MODEL_PREF='text-embedding-ada-002' + +# EMBEDDING_ENGINE='azure' +# AZURE_OPENAI_ENDPOINT= +# AZURE_OPENAI_KEY= +# EMBEDDING_MODEL_PREF='my-embedder-model' # This is the "deployment" on Azure you want to use for embeddings. Not the base model. Valid base model is text-embedding-ada-002 + +# EMBEDDING_ENGINE='ollama' +# EMBEDDING_BASE_PATH='http://host.docker.internal:11434' +# EMBEDDING_MODEL_PREF='nomic-embed-text:latest' +# EMBEDDING_MODEL_MAX_CHUNK_LENGTH=8192 + +# EMBEDDING_ENGINE='bedrock' +# AWS_BEDROCK_EMBEDDING_ACCESS_KEY_ID= +# AWS_BEDROCK_EMBEDDING_ACCESS_KEY= +# AWS_BEDROCK_EMBEDDING_REGION=us-west-2 +# AWS_BEDROCK_EMBEDDING_MODEL_PREF=amazon.embedding-embedding-ada-002:0 + +# EMBEDDING_ENGINE='gemini' +# GEMINI_EMBEDDING_API_KEY= +# EMBEDDING_MODEL_PREF='text-embedding-004' + +# EMBEDDING_ENGINE='huggingface' +# HUGGING_FACE_EMBEDDING_REPO_ID= +# HUGGING_FACE_EMBEDDING_MODEL= +# HUGGING_FACE_EMBEDDING_API_TOKEN= \ No newline at end of file diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 0000000..87dc1b5 --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,51 @@ +[tool.black] +line-length = 88 +target-version = ['py311'] +include = '\.pyi?$' +exclude = ''' +( + /( + \.git + | \.venv + | build + | dist + )/ +) +''' + +[tool.poetry.group.dev.dependencies] +pytest = "^8.3.5" + +[project] +name = "lang2sql" +version = "0.1.9" +description = "" +authors = [ + {name = "Yoonjin Hwang",email = "21603682@hankooktech.com"} +] +readme = "README.md" +requires-python = ">=3.11, <4.0" +dependencies = [ + "langgraph (==0.2.62)", + "datahub (==0.999.1)", + "langchain (==0.3.14)", + "langchain-community (==0.3.14)", + "openai (==1.59.8)", + "langchain-openai (==0.3.0)", + "streamlit (==1.41.1)", + "python-dotenv (==1.0.1)", + "faiss-cpu (==1.10.0)", + "pre-commit (==4.1.0)", + "setuptools (>=78.1.1,<79.0.0)", + "wheel (>=0.45.1,<0.46.0)", + "twine (>=6.1.0,<7.0.0)", + "langchain-aws (>=0.2.21,<0.3.0)", + "langchain-google-genai (>=2.1.3,<3.0.0)", + "langchain-ollama (>=0.3.2,<0.4.0)", + "langchain-huggingface (>=0.1.2,<0.2.0)" +] + + +[build-system] +requires = ["poetry-core>=2.0.0,<3.0.0"] +build-backend = "poetry.core.masonry.api" \ No newline at end of file diff --git a/setup.py b/setup.py index ca517f6..2265569 100644 --- a/setup.py +++ b/setup.py @@ -3,11 +3,11 @@ import os import glob -with open("README.md", "r", encoding="utf-8") as fh: +with open("docs/README.md", "r", encoding="utf-8") as fh: long_description = fh.read() # 프롬프트 파일들을 찾습니다 -prompt_files = glob.glob('prompt/*.md') +prompt_files = glob.glob("prompt/*.md") prompt_files = [os.path.basename(f) for f in prompt_files] setup( @@ -19,13 +19,12 @@ description="Lang2SQL - Query Generator for Data Warehouse", long_description=long_description, long_description_content_type="text/markdown", - packages=find_packages() + ['prompt'], # prompt 패키지 직접 추가 + packages=find_packages(), # my_package를 자동으로 찾음 + packages=find_packages() + ["prompt"], # prompt 패키지 직접 추가 package_data={ - 'prompt': ['*.md', '*.py'], # prompt 디렉토리의 모든 .md 파일 포함 + "prompt": ["*.md", "*.py"], # prompt 디렉토리의 모든 .md 파일 포함 }, - data_files=[ - ('prompt', [os.path.join('prompt', f) for f in prompt_files]) - ], + data_files=[("prompt", [os.path.join("prompt", f) for f in prompt_files])], include_package_data=True, install_requires=[ "langgraph==0.2.62",