[LangChain]简介&快速入门

这篇具有很好参考价值的文章主要介绍了[LangChain]简介&快速入门。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

⭐作者介绍:大二本科网络工程专业在读,持续学习Java,努力输出优质文章
⭐作者主页:@逐梦苍穹
⭐所属专栏:人工智能。

1、简介

LangChain 是一个基于语言模型开发应用程序的框架。它可以实现以下功能:
● 数据感知:将语言模型与其他数据源连接起来
● 主动性:允许语言模型与其环境进行交互
LangChain 的主要价值在于:

  1. 组件:用于处理语言模型的抽象,以及每个抽象的一系列实现。无论您是否使用 LangChain 框架的其他部分,组件都是模块化且易于使用的
  2. 现成的链式组装:用于完成特定高级任务的结构化组件组装
    现成的链式组装使得入门变得很容易。对于更复杂的应用程序和细致入微的用例,组件可以轻松自定义现有的链式组装或构建新的链式组装。

[LangChain]简介&快速入门,人工智能,langchain,microsoft,python,人工智能

[LangChain]简介&快速入门,人工智能,langchain,microsoft,python,人工智能

2、快速入门

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

2.1、LLMs

从语言模型获取预测结果:
LangChain的基本构建模块是LLM,它接受文本并生成更多的文本。
例如,假设我们正在构建一个根据公司描述生成公司名称的应用程序。为了做到这一点,我们需要初始化一个OpenAI模型封装器。在这种情况下,由于我们希望输出更随机,我们将使用较高的温度来初始化我们的模型。
[LangChain]简介&快速入门,人工智能,langchain,microsoft,python,人工智能

现在我们可以传入文本并获得预测结果了!
[LangChain]简介&快速入门,人工智能,langchain,microsoft,python,人工智能

2.2、聊天模型

聊天模型是语言模型的一种变体。
虽然聊天模型在内部使用语言模型,但其公开的接口略有不同:它们不是提供“文本输入,文本输出”的API,而是提供了一个“聊天消息”作为输入和输出的接口。
您可以通过将一个或多个消息传递给聊天模型来获取聊天补全。响应将是一条消息。
LangChain当前支持的消息类型有AIMessage、HumanMessage、SystemMessage和ChatMessage – ChatMessage接受一个任意的角色参数。
大多数情况下,只需要处理HumanMessage、AIMessage和SystemMessage。

from langchain.chat_models import ChatOpenAI
from langchain.schema import (
    AIMessage,
    HumanMessage,
    SystemMessage
)

chat = ChatOpenAI(temperature=0)
chat.predict_messages([HumanMessage(content="Translate this sentence from English to French. I love programming.")])
# >> AIMessage(content="J'aime programmer.", additional_kwargs={})
from langchain.chat_models import ChatOpenAI
from langchain.schema import HumanMessage,SystemMessage,AIMessage
chat = ChatOpenAI(temperature=.7,openai_api_key = openai_api_key)
chat(
    [
        SystemMessage(content="你是一个很棒的粤菜点餐的人工智能机器人,可以帮助用户在一个简短的句子中弄清楚该吃什么"),
        HumanMessage(content="我喜欢西红柿,我应该吃什么?")
    ]
)
chat(
    [
        SystemMessage(content="你是一个很好的 AI 机器人,可以帮助用户在一个简短的句子中找出去哪里旅行"),
        HumanMessage(content="我喜欢海滩,我应该去哪里?"),
        AIMessage(content="你应该去广东深圳"),
        HumanMessage(content="当我在那里时我还应该做什么?")
    ]
)

[LangChain]简介&快速入门,人工智能,langchain,microsoft,python,人工智能

了解聊天模型与普通LLM的区别是有用的,但有时候能够将它们视为相同也很方便。 LangChain通过还提供了一个接口,通过该接口您可以像操作普通LLM一样与聊天模型进行交互。 您可以通过predict接口进行访问。

chat.predict("Translate this sentence from English to French. I love programming.")
>> J'aime programmer

2.3、提示模板

大多数LLM应用程序不会直接将用户输入传递给LLM。通常,它们会将用户输入添加到一个更大的文本片段中,称为提示模板,在特定任务上提供额外的上下文。
在前面的示例中,我们传递给模型的文本包含了生成公司名称的指令。对于我们的应用程序来说,如果用户只需要提供公司/产品的描述,而不必担心给模型提供指令,那就太好了。
LLMs:
使用PromptTemplates非常简单!在这种情况下,我们的模板将非常简单:
首先,我们需要安装他们的Python包: from langchain.prompts import PromptTemplate
prompt = PromptTemplate.from_template(“What is a good name for a company that makes {product}?”) prompt.format(product=“colorful socks”)
Chat Models:
与LLMs类似,您可以使用MessagePromptTemplate来使用模板。您可以从一个或多个MessagePromptTemplate构建一个ChatPromptTemplate。您可以使用ChatPromptTemplate的format_messages方法来生成格式化的消息。
因为这是生成消息列表,所以它比普通的提示模板稍微复杂一些,普通的提示模板只生成一个字符串。请参阅有关提示的详细指南,了解此处可用的更多选项。
首先,我们需要安装他们的Python包: from langchain.prompts.chat import ( ChatPromptTemplate, SystemMessagePromptTemplate, HumanMessagePromptTemplate, ) 访问API需要一个API密钥。
在初始化OpenAI LLM类时直接通过 openai_api_key 命名参数传递密钥:
chat_prompt.format_messages(input_language=“English”, output_language=“French”, text=“I love programming.”)

[
    SystemMessage(content="You are a helpful assistant that translates English to French.", additional_kwargs={}),
    HumanMessage(content="I love programming.")
]

2.4、链

现在,我们已经有了一个模型和一个提示模板,我们将希望将两者结合起来。链提供了一种将多个原语(如模型、提示和其他链)链接(或链)在一起的方法。
LLMs:
最简单、最常见的链类型是LLMChain,它首先将输入传递给PromptTemplate,然后再传递给LLM。我们可以从现有的模型和提示模板构建一个LLM链。
使用这个我们可以替换

llm.predict("What would be a good company name for a company that makes colorful socks?")

from langchain.chains import LLMChain

chain = LLMChain(llm=llm, prompt=prompt)
chain.run("colorful socks")
Feetful of Fun

这就是我们的第一个链!理解这个简单链的工作原理将为您处理更复杂的链提供良好的基础。

Chat Models:
from langchain import LLMChain
要安装LangChain,请运行:
from langchain.prompts.chat import ( import Tabs from ‘@theme/Tabs’; import TabItem from ‘@theme/TabItem’; import CodeBlock from “@theme/CodeBlock”; )
pip install langchain
conda install langchain -c conda-forge
这将安装LangChain的最低要求。

2.5、代理

我们的第一个链运行了一个预定的步骤序列。为了处理复杂的工作流程,我们需要能够根据输入动态选择操作。
代理正是这样做的:它们使用语言模型来确定要采取的动作及其顺序。代理可以访问工具,并反复选择工具、运行工具并观察输出,直到得出最终答案。
要加载一个代理,您需要选择一个:
● LLM/Chat模型:为代理提供动力的语言模型。
● 工具:执行特定任务的函数。这可以是诸如:Google搜索、数据库查找、Python REPL、其他链等。有关预定义工具及其规范的列表,请参阅工具文档。
● 代理名称:一个字符串,用于引用支持的代理类。代理类主要由语言模型用于确定要采取的动作的提示参数化。因为本笔记本专注于最简单、最高级别的API,所以这只涵盖了使用标准支持的代理的情况。如果您想实现自定义代理,请参阅这里。有关支持的代理及其规范的列表,请参阅这里。
在本示例中,我们将使用SerpAPI来查询搜索引擎。
您需要安装SerpAPI Python包:
pip install google-search-results
并设置SERPAPI_API_KEY环境变量。

2.6、内存

到目前为止,我们所看到的链和代理都是无状态的,但对于许多应用程序来说,引用过去的交互是必要的。一个明显的例子是聊天机器人,你希望它能够在过去的消息上下文中理解新的消息。
内存模块提供了一种维护应用程序状态的方法。基本的内存接口很简单:它允许您根据最新的运行输入和输出更新状态,并使用存储的状态修改(或上下文化)下一个输入。
有许多内置的内存系统。其中最简单的是缓冲内存,它只是将最近的几个输入/输出添加到当前输入的前面 - 我们将在下面的示例中使用它。
LLMs:

from langchain import OpenAI, ConversationChain

llm = OpenAI(temperature=0)
conversation = ConversationChain(llm=llm, verbose=True)

conversation.run("Hi there!")

这是在引擎盖下面发生的事情:

Entering new chain…
Prompt after formatting:
The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.
Current conversation:
Human: Hi there!
AI:
Finished chain.
‘Hello! How are you today?’

现在,如果我们再次运行这个链:

conversation.run("I'm doing well! Just having a conversation with an AI.")

我们会看到传递给模型的完整提示包含了我们第一次交互的输入和输出,以及我们最新的输入:

Entering new chain…
Prompt after formatting:
The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.
Current conversation:
Human: Hi there!
AI: Hello! How are you today?
Human: I’m doing well! Just having a conversation with an AI.
AI:
Finished chain.
“That’s great! What would you like to talk about?”

Chat models:
您可以将内存与使用聊天模型初始化的链和代理一起使用。与用于LLM的内存不同之处在于,我们可以将它们保留为自己独特的内存对象,而不是尝试将所有先前的消息压缩成一个字符串。

from langchain.prompts import (
    ChatPromptTemplate,
    MessagesPlaceholder,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate
现在我们可以传入文本并获得预测结果了!
from langchain.chains import ConversationChain
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory

prompt = ChatPromptTemplate.from_messages([
    SystemMessagePromptTemplate.from_template(
        "The following is a friendly conversation between a human and an AI. The AI is talkative and "
        "provides lots of specific details from its context. If the AI does not know the answer to a "
        "question, it truthfully says it does not know."
    ),
    MessagesPlaceholder(variable_name="history"),
    HumanMessagePromptTemplate.from_template("{input}")
])

llm = ChatOpenAI(temperature=0)
memory = ConversationBufferMemory(return_messages=True)
conversation = ConversationChain(memory=memory, prompt=prompt, llm=llm)

conversation.predict(input="Hi there!")

Hello! How can I assist you today?

conversation.predict(input="I'm doing well! Just having a conversation with an AI.")

That sounds like fun! I’m happy to chat with you. Is there anything specific you’d like to talk about?文章来源地址https://www.toymoban.com/news/detail-526663.html

conversation.predict(input="Tell me about yourself.")

到了这里,关于[LangChain]简介&快速入门的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 自然语言处理从入门到应用——LangChain:快速入门-[快速开发聊天模型]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月15日
    浏览(45)
  • 自然语言处理从入门到应用——LangChain:快速入门-[安装与环境配置]

    分类目录:《大模型从入门到应用》总目录 LangChain系列文章: 基础知识 快速入门 安装与环境配置 链(Chains)、代理(Agent:)和记忆(Memory) 快速开发聊天模型 模型(Models) 基础知识 大型语言模型(LLMs) 基础知识 LLM的异步API、自定义LLM包装器、虚假LLM和人类输入LLM(

    2024年02月13日
    浏览(91)
  • Hadoop快速入门+MapReduce案例(赠送17到23年往年真题答案+MapReduce代码文件)-----大数据与人工智能比赛

    Hadoop的核心就是HDFS和MapReduce HDFS为海量数据提供了 存储 而MapReduce为海量数据提供了 计算框架 一.HDFS 整个HDFS有三个重要角色: NameNode (名称节点)、 DataNode (数据节点)和 Client (客户机) NameNode :是Master节点(主节点) DataNode : 是Slave节点(从节点),是文件存储的基本

    2024年02月20日
    浏览(52)
  • 人工智能简介

    人工智能简介 人工智能是新一轮科技革命和产业变革的重要驱动力量,其发挥作用的广度和深度堪比历次工业革命。蒸汽革命成就了英国,电气和信息化革命成就了美国。如今人工智能的历史机遇正在全面展开,也将成就新的引领者。 下图显示了一部典型iPhone手机上安装的

    2023年04月11日
    浏览(36)
  • 全网最详细中英文ChatGPT接口文档(五)30分钟快速入门ChatGPT——手把手示例教程:如何建立一个人工智能回答关于您的网站问题,小白也可学

    This tutorial walks through a simple example of crawling a website (in this example, the OpenAI website), turning the crawled pages into embeddings using the Embeddings API, and then creating a basic search functionality that allows a user to ask questions about the embedded information. This is intended to be a starting point for more sophisticated applicat

    2023年04月17日
    浏览(57)
  • AI人工智能简介和其定义

    全称:人工智能(Artificial Intelligence) 缩写:AI / ai        亦称智械、机器智能,指由人制造出来的可以表现出智能的机器。通常人工智能是指通过普通计算机程序来呈现人类智能的技术。该词也指出研究这样的智能系统是否能够实现,以及如何实现。人工智能于一般教材中

    2023年04月18日
    浏览(42)
  • 【人工智能概论】 optimizer.param_groups简介

    optimizer.param_groups : 是一个list,其中的元素为字典; optimizer.param_groups[0] :是一个字典,一般包括[‘params’, ‘lr’, ‘betas’, ‘eps’, ‘weight_decay’, ‘amsgrad’, ‘maximize’]等参数(不同的优化器包含的可能略有不同,而且还可以额外人为添加键值对); 举例展示: 不同键

    2024年02月10日
    浏览(45)
  • 【人工智能】LLM 大型语言模型和 Transformer 架构简介

    目录 大型语言模型 (LLM) 一、LLM的起源 二、LLM的发展阶段 三、LLM的应用领域

    2024年02月14日
    浏览(65)
  • 人工智能 Agent 简介:核心原理 / 数学公式 / 实现算法 / 代码实例

    人工智能Agent(AI Agent)是一个自动化的系统,它可以感知其环境并根据其感知进行决策以实现特定的目标。这些Agent可以是简单的程序,如搜索引擎的爬虫,也可以是复杂的系统,如自动驾驶汽车。AI Agent的主要目标是通过学习和优化来提高其性能。 AI Agent的实现原理主要基

    2024年02月12日
    浏览(58)
  • 如何开始学习人工智能?人工智能入门教程

    你想要了解人工智能的基本原理和应用,但面对庞大的知识体系和众多的学习资源,你可能感到有些迷茫。不用担心!作为从事人工智能多年的我,今天将为你提供一条通俗易懂的学习路径,帮助你正确入门人工智能。 第一步:打下基础 在入门人工智能前,咱们先要具备了

    2024年02月11日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包