"""
统一配置模块：环境变量、数据库连接、LLM 实例。

其他模块直接 `from config import llm, db, engine` 即可，
无需重复写 load_dotenv 和 db_uri 构造逻辑。
"""

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI
from langchain_community.utilities import SQLDatabase
from sqlalchemy import create_engine
from langchain_community.embeddings import DashScopeEmbeddings
from langchain_community.chat_models import ChatTongyi


# ============================================================
# 1. 加载 .env（整个项目只调用一次）
# ============================================================
load_dotenv(os.path.join(os.path.dirname(__file__), "..", ".env"))

# ============================================================
# 2. 数据库配置
# ============================================================
DB_HOST = os.getenv("DB_HOST", "127.0.0.1")
DB_PORT = os.getenv("DB_PORT", "3306")
DB_USER = os.getenv("DB_USER", "root")
DB_PASSWORD = os.getenv("DB_PASSWORD", "")
DB_NAME = os.getenv("DB_NAME", "analytics_demo")

DB_URI = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"

# SQLAlchemy 引擎（DataFrame 加载用）
engine = create_engine(DB_URI)

# LangChain SQLDatabase 实例（Agent 工具包用）
db = SQLDatabase.from_uri(DB_URI)

# ============================================================
# 3. DEEPSEEK LLM 配置
# ============================================================
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL")

llm = ChatOpenAI(
    model="deepseek-v4-flash",
    api_key=DEEPSEEK_API_KEY,
    base_url=DEEPSEEK_BASE_URL,
    temperature=0,
)

print("✅ 配置加载完成（LLM + 数据库连接）")



# ============================================================
# 4. ALI LLM 配置
# ============================================================
# 初始化 Embedding 模型
# 需要先在 https://dashscope.console.aliyun.com/ 获取 API Key
DASHSCOPE_API_KEY=os.getenv("DASHSCOPE_API_KEY")
embedding_model = DashScopeEmbeddings(
    model="text-embedding-v3",        # 模型名称
    dashscope_api_key=DASHSCOPE_API_KEY   # 从 .env 读取
)

# ============================================================
# 5. ChatTongyi LLM 配置
# ============================================================
ChatTongyillm = ChatTongyi(
    model="qwen-plus", 
    dashscope_api_key=DASHSCOPE_API_KEY
    )