LangChain框架入门02:环境搭建
在上一篇文章中,我们系统地了解了 LangChain 是什么、能做什么、核心模块有哪些,现在你可能有以下疑问:
- 项目环境该怎么搭建?
- 各个包之间有什么依赖关系?
- 第一个 LangChain 应用应该从哪里写起?
本文将带你从零开始,搭建一个基于 LangChain 的 Python 开发环境,带你写出第一个 支持 OpenAI 模型的聊天机器人程序。
一、LangChain包依赖关系
1.1 LangChain中的包
LangChain 框架被划分为多个独立包,用户可以根据实际需求自由选择所需模块,如果想要安装LangChain主包可以运行:
pip install langchain
LangChain主包虽然涵盖了框架的大部分功能,但其最大价值在于能够与各类模型提供商和主流数据库无缝集成,LangChain 主包本身并不包含这些第三方集成包的内容,下图表示了LangChain包之间的依赖关系。
langchain-core
:除 langsmith
外,LangChain 中的其他所有包都依赖于该核心包,它提供了所有模块共享的基础类。
langchain
:包含了langchain-core。
langchain-openai
:OpenAI 相关工具的集成包
langchain-community
:尚未独立拆分的第三方集成包。
langgraph
:基于图的任务流程管理工具包,可以和LangChain无缝集成,也可以不使用LangChain单独安装
langsmith
:LLM 应用的全生命周期管理平台,既可以与 LangChain 配合使用,也可以独立用于非 LangChain 的大模型应用场景。
二、项目搭建
2.1 Python环境
使用Python 版本为 3.10.11
python --version
Python 3.10.11
将pip的镜像源设置为腾讯云镜像,加快下载速度
pip config set global.index-url https://mirrors.cloud.tencent.com/pypi/simple
Writing to /Users/apple/.config/pip/pip.conf
pip config list
global.index-url='https://mirrors.cloud.tencent.com/pypi/simple'
2.2 创建虚拟环境
在开发 Python 项目时,首先创建项目文件夹:
mkdir langchain-study
创建虚拟环境,虚拟环境可隔离项目依赖,避免版本冲突
cd langchain-study
python -m venv env
激活虚拟环境
source env/bin/activate
2.3 PyCharm设置虚拟环境
打开项目,在 Settings 中配置 Python 虚拟环境,创建本地解释器。
选择之前创建的Python虚拟环境。
选择之前创建的虚拟环境中的Python解释器。
2.4 依赖版本管理
首先,创建依赖管理文件 requirements.txt
touch requirements.txt
在 requirements.txt
中添加 LangChain 所需依赖,其中 python-dotenv
用于加载 .env
环境变量配置。
langchain==0.2.17
langchain-community==0.2.19
langchain-core==0.2.43
python-dotenv==1.0.1
导入依赖
pip install -r requirements.txt
2.5 创建配置文件
在项目根目录下创建 .env
文件,添加 OpenAI 的 API 地址和密钥
# OpenAI大模型
OPENAI_API_KEY=**
OPENAI_API_BASE=https://api.***.***/v1
三、第一个聊天机器人
新建一个 Python 文件,就可以开始编写第一个聊天机器人程序了。
代码如下:
import dotenv
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
# 读取env配置
dotenv.load_dotenv()
# 1.创建提示词模板
prompt = ChatPromptTemplate.from_template("{question}")
# 2.构建GPT-3.5模型
llm = ChatOpenAI(model="gpt-3.5-turbo")
# 3.创建输出解析器
parser = StrOutputParser()
# 4.执行链
chain = prompt | llm | parser
print(chain.invoke({"question": "请以表格的形式返回三国演义实力最强的十个人,并进行简要介绍"}))
执行结果:
四、总结
本文介绍了LangChain框架的包依赖结构及其模块划分,明确了主包 langchain
与核心包 langchain-core
、第三方集成包如 langchain-openai
和 langchain-community
之间的关系,并简要介绍了 langgraph
和 langsmith
这两个生态工具的功能与使用场景。
在项目实操部分,我们从零开始搭建了一个LangChain开发环境,涵盖了虚拟环境的创建、依赖版本管理、PyCharm解释器配置及.env
配置文件的设置,并通过一个简单的聊天机器人示例,展示了 LangChain 与 OpenAI 模型的基础集成流程。
通过本文,相信你应该已经掌握了如何快速构建一个基于LangChain的Python开发环境,构建自己的第一个AI应用。后续将继续深入介绍LangChain的核心模块和高级用法,敬请期待。
LangChain框架入门02:环境搭建的更多相关文章
- 【个人笔记】003-PHP基础-01-PHP快速入门-03-PHP环境搭建
003-PHP基础-01-PHP快速入门 03-PHP环境搭建 1.客户端(浏览器) IE FireFox CHROME Opera Safari 2.服务器 是运行网站的基本 是放置程序代码的地方 ...
- Android入门之环境搭建
欢迎访问我的新博客:http://www.milkcu.com/blog/ 原文地址:http://www.milkcu.com/blog/archives/1376935560.html 原创:An ...
- scala 入门Eclipse环境搭建
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld IDE选择并下载: scala for eclipse 下载: http://scala-ide.org/downloa ...
- dubbo框架及dubbo环境搭建
https://blog.csdn.net/liuhaiabc/article/details/52781351 dubbo框架及dubbo环境搭建
- 新手嘛,先学习下 Vue2.0 新手入门 — 从环境搭建到发布
Vue2.0 新手入门 — 从环境搭建到发布 转自:http://www.runoob.com/w3cnote/vue2-start-coding.html 具体文章详细就不搬了,步骤可过去看,我这就 ...
- scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld
scala 入门Eclipse环境搭建及第一个入门经典程序HelloWorld 学习了: http://blog.csdn.net/wangmuming/article/details/3407911 ...
- 总结Vue 第四天:vue-cli(Vue2.0 新手入门 — 从环境搭建到发布)
总结Vue 第四天:vue-cli(Vue2.0 新手入门 - 从环境搭建到发布) 一.Vue CLI----(Vue2.0 新手入门 - 从环境搭建到发布): ■ CLI是Command-Lin ...
- MyBatis01:框架概述、环境搭建及入门案例、自定义框架
课程介绍 第一天:mybatis的入门 mybatis的概述 mybatis的环境搭建 mybatis入门案例 自定义mybatis框架(目的:了解mybatis的执行细节) 第二天:mybatis基 ...
- JAVA WEB快速入门之环境搭建
前言 我是一直致力于:.NET技术栈.WEB前端.架构设计相关的开发与管理工作,但因国内大环境影响及公司技术方向发生转变(由.NET全部转为JAVA),需要熟练掌握JAVA WEB相关的知识,故我也得 ...
- spring+springMVC+mybatis的框架项目基础环境搭建
上一个项目在后台用到spring+springMVC+mybatis的框架,先新项目初步需求也已经下来,不出意外的话,应该也是用这个框架组合. 虽然在之前activiti相关的学习中所用到的框架也是这 ...
随机推荐
- VMware workstation 部署微软MDT系统
一.环境准备 1. VMware Workstation 虚拟机配置 新建虚拟机 类型:Microsoft Windows Server 2022 Standard 内存:4GB+ 硬盘:100GB( ...
- C# 控制台程序验证await立即返回
class Program{ public static volatile bool flag = true; public static void Main() { Action a = null; ...
- Github如何创建添加开源许可license
我们点击项目上方的 Add file,选择 creat new file 名称填写 LICENSE, 右侧便会出现按钮 Choose a license template 选择你要的证书,填写 年份 ...
- CV中常用Backbone-3:Clip/SAM原理以及代码操作
前面已经介绍了简单的视觉编码器,这里主要介绍多模态中使用比较多的两种backbone:1.Clip:2.SAM.对于这两个backbone简单介绍基本原理,主要是讨论使用这个backbone. 1.C ...
- Java 多个线程之间共享数据
线程执行的代码相同 如果每个线程执行的代码相同,可以使用同一个Runnable对象,在这个Runnable对象中定义共享数据即可,例如,卖票系统就可以这么做. public class Sell ...
- 实现qt 窗口无边框拖拽
无边框拖拽是参考Qt实战6.万能的无边框窗口(FramelessWindow) - Qt小罗 - 博客园的文章,对其代码进行修改而来. 使用的是qt6 所以有可能里面一些关于坐标的类需要修改一下类型 ...
- 「Log」2023.9.25 小记
序幕 \(\text{6:40}\):准时到校,整理博客,今天少来点嘻嘻哈哈,认真做题了. \(\text{6:55}\):整理一下 POI 2011 题单. \(\text{7:10}\):开始板刷 ...
- JDBC连接数据库增删改查实例
查询所有 dao层代码: package example; import java.sql.Connection; import java.sql.DriverManager; import java ...
- 数栈产品分享:基于StreamWorks构建实时大数据处理平台
数栈是云原生-站式数据中台PaaS,我们在github和gitee上有一个有趣的开源项目:FlinkX,FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,也可以采集实时变 ...
- 开源项目丨ChengYing 1.1版本重磅发布:新增超多功能,全新优化体验!
ChengYing是一站式全自动化全生命周期大数据平台运维管家,提供大数据产品的一站式部署.运维.监控服务,其可实现产品部署.产品升级.版本回滚.扩缩节点.日志诊断.集群监控.实时告警等功能,致力于最 ...