当前位置:   article > 正文

初识LangChain: LLM大模型与AI应用的粘合剂

初识LangChain: LLM大模型与AI应用的粘合剂

是什么以及发展过程

推理和响应, 主要是搜索和推理结合

优劣势

环境搭建

  • Python环境
  • Jupyter Notebook 的安装与使用
  • LangChain安装

Python简介

  • 高级的接近人类语言的编程语言,易于学习
  • 动态语言
  • 直译式语言,可以跳过编译逐行执行代码
  • 广泛应用于web应用、软件、数据科学和机器学习
  • Al方向的主流语言
  • 活跃的python社区
  • 数据巨大且丰富的库

安装Python版本管理工具, pyenv 可以管理多个 python 的版本。

  1. brew update
  2. brew install pyenv

安装Python3.11

pyenv install 3.11.5

升级pip

sudo python3.11 -m pip install --upgrade pip

Jupyter Notebook简介

安装jupyter notebook:

  1. # 安装jupyter
  2. pip3 install jupyter
  3. # 启动jupyter
  4. jupyter notebook

安装jupyter-lab

  1. # 安装
  2. pip3 install jupyterlab
  3. # 启动
  4. jupyter lab
  • 界面: Jupyter Notebook提供了基于单个文档的界面,每个文档称为一个notebook,而JupyterLab提供了更丰富的多文档界面,可以同时打开多个notebook、代码文件、终端等。
  • 插件支持: JupyterLab有更强大的插件支持,可以扩展其功能,例如添加新的编辑器、调试器等。
  • 集成性: JupyterLab集成了更多的工具和功能,例如文件浏览器、终端、命令面板等,使得整个数据分析和开发过程更加流畅和高效。

可能遇到的问题

打开jupyter lab网页提示报错:

  1. JupyterLab Error JupyterLab application assets not found in
  2. /opt/homebrew/Cellar/python@3.10/3.10.10_1/Frameworks/Python.framework/Versions/3.10/share/jupyter/lab” Please run jupyter lab build or use a different app directory

根据提示执行命令jupyter lab build查看控制台显式的报错:

Please install nodejs >=18.0.0 before continuing

所以可能是node版本导致不能build成功

查看node版本, 并切换:

重新build再重启 jupyter lab 即可

openAI-key获取

网页上GPT3.5以下都是免费使用的, 只是API调用在3.5和4.0都需要收费的, 可以使用国内的代理服务 F2API

注册后直接使用key 和代理即可, 调用的时候就可以直接调用openAI的api服务

LangChain的第一个实例

打开jupyter lab:

卸载和安装langchain和openai

  1. # 卸载
  2. ! pip3 uninstall langchain -y
  3. ! pip3 uninstall openai -y

  1. # 安装 langchain
  2. ! pip3 install --upgrade langchain==0.0.279 -i https://pypi.org/simple
  3. #如果没有科学上网,可以用这个命令安装
  4. ! pip3 install --upgrade langchain==0.0.279 -i https://pypi.tuna.tsinghua.edu.cn/simple

依赖安装

  • 安装openai的api包
  • 或者使用Baichuan、ChatGLM这样的开源包
  1. ! pip3 install openai==v0.28.1 -i https://pypi.org/simple
  2. ! pip install --upgrade openai0.27.8
  3. #如果没有科学上网,可以使用这个命令安装
  4. ! pip install openai0.27.8 -i https://pypi.tuna.tsinghua.edu.cn/simple

查看安装

  1. ! pip3 show langchain
  2. ! pip3 show openai

引入openai key

  1. import os
  2. os.environ["OPENAI_KEY"] = "你的key"
  3. os.environ["OPENAI_API_BASE"] = "https://api.f2gpt.com/v1"

从环境变量中读取

  1. import os
  2. openai_api_key = os.getenv("OPENAI_KEY")
  3. openai_api_base = os.getenv("OPENAI_API_BASE")
  4. print("OPENAI_API_KEY:", openai_api_key)
  5. print("OPENAI_PROXY:", openai_api_base)

openai官方SDK

  1. #使用openai的官方sdk
  2. import openai
  3. import os
  4. openai.api_base = os.getenv("OPENAI_API_BASE")
  5. openai.api_key = os.getenv("OPENAI_KEY")
  6. messages = [
  7. {"role": "user", "content": "介绍下你自己"}
  8. ]
  9. res = openai.ChatCompletion.create(
  10. model="gpt-4-1106-preview",
  11. messages=messages,
  12. stream=False,
  13. )
  14. print(res['choices'][0]['message']['content'])

使用langchain调用

  1. #hello world
  2. from langchain.llms import OpenAI
  3. import os
  4. api_base = os.getenv("OPENAI_API_BASE")
  5. api_key = os.getenv("OPENAI_KEY")
  6. llm = OpenAI(
  7. model="gpt-3.5-turbo-instruct",
  8. # 使用 temperature=0 相当于不带任何调参输出当前大模型传入文本的固定回答
  9. temperature=0,
  10. openai_api_key=api_key,
  11. openai_api_base=api_base
  12. )
  13. llm.predict("介绍下你自己")

示例

起名大师

  1. #起名大师,输出格式为一个数组
  2. from langchain.llms import OpenAI
  3. from langchain.prompts import PromptTemplate
  4. import os
  5. from langchain.schema import BaseOutputParser
  6. #自定义类
  7. class CommaSeparatedListOutputParser(BaseOutputParser):
  8. """Parse the output of an LLM call to a comma-separated list."""
  9. def parse(self, text: str):
  10. """Parse the output of an LLM call."""
  11. print(text)
  12. return text.strip().split(",")
  13. api_base = os.getenv("OPENAI_API_BASE")
  14. api_key = os.getenv("OPENAI_KEY")
  15. llm = OpenAI(
  16. model="gpt-3.5-turbo-instruct",
  17. temperature=0,
  18. openai_api_key=api_key,
  19. openai_api_base=api_base
  20. )
  21. prompt = PromptTemplate.from_template("你是一个起名大师,请模仿示例起3个具有{county}特色的名字,示例:男孩常用名{boy},女孩常用名{girl}。请返回以逗号分隔的列表形式。仅返回逗号分隔的列表,不要返回其他内容。")
  22. message = prompt.format(county="美国男孩",boy="sam",girl="lucy")
  23. print(message)
  24. strs = llm.predict(message)
  25. CommaSeparatedListOutputParser().parse(strs)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/486636
推荐阅读
相关标签
  

闽ICP备14008679号