赞
踩
前言:
本文对最近学习 LangChain 的过程进行一个简单的概述,介绍基本的概念、简述需要注意的问题,并提供我觉得当下还不错的学习方法。
下面是在开始前先给大家描述下我遇到的一些错误,以防开始学习之后报错找了一圈发现就在该文档下面 emmmm。
建议使用 conda 对环境进行管理,如果你想用本地显存跑模型,强烈建议模型和 langchain 使用两套环境!!! 以防止中途因为一些必要插件关联导致的版本变动,以至于程序无法启动。
pyhton 复制代码 # 如果不清楚自己的版本的,可以使用如下代码进行确认: import torch print(torch.__version__) import torchvision print(torchvision.__version__) # 我使用的版本如下: # torch 1.13.1+cu117 # torchvision 0.14.1+cu117 # 版本基本没有优劣之分(因为我也不清楚) # 在博客 https://blog.csdn.net/shiwanghualuo/article/details/122860521 可以看到对照 # 也可以直接访问: # https://gitcode.com/pytorch/vision?utm_source=csdn_github_accelerator&isLogin=1 # 安装版本命令 emmm,不教了,不会我觉得可能你不适合学这个
requirements.txt
复制代码
chromadb # 存储和查询程式语言片段的数据库
langchain[all]
# 如果报错需要继续补齐 langchain_community langchain_openai等,按报错信息来
fastapi # web api 工具
gradio # 将模型、数据集、文本、图像等内容部署成简单的界面
openai
pydantic # 数据验证和设置库
pypdf # 处理 PDF 文件的库
transformers # Hugging Face 开发的自然语言处理任务的库
unstructured # 处理非结构化数据
uvicorn # 快速的 ASGI 服务器
requirements.txt 复制代码 # basic requirements protobuf>=4.25.2 transformers>=4.37.1 tokenizers>=0.15.0 cpm_kernels>=1.0.11 torch>=2.1.0 gradio>=4.16.0 sentencepiece>=0.1.99 sentence_transformers>=2.2.2 accelerate>=0.26.1 streamlit>=1.30.0 fastapi>=0.109.0 loguru~=0.7.2 mdtex2html>=1.3.0 latex2mathml>=3.77.0 # for openai demo openai>=1.10.0 zhipuai>=2.0.1 pydantic>=2.5.3 sse-starlette>=2.0.0 uvicorn>=0.27.0 timm>=0.9.12 tiktoken>=0.5.2 # for langchain demo langchain>=0.1.4 langchainhub>=0.1.14 arxiv>=2.1.0
注意: 如果和本文发布时间很近的话不建议使用 GLM3 作为本地模型,目前 LangChain 还没有将 GLM3 的接口放入,需要自己编写。(不过能让你快速了解源码)
新技术的到来总是让人兴奋的,langchain 在最近迎来了它的 0.1.0 版本。md学起来贼辛苦好吧~放两张今天写文的时候的截图:
哥们我学的时候还只有 0.1.3 呢艹。
言归正传,langchain 0.0 系列和 0.1 系列最大的差别就是以往很多接口因为它的模块化设计进行了调整。在下面进行简单的举例:
python 复制代码 # 部分包名由 langchain 下放到 langchain_community/langchain_openai # 下面是常见的最新的引用(含变动) from langchain_community.document_loaders import UnstructuredURLLoader from langchain_openai import OpenAI from langchain_openai import ChatOpenAI # invoke(Any) 代替执行语句 # 在实操中有两个地方遇到了这个问题: # eg.1 openaichat = ChatOpenAI(model_name="gpt-3.5-turbo") # 原 res = openaichat(msg) res = openaichat.invoke(msg) # 输出内容不影响 # eg.2 llm = OpenAI(max_tokens=1500) chain = load_summarize_chain(llm, prompt=chinese_prompt) # 原 summary = chain.run(news) summary = chain.invoke(news) # 实测 invoke 返回内容会包含'output_text'、'input_text'等,'output_text'为原 run 返回内容 # 会不会影响使用我目前无法下定论,因为我所处物理环境问题可变参数太多了, # 但是建议大家依据新的规范来写,因为控制台在执行的时候会报 warning,且格式真的很丑 # 有因为不从 langchain_openai 引入导致程序执行不下去的经历,但尚不确认是否为网络问题
目前来看应该还没有很好且直观的途径去查看文档,英文、中文文档的更新都有一定的滞后性。
入门了解架构的话推荐中文文档:LangChain中文网
英文文档会稍微快一点:Introduction |
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。