搞懂LangChain开发库,还有dotenv实战
为帮助开发者快速吃透 LangChain 整体架构、解决入门难题本文将拆解项目核心模块并讲解在实际项目中API Key的常用配置和dotenv代码实战内容简洁易懂兼顾理论认知与实际开发落地。如果喜欢看视频学习的可以看这个《7. 搞懂LangChain开发库还有dotenv实战》喜欢看文章的接着往下看。1. LangChain项目工程LangChain 项目采用职责清晰的模块化架构核心模块定位与能力边界如下langchain-coreLangChain 全生态的核心基石统一定义了生态内所有通用抽象接口、交互协议与核心数据结构是所有上层组件与集成能力的底层依赖。langchain-classic历史版本兼容包仅用于存量旧项目的平滑兼容与运维支撑不推荐新项目引入使用。langchain_v1当前官方主推的生产级主用版本核心聚焦大模型智能体Agent的全链路构建封装了开箱即用的核心开发能力。partners 集成库由 LangChain 官方维护的第三方生态集成集合其中 Anthropic、DeepSeek、OpenAI 等主流大模型的核心集成均由 LangChain 官方与对应厂商联合开发维护保障接口兼容性与长期稳定性。其中OpenAI API 已成为大模型服务领域的行业事实标准目前绝大多数主流大模型厂商均提供了与该标准完全兼容的 API 接口可实现跨模型的低成本无缝切换。2. 申请API Key接入任意大模型平台的服务前均需先在对应平台申请专属的 API 密钥API Key用于接口调用时的身份鉴权与调用额度管控。针对个人开发者的开发测试场景优先推荐阿里云百炼、火山引擎两大平台二者均为个人开发者提供了充足的免费调用额度可充分满足日常功能调试、原型验证的全流程需求。进到阿里云百炼后台https://bailian.console.aliyun.com点击【API Key】进到创建API密钥的窗口。找到右上角【创建API Key】按钮并点击这时会弹出一个窗口。直接点击【确定】按钮即可。API Key创建好了点击【复制】按钮并保存到本地文件(自己随意创建一个txt文件)。接着点击【关闭】按钮之后点击【阿里云百炼logo】回到主窗口。在主窗口中找到【免费额度】并进行点击。为了避免大模型用量超额你需要进行设置。找到右边【批量操作免费额度用完即停】按钮并进行点击。在下拉菜单点击【批量开启】选项。操作不能停还要按下【一键开启所有模型】按钮。一开始时我就开启过现在是开启最近新增的模型点击【开启免费额度用完即停】按钮。过一会就会全部开启完了。然后要使用的大模型名称并复制保存起来建议选择最近的(比如qwen3.6-plus)旧版的到一定时间会下架的。接着点击顶部【文档】链接。找到代码中base_url复制https://dashscope.aliyuncs.com/compatible-mode/v1并保存起来。注意这里的示例代码是LangChain旧版本的。3. 创建工程并进行dotenv实战用PyCharm创建一个项目工程之后创建main.py文件内容如下这种直接把API_Key写在代码里的做法叫硬编码它最大的问题是不灵活换大模型要改代码还容易泄露密钥。OPENAI_API_KEY”你的API Key” OPENAI_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1 MODELqwen3.6-plus为保障调用凭证安全可将API_KEY和BASE_UR配置至系统环境变量里。用户变量只对当前登录计算机的用户有效系统变量对所有用户都有效。配置之后可以重启计算机生效也可以通过如下方式生效。打开命令行窗口并运行如下命令进行刷新。接着需要退出命令行窗口同时需要重启PyCharm。set PATH%PATH%打开main.py文件输入如下代码。os.getenv()函数通过指定key获取环境变量的值如果获取不到会返回None。import os import dotenv api_keyos.getenv(OPENAI_API_KEY) base_urlos.getenv(OPENAI_BASE_URL) print(api_key) print(base_url)在开发产品时常将用户自己配置的API密钥和URL放在.env文件里。新建.env文件API密钥的值加点不一样的。OPENAI_API_KEY“你的API密码-666” OPENAI_BASE_URL“https://dashscope.aliyuncs.com/compatible-mode/v1” MODEL“qwen3.6-plus”读写.env文件需要用pip安装dotenv开发包。pip install dotenv用import语法引进dotenvload_dotenv()默认加载当前目录下的.env文件。import os from dotenv import load_dotenv load_dotenv() api_key os.getenv(OPENAI_API_KEY) base_url os.getenv(OPENAI_BASE_URL) print(api_key) print(base_url)运行代码之后你会发现返回的还是系统环境变量里配置的值这是因为同名下系统环境变量优先级高。删掉系统环境变量里的OPENAI_API_KEY和OPENAI_BASE_URL。打开命令行窗口并运行如下命令进行刷新。接着需要退出命令行窗口同时需要重启PyCharm。set PATH%PATH%打开main.py文件并运行之后就会输出.env里的OPENAI_API_KEY和OPENAI_BASE_URL的值了。你的API密码-666 https://dashscope.aliyuncs.com/compatible-mode/v14. dotenv应用实战用PyCharm新建一个新的项目工程用pip安装dotenv和pyside6。pip install dotenv pyside6在项目中新建.env文件如下是国内AI大模型厂家的API调用地址在使用的时候自己核对一下。# 阿里巴巴-通义千问 QWEN_API_KEY QWEN_BASE_URLhttps://dashscope.aliyuncs.com/compatible-mode/v1 QWEN_CONSOLE_URLhttps://dashscope.console.aliyun.com/ QWEN_MODELSqwen3.6-plus,qwen-3.5-plus,qwen-3.5-72b-instruct # 月之暗面 - Kimi KIMI_API_KEY KIMI_BASE_URLhttps://api.moonshot.cn/v1 KIMI_CONSOLE_URLhttps://platform.moonshot.cn/ KIMI_MODELSmoonshot-v1-8k,moonshot-v1-128k,moonshot-v1-256k # MiniMax MINIMAX_API_KEY MINIMAX_BASE_URLhttps://api.minimax.chat/v1 MINIMAX_CONSOLE_URLhttps://platform.minimax.chat/ MINIMAX_MODELSabab-6.5-chat,abab-6.5-pro,minimax-m2.7,minimax-m2-her # 智谱AI-智谱清言 ZHIPU_API_KEY ZHIPU_BASE_URLhttps://open.bigmodel.cn/api/paas/v4 ZHIPU_CONSOLE_URLhttps://open.bigmodel.cn/ ZHIPU_MODELSglm-4.5-flash,glm-4.5-pro,glm-4-air # 字节跳动-豆包 DOUBAO_API_KEY DOUBAO_BASE_URLhttps://ark.cn-beijing.volces.com/api/v3 DOUBAO_CONSOLE_URLhttps://console.volcengine.com/ark/ # 重要豆包不直接使用模型名称必须替换为火山方舟创建的推理接入点ID DOUBAO_MODELSdoubao-pro-32k,doubao-lite-32k,doubao-pro-128k # 百度-文心一言 ERNIE_API_KEY ERNIE_BASE_URLhttps://qianfan.baidubce.com/v2 ERNIE_CONSOLE_URLhttps://console.bce.baidu.com/qianfan/ ERNIE_MODELSernie-4.0-turbo-8k,ernie-3.5-turbo-128k,ernie-speed-128k # 腾讯-混元 HUNYUAN_API_KEY HUNYUAN_BASE_URLhttps://api.hunyuan.cloud.tencent.com/v1 HUNYUAN_CONSOLE_URLhttps://console.cloud.tencent.com/hunyuan/ HUNYUAN_MODELShunyuan-turbo,hunyuan-pro,hunyuan-lite # DeepSeek DEEPSEEK_API_KEY DEEPSEEK_BASE_URLhttps://api.deepseek.com/v1 DEEPSEEK_CONSOLE_URLhttps://platform.deepseek.com/ DEEPSEEK_MODELSdeepseek-chat,deepseek-reasoner新建一个env_util.py文件用来封装dotenv对.env文件的操作。import os from dotenv import load_dotenv, set_key # 老陈说编程 哔哩哔哩、今日头条 class EnvUtil: def __init__(self, env_pathNone): if env_path is None: self.env_path os.path.join(os.path.dirname(os.path.abspath(__file__)), .env) else: self.env_path env_path load_dotenv(self.env_path) def load_config(self, providers): config {} for provider in providers: api_key os.getenv(f{provider}_API_KEY, ) base_url os.getenv(f{provider}_BASE_URL, ) console_url os.getenv(f{provider}_CONSOLE_URL, ) models_str os.getenv(f{provider}_MODELS, ) models [m.strip() for m in models_str.split(,)] if models_str else [] config[provider] { api_key: api_key, base_url: base_url,