当前位置: 首页 > news >正文

AI Agent从无到有18:LangChain 开发环境搭建与首条链的运行

纲要

  • 环境要求
    • Python版本要求与系统兼容性
    • 开发工具选型:VSCodeJupyter插件
  • 虚拟环境管理
    • venv的核心作用与最佳实践
    • 虚拟环境的创建、激活与项目隔离
  • 开发工具链
    • Jupyter Notebook的定位与安装
    • VSCode.ipynb的交互式开发体验
  • LangChain 安装
    • pip安装langchain及其生态子包
    • 0.3 版本之后的包结构拆分与选型
  • 配置与第一个程序
    • 使用.env文件管理敏感配置
    • 调用ChatOpenAI构建首个对话链
    • 完整可运行的脚本示例
  • 常见问题与解决方案
    • 依赖冲突、认证错误与网络代理

环境要求

任何AI Agent项目的技术落地,均始于标准且可复现的开发环境。LangChain官方提供PythonTypeScript双语言支持,本文聚焦Python生态,环境基线如下:

  • Python:要求3.12.1或更高版本(向下兼容至3.8,但推荐使用最新稳定版)
  • 操作系统WindowsmacOSLinux均可,本文示例已在macOSWindows环境下验证
  • 集成开发环境VSCode,配合官方Jupyter插件可提供单元格级交互能力

Python作为动态类型语言,其解释执行特性与丰富的科学计算生态,使其成为AI与数据处理领域的事实标准。安装时请访问 python.org 下载对应系统版本,并务必勾选“Add Python to PATH”以确保命令行全局可用。

虚拟环境管理

在实际开发中,多项目并行时极易因依赖版本冲突导致运行时异常。Python 3.3之后内置的venv模块为项目级隔离提供了官方标准方案。其核心优势在于:

  • 依赖隔离:每个项目拥有独立的site-packages,避免全局污染
  • 版本锁定:配合requirements.txt实现依赖的精确复现
  • 权限安全:无需管理员权限即可安装包

初始化项目并创建虚拟环境:

mkdirlangchain-hello&&cdlangchain-hello python-mvenv .venv

激活虚拟环境(根据操作系统选择):

  • macOS / Linux
    source.venv/bin/activate
  • Windows (Command Prompt)
    .venv\Scripts\activate

激活成功后,终端提示符前缀将出现(.venv),表明当前pip操作已重定向至隔离环境。推荐的项目结构如下:

langchain-hello/ ├── .venv/ # 虚拟环境目录(不应提交至版本控制) ├── .env # 敏感环境变量(禁止提交) ├── hello.py # 主程序入口 └── requirements.txt # 依赖清单

开发工具链

LangChain支持两种开发范式:传统脚本式(.py)与交互式笔记本(.ipynb)。Jupyter Notebook作为基于浏览器的交互式编程环境,支持代码单元格与Markdown文本单元格的混排,特别适合提示词工程与链式调试验证。

安装Jupyter核心组件:

pipinstalljupyter

若使用VSCode,仅需安装Jupyter官方插件,即可直接创建与编辑.ipynb文件。Notebook 单元格支持Shell命令执行(前缀!),例如查看已安装包信息:

!pip show langchain

交互式执行模型使得每一步的输出均可视化,大幅降低了初学者在环境调试与数据流追踪上的认知负担。典型的Notebook工作流如下:

创建 .ipynb 文件

编写 Markdown 说明单元格

编写代码单元格

执行并观察输出

结果是否符合预期

进入下一模块开发

调整代码或提示词

LangChain 安装

0.3版本开始,LangChain团队对代码库进行了模块化重构,将原先庞大的单体依赖拆分为若干职责单一的轻量包。这一调整使得开发者可以按需引入,显著降低了生产环境的部署体积与依赖冲突风险。

核心分包策略如下:

包名职责描述
langchain核心抽象:链、提示词模板、输出解析器、记忆模块等
langchain-openaiOpenAI系列模型的官方集成
langchain-deepseekDeepSeek系列模型的官方集成
langchain-community社区贡献的第三方模型与工具集成(稳定性略低于官方包)

安装核心包与OpenAI集成包(同时安装python-dotenv用于环境变量管理):

pipinstalllangchain langchain-openai python-dotenv

验证安装版本:

pip show langchain

若遇网络连接缓慢,可指定国内镜像源(如清华大学镜像)加速下载:

pipinstalllangchain langchain-openai python-dotenv-ihttps://pypi.tuna.tsinghua.edu.cn/simple

配置与第一个程序

调用大语言模型通常需要提供API Key。推荐通过.env文件管理敏感信息,该文件应位于项目根目录且不被提交至版本控制系统(建议添加至.gitignore)。

创建.env文件:

OPENAI_API_KEY=sk-xxxx OPENAI_BASE_URL=https://api.openai.com/v1

其中OPENAI_BASE_URLOpenAI官方访问受限时,可配置为兼容API的中转地址或代理服务。若使用DeepSeek等国内模型,可将BASE_URL指向其官方端点,并相应调整api_key

以下为完整的hello.py脚本,它构建了一个简单的“自我介绍”链,涉及提示词模板、模型调用与输出解析三个核心环节:

importosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParser# 加载 .env 中的环境变量load_dotenv()# 初始化 ChatOpenAI 实例llm=ChatOpenAI(model="gpt-3.5-turbo",# 可选:gpt-4, gpt-4-turbo, gpt-4o-minitemperature=0.7,api_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_BASE_URL"),)# 定义消息模板(System 与 User 角色)prompt=ChatPromptTemplate.from_messages([("system","你是一个热情的助手,请用中文介绍自己。"),])# 字符串输出解析器parser=StrOutputParser()# 使用管道运算符构建 LCEL 链chain=prompt|llm|parserif__name__=="__main__":response=chain.invoke({})print(response)

版本适配说明:上述代码基于LangChain >= 0.3.0langchain-openai >= 0.2.0。在0.3版本中,ChatOpenAI的参数已统一为api_keybase_url(废弃了旧版的openai_api_keyopenai_api_base)。

运行脚本:

python hello.py

预期输出(内容可能因模型版本而异):

你好!我是由 OpenAI 训练的大型语言模型,我可以回答问题、提供创作灵感、协助翻译,以及陪你聊天。

至此,首个LangChain程序已成功运行。后续开发中仅需调整ChatPromptTemplate的消息内容,即可快速试验不同场景下的模型响应。

常见问题与解决方案

异常现象可能原因解决方案
ModuleNotFoundError: No module named 'langchain'未安装依赖或虚拟环境未激活检查终端前缀是否包含(.venv),执行pip install langchain
AuthenticationErrorIncorrect API keyAPI Key无效或.env未正确加载检查.env中的OPENAI_API_KEY值;确认load_dotenv()执行成功
请求超时或连接拒绝网络环境无法直连OpenAI端点配置OPENAI_BASE_URL为有效的代理或中转地址;或切换至国内兼容模型
依赖版本冲突全局安装与虚拟环境中的包版本不一致重新创建纯净虚拟环境,仅安装当前项目所需的特定版本依赖

API 速览

本节梳理本文涉及的核心API,便于开发者快速查阅与引用。

langchain_openai.ChatOpenAI

  • 所属库langchain-openai
  • 方法签名
    classChatOpenAI(BaseChatModel):def__init__(self,model:str="gpt-3.5-turbo",temperature:float=0.7,api_key:Optional[str]=None,base_url:Optional[str]=None,max_retries:int=2,timeout:Optional[float]=120,**kwargs):...
  • 关键参数
    • model:模型名称,如gpt-3.5-turbogpt-4-turbo
    • temperature:采样温度,介于0~2之间,值越高输出越具随机性
    • api_keyOpenAI格式的认证密钥
    • base_urlAPI请求的基础URL,可用于指向代理或兼容网关
  • 返回值ChatOpenAI实例,实现了BaseChatModel抽象接口

langchain_core.prompts.ChatPromptTemplate

  • 所属库langchain-core
  • 类方法
    @classmethoddeffrom_messages(cls,messages:List[Tuple[str,str]])->ChatPromptTemplate:...
  • 参数messages为元组列表,每个元组包含角色(systemhumanai)与内容模板字符串
  • 返回值ChatPromptTemplate实例,支持管道操作与格式化

langchain_core.output_parsers.StrOutputParser

  • 所属库langchain-core
  • 作用:将模型输出的AIMessage对象转换为纯字符串,简化下游处理
  • 使用方式:作为LCEL链的末端节点,与Runnable协议兼容

Demo 示例

以下提供一个完整的、可独立运行的HTML文件(基于Gradio构建),用于演示一个具备交互界面的最简LangChain应用。该示例并非直接运行于浏览器前端,而是启动一个本地WebUI服务,适合作为Agent原型验证工具。

运行说明

  1. 安装依赖:pip install gradio langchain langchain-openai python-dotenv
  2. 在项目根目录配置.env文件(含OPENAI_API_KEY
  3. 运行脚本:python app.py
  4. 浏览器访问http://127.0.0.1:7860
importgradioasgrimportosfromdotenvimportload_dotenvfromlangchain_openaiimportChatOpenAIfromlangchain_core.promptsimportChatPromptTemplatefromlangchain_core.output_parsersimportStrOutputParser load_dotenv()llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0.7,api_key=os.getenv("OPENAI_API_KEY"),base_url=os.getenv("OPENAI_BASE_URL"),)prompt=ChatPromptTemplate.from_messages([("system","你是一个有用的 AI 助手,请用中文回答用户的问题。"),("human","{user_input}"),])chain=prompt|llm|StrOutputParser()defrespond(message,history):returnchain.invoke({"user_input":message})gr.ChatInterface(fn=respond,title="LangChain Hello Demo",description="基于 LangChain 0.3 与 OpenAI 的简单对话演示").launch()

技术点总结

  • 演示了LangChainGradio的集成,实现Chat交互界面
  • 使用了LCEL链式调用,包含提示词模板、模型与输出解析器
  • 展示了ChatPromptTemplatehuman变量插值的用法
  • 覆盖了环境变量加载与API客户端初始化的完整流程

参考文档

  • 官方文档

    • LangChain Python SDK 官方文档
    • LangChain Core API Reference
    • OpenAI API 文档
  • 参考链接

    • LangChain 0.3 迁移指南
    • Python venv 官方指南
    • python-dotenv 项目仓库

总结

本文围绕LangChain从零开始的开发环境搭建,系统梳理了从Python版本选型、venv虚拟环境隔离、Jupyter交互式工具链,到0.3版本分包安装策略的完整路径。通过一个完整的“自我介绍”链示例,展示了ChatPromptTemplateChatOpenAIStrOutputParser的核心协作模式。

常见问题章节则针对依赖冲突、认证失效与网络代理提供了可操作的诊断思路。掌握这些基础基建,是后续构建复杂AI Agent工作流的必要前提。

http://www.jsqmd.com/news/1400737/

相关文章:

  • 1分钟完成歌词下载:163MusicLyrics如何打通网易云与QQ音乐的取词流程
  • ncmdump 使用教程:一文搞定网易云音乐NCM文件转换,把加密音乐还给你
  • Day14 unitree_G1人形机器人BVH/MocapApi实际输出少于Axis排查
  • 从单智能体到多智能体协作:L2M2 框架如何破解 LLM 多智能体系统的可扩展性瓶颈
  • AI增强调试:从日志分析到PID调优的智能实践
  • 开源自动化报告框架:告别数据搬运,实现多源数据智能聚合与可视化
  • PKC 第 124 个开关:后台掉线通知的位置、验证方法与风险边界
  • 网络拨测与 PageSpeed 分工:通不通 vs 快不快的决策顺序
  • 公司不经营了放着不管?宜昌老板要知道拖延注销的隐性成本 - 二格
  • 无线网络架构核心:Fat AP与Fit AP模式深度解析与选型指南
  • 买泰迪靠谱的店 正规犬舍选购测评指南 - Full19
  • Python全栈开发制造业生产管理系统实战
  • 远程控制无显示器时分辨率异常?三种方案彻底解决
  • AI编程工具本地化部署:从Cursor汉化到Ollama集成实战
  • 知名的在线考试培训系统:构建员工人才培养的创新优选方案
  • 宜昌个体户必看:记账报税的5个常见误区,踩中就可能被罚 - 二格
  • 浙江千马网络科技:AI-GEO+Agent双引擎重塑企业全域获客新范式
  • 计算机硬件组成与协同工作原理:从CPU到总线的核心部件深度解析
  • 【搭建一个技术过硬、稳定运行的官网需要注意的事项
  • [人工智能]CleanRL:简洁可复现的强化学习实现
  • GEO与SEO到底有什么区别?企业要不要放弃SEO做GEO?——2026年第三方决策测评 - 优企甄选
  • Linux动态链接器环境变量:LD_PRELOAD、LD_LIBRARY_PATH与LD_DEBUG详解
  • 基于MiniCPM5-1B的本地GMGN研究智能体部署与应用指南
  • Flint中间语言:解决AI生成图表代码不确定性的工程实践
  • HTML语义化标签详解及实战使用场景
  • 零基础转行SAP MM顾问:3-6个月学习路径与求职指南
  • 从决策疲劳到灵感推荐:我用Taro+云开发打造智能饮食助手
  • 2026年8月北京经济补偿金纠纷律所如何筛选?6家专注N+1计算与协商解除的律所解析 - 品牌深度评测
  • Android AAR包生成与使用全攻略:从模块化到Maven发布
  • Gemini的表格怎么导到word?AI 导出鸭一键高保真还原,批量导出终结格式噩梦