config.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. """
  2. 统一配置模块:环境变量、数据库连接、LLM 实例。
  3. 其他模块直接 `from config import llm, db, engine` 即可,
  4. 无需重复写 load_dotenv 和 db_uri 构造逻辑。
  5. """
  6. import os
  7. from dotenv import load_dotenv
  8. from langchain_openai import ChatOpenAI
  9. from langchain_community.utilities import SQLDatabase
  10. from sqlalchemy import create_engine
  11. from langchain_community.embeddings import DashScopeEmbeddings
  12. from langchain_community.chat_models import ChatTongyi
  13. # ============================================================
  14. # 1. 加载 .env(整个项目只调用一次)
  15. # ============================================================
  16. load_dotenv(os.path.join(os.path.dirname(__file__), "..", ".env"))
  17. # ============================================================
  18. # 2. 数据库配置
  19. # ============================================================
  20. DB_HOST = os.getenv("DB_HOST", "127.0.0.1")
  21. DB_PORT = os.getenv("DB_PORT", "3306")
  22. DB_USER = os.getenv("DB_USER", "root")
  23. DB_PASSWORD = os.getenv("DB_PASSWORD", "")
  24. DB_NAME = os.getenv("DB_NAME", "analytics_demo")
  25. DB_URI = f"mysql+pymysql://{DB_USER}:{DB_PASSWORD}@{DB_HOST}:{DB_PORT}/{DB_NAME}"
  26. # SQLAlchemy 引擎(DataFrame 加载用)
  27. engine = create_engine(DB_URI)
  28. # LangChain SQLDatabase 实例(Agent 工具包用)
  29. db = SQLDatabase.from_uri(DB_URI)
  30. # ============================================================
  31. # 3. DEEPSEEK LLM 配置
  32. # ============================================================
  33. DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
  34. DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL")
  35. llm = ChatOpenAI(
  36. model="deepseek-v4-flash",
  37. api_key=DEEPSEEK_API_KEY,
  38. base_url=DEEPSEEK_BASE_URL,
  39. temperature=0,
  40. )
  41. print("✅ 配置加载完成(LLM + 数据库连接)")
  42. # ============================================================
  43. # 4. ALI LLM 配置
  44. # ============================================================
  45. # 初始化 Embedding 模型
  46. # 需要先在 https://dashscope.console.aliyun.com/ 获取 API Key
  47. DASHSCOPE_API_KEY=os.getenv("DASHSCOPE_API_KEY")
  48. embedding_model = DashScopeEmbeddings(
  49. model="text-embedding-v3", # 模型名称
  50. dashscope_api_key=DASHSCOPE_API_KEY # 从 .env 读取
  51. )
  52. # ============================================================
  53. # 5. ChatTongyi LLM 配置
  54. # ============================================================
  55. ChatTongyillm = ChatTongyi(
  56. model="qwen-plus",
  57. dashscope_api_key=DASHSCOPE_API_KEY
  58. )