|
|
@@ -0,0 +1,73 @@
|
|
|
+"""
|
|
|
+统一配置模块:环境变量、数据库连接、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
|
|
|
+ )
|