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

LangChain实战(二):环境搭建与Hello World(国内开源模型版)

本文是《LangChain实战课》系列的第二篇,将手把手带你完成基于国内开源大模型的LangChain环境配置,并创建你的第一个LangChain应用。

前言
在上一篇文章中,我们基于openai大模型完成了LangChain环境配置,并创建你的第一个LangChain应用。今天,我们将使用国内免费且开源的大模型(如ChatGLM、Qwen、Baichuan等)替代商业API,从零开始搭建LangChain开发环境,并创建第一个能够与大型语言模型对话的简单应用。

环境准备

  1. Python环境要求
    LangChain要求Python 3.8或更高版本。如果你还没有安装Python,请按照以下步骤操作:

检查当前Python版本:

bash
python --version

python3 --version
如果版本低于3.8,请从Python官网下载并安装最新版本。

  1. 创建虚拟环境
    强烈建议使用虚拟环境来管理Python项目依赖,这样可以避免包冲突问题。

使用venv创建虚拟环境:

bash

创建名为langchain-oss-env的虚拟环境

python -m venv langchain-oss-env

激活虚拟环境

Windows

langchain-oss-env\Scripts\activate

macOS/Linux

source langchain-oss-env/bin/activate
激活后,命令行提示符前会出现(langchain-oss-env)标识。

  1. 安装LangChain和相关依赖
    现在我们来安装LangChain核心库以及开源模型相关的包:

bash

安装LangChain核心库

pip install langchain

安装Transformers库(用于本地模型推理)

pip install transformers

安装加速库

pip install accelerate

安装其他可能需要的库

pip install sentencepiece
pip install protobuf

安装模型下载工具

pip install huggingface_hub

安装环境变量管理工具

pip install python-dotenv

安装常用的数据处理工具

pip install chromadb # 轻量级向量数据库

可选:安装更多文档加载器

pip install pypdf2 # 处理PDF文档
pip install docx2txt # 处理Word文档
选择国内开源大模型
国内有多种优秀的开源大模型可供选择,以下是一些常见选项:

ChatGLM系列(清华大学):ChatGLM-6B、ChatGLM2-6B、ChatGLM3-6B

Qwen系列(阿里巴巴):Qwen-7B、Qwen-14B

Baichuan系列(百川智能):Baichuan-7B、Baichuan-13B

InternLM系列(商汤科技):InternLM-7B、InternLM-20B

本文将使用ChatGLM3-6B作为示例,但代码可以轻松适配其他模型。

编写第一个LangChain程序(开源模型版)
现在让我们来创建第一个简单的LangChain应用,使用国内开源模型实现基本的问答功能。

  1. 基础版本:直接调用本地模型
    创建文件hello_langchain_oss.py:

python
import os
from dotenv import load_dotenv
from langchain.llms.base import LLM
from transformers import AutoTokenizer, AutoModel
from typing import Any, List, Optional, Dict, Iterator
import torch

加载环境变量

load_dotenv()

class ChatGLM(LLM):
model_name: str = “chatglm3-6b”
tokenizer: Any = None
model: Any = None
device: str = “cuda” if torch.cuda.is_available() else “cpu”

def __init__(self
http://www.dtcms.com/a/356691.html

相关文章:

  • 互联网大厂Java面试:从基础到微服务云原生的深度解析
  • web3简介
  • 克隆态驱动给用户态使用流程
  • Git 8 ,git 分支开发( 切换分支开发,并设置远程仓库默认分支 )
  • 衡石SENSE 6.0技术解析:Workflow到Agent模式如何重塑计算框架
  • 04数据库约束实战:从入门到精通
  • TI-92 Plus计算器:常规计算功能介绍
  • CAN总线(Controller Area Network Bus)控制器局域网总线(二)
  • 动态UI的秘诀:React中的条件渲染
  • 当门禁系统遇上边缘计算,RK3568核心板如何带来智能化变革
  • [vmware][ubuntu]一个linux调用摄像头截图demo
  • 前端vue框架实现反向代理详解
  • 【网弧软著正版】2025最强软著材料AI生成系统,基于GPT5.0
  • 华硕主板 BIOS 提示——GPT header corruption has been detected
  • 港科大开放世界长时域具身导航!LOVON:足式机器人开放词汇目标导航
  • 数据结构 02(线性:顺序表)
  • 第四章 Vue3 + Three.js 实战:GLTF 模型加载与交互完整方案
  • Go初级之五:结构体与方法
  • 二手奢侈品拍照估价上门快递回收小程序开发
  • 前端如何使用canvas实现截图
  • 【前端教程】从零开始学JavaScript交互:7个经典事件处理案例解析
  • 嵌入式Linux驱动开发 - DTS LED驱动
  • 拼多多商品信息批量获取及开放API接口调用指南
  • 【面试场景题】dubbo可以使用自定义的序列化协议吗
  • 音视频学习(五十九):H264中的SPS
  • Kubernetes: 解构Karpenter NodePool, 云原生时代的弹性节点管理艺术
  • 【K8s】整体认识K8s之集群的pod之间的通信
  • LSM6DS3姿态芯片和LIS2MD磁力计芯片数据读取(stm32)
  • 千年智造,一触即发 耐达讯自动化Profibus集线器如何让HMI触摸屏在工业4.0中“点石成金“?
  • 嵌入式Linux驱动开发 - 并发控制机制