LangChain本地搭建 |豆包MarsCode AI刷题

322 阅读4分钟

免费OpenAI API Key的获取

因为OpenAI需要科学上网,并且需要支付一定的费用。这里提供一个免费获取的链接。点我免费获取

import os
import openai

openai.api_key = "您的APIKEY"
openai.base_url = "https://free.v36.cm/v1/"
openai.default_headers = {"x-foo": "true"}

completion = openai.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "user",
            "content": "Hello world!",
        },
    ],
)
print(completion.choices[0].message.content)

# 正常会输出结果:Hello there! How can I assist you today ?

我的结果如下:

image.png

本地环境配置

1. 去下载课程代码,使用Pycharm打开

github.com/huangjia201…

image.png

2. 建立虚拟环境

我这里使用的minconda,打开Anaconda Prompt,新建立一个虚拟环境,我这里使用的版本是python3.9(3.8的环境不适合v2.0版本的)。在pycharm中加载我们创建好的虚拟环境,我这里名字叫做py39。
打开终端,可以先进入requirements.txt文件所在路径,然后安装requirements.txt里的环境,我这里选择的是2.0版本的,命令如下:

cd C:\Users\Ztt15\Desktop\langchain-in-action-main\langchain-in-action-main # 路径换成你的requirements
pip install langchain-openai
pip install langchain-community
# pip install openai
# pip install -r requirements_v0.2.txt  

环境搭载好之后,将初始化模型改为如下形式(其他课程代码同理):

# 01_SimpleTextGeneration.py
# 载入库
from langchain_openai import ChatOpenAI
# 初始化语言模型
llm = ChatOpenAI(
    openai_api_key="sk-*******************************************8f3f",
    openai_api_base="https://free.v36.cm/v1/",
    model="gpt-3.5-turbo"
)
# 发送请求
text = llm.predict("请给我写一句情人节红玫瑰的中文宣传语")
print(text)

image.png

LangChain入门

LangChain 是一个用于开发由语言模型驱动的应用程序的框架。它使得应用程序能够:

  • 具有上下文感知能力:将语言模型连接到上下文来源(提示指令,少量的示例,需要回应的内容等)
  • 具有推理能力:依赖语言模型进行推理(根据提供的上下文如何回答,采取什么行动等)

这个框架由几个部分组成。

  • LangChain 库:Python 和 JavaScript 库。包含了各种组件的接口和集成,一个基本的运行时,用于将这些组件组合成链和代理,以及现成的链和代理的实现。
  • LangChain 模板:一系列易于部署的参考架构,用于各种任务。
  • LangServe:一个用于将 LangChain 链部署为 REST API 的库。
  • LangSmith:一个开发者平台,让你可以调试、测试、评估和监控基于任何 LLM 框架构建的链,并且与 LangChain 无缝集成。

构建应用程序

现在我们可以开始构建语言模型应用程序了。LangChain提供了许多可以用来构建语言模型应用程序的模块。这些模块可以作为简单应用程序中的独立模块使用,也可以组合在一起用于更复杂的用例。

LangChain应用程序的核心构建模块是LLMChain。它结合了三个方面:

  • LLM: 语言模型是核心推理引擎。要使用LangChain,您需要了解不同类型的语言模型以及如何使用它们。
  • Prompt Templates: 提供语言模型的指令。这控制了语言模型的输出,因此了解如何构建提示和不同的提示策略至关重要。
  • Output Parsers: 将LLM的原始响应转换为更易处理的格式,使得在下游使用输出变得容易。

在本入门指南中,我们将逐个介绍这三个组件,然后介绍将它们组合在一起的LLMChain。了解这些概念将使您能够很好地使用和定制LangChain应用程序。大多数LangChain应用程序允许您配置LLM和/或使用的提示,因此了解如何利用这一点将是一个很好的帮助。

LLMs

LangChain中有两种类型的语言模型,称为:

  • LLMs: 这是一个以字符串作为输入并返回字符串的语言模型
  • ChatModels: 这是一个以消息列表作为输入并返回消息的语言模型

LLMs的输入/输出简单易懂 - 字符串。但是ChatModels呢?那里的输入是一个ChatMessage列表,输出是一个单独的ChatMessage。 一个ChatMessage具有两个必需的组件:

  • content: 这是消息的内容。
  • role: 这是ChatMessage来自的实体的角色。

LangChain提供了几个对象,用于方便地区分不同的角色:

  • HumanMessage: 来自人类/用户的ChatMessage
  • AIMessage: 来自AI/助手的ChatMessage
  • SystemMessage: 来自系统的ChatMessage
  • FunctionMessage: 来自函数调用的ChatMessage

如果这些角色都不合适,还可以使用ChatMessage类手动指定角色。有关如何最有效地使用这些不同的消息的更多信息,请参阅我们的提示指南。

LangChain为两者提供了一个标准接口,但了解这种差异以便为给定的语言模型构建提示非常有用。LangChain提供的标准接口有两种方法:

  • predict: 接受一个字符串,返回一个字符串
  • predict_messages: 接受一个消息列表,返回一个消息。