【LangChain】P1 LangChain 应用程序的核心构建模块 LLMChain 以及其三大部分

这篇具有很好参考价值的文章主要介绍了【LangChain】P1 LangChain 应用程序的核心构建模块 LLMChain 以及其三大部分。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

【LangChain】P1 LangChain 应用程序的核心构建模块 LLMChain 以及其三大部分,langchain,搜索引擎

LangChain 应用程序的核心构建模块

LangChain 应用程序的核心构建模块 LLMChain 由三部分组成:

  • 语言模型 - LLMs: 语言模型是这里的核心推理引擎。为了使用 LangChain,您需要了解不同类型的语言模型以及如何使用它们。
  • 提示模板 - Prompt templates: 它为语言模型提供指令。它控制着语言模型的输出,因此了解如何构建提示和不同的提示策略至关重要。
  • 输出解析器 - Output Parsers: 它们将 LLM 的原始响应翻译成更易于使用的格式,从而方便下游使用输出。

本部分我将单独介绍这三个组件,然后介绍将所有组件结合在一起的 LLMChain:


语言模型 - LLMs

在 LangChain 中,存在两种语言模型:

  • LLMs: 将字符串作为输入并返回字符串的语言模型;
    LLMs 的输入/输出是简单易懂的字符串。
  • ChatModels: 聊天模型,将信息列表作为输入并返回信息的语言模型;
    ChatModels 的输入是一个 ChatMessage 列表,输出是一个 ChatMessage。ChatMessage 有两个必备组件:
    • content(内容): 这是信息的内容。
    • role(角色): 这是来自该 ChatMessage 的实体的角色。

LangChain 为这两种语言模型提供了一个标准接口,该标准接口有两个方法:

  • predict: 接收一个字符串,返回一个字符串;明显是 LLMs 的方法。
  • predict_messages: 接收信息列表,返回信息;明显是 ChatModels 的方法。

LangChain 提供了多个对象,可以轻松区分不同的角色:

  • HumanMessage(人类信息): 来自人类/用户的 ChatMessage。
  • AIMessage(人工智能助手信息): 来自人工智能/助手的聊天信息。
  • SystemMessage(系统信息): 系统消息来自系统的聊天信息。
  • FunctionMessage(功能消息): 来自函数调用的聊天信息。

初始化 llm 与 chat_model

from langchain.llms import OpenAI
from langchain.chat_models import ChatOpenAI

llm = OpenAI(openai_api_key="xxx")
chat_model = ChatOpenAI(openai_api_key="xxx")
# 如果需要 API Key 可在博文下方留言

使用 predict 方法运行字符串输入:

text = "What would be a good company name for a company that makes colorful socks?"

print(llm.predict(text))
print(chat_model.predict(text))

使用 predict_message 方法运行信息列表输入:

from langchain.schema import HumanMessage

text = "What would be a good company name for a company that makes colorful socks?"
messages = [HumanMessage(content=text)]

print(llm.predict_messages(messages))
print(chat_model.predict_messages(messages))

提示模板 - Prompt templates

  • 提示模板是什么?

    在大语言模型中,开发人员通常不会直接将用户输入传递给语言模型,而是将用户输入添加到一个较大的文本段中,该文本段称为 “提示模板”(Prompt Template)。

  • 提示模板的目的?

    这样做的目的是为了为特定任务提供更多的上下文和指导,从而引导语言模型生成更有针对性的输出。

    这种方法有助于引导语言模型的生成,使其更加专注于特定任务,同时也可以控制生成的文本的风格和内容。通过提供上下文信息,提示模板可以在不同应用场景中引导语言模型的生成,以适应不同的用户需求。

  • 字符串提示模板案例:

    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")
    
  • 信息列表提示模板案例:

    from langchain.prompts.chat import (
        ChatPromptTemplate,
        SystemMessagePromptTemplate,
        HumanMessagePromptTemplate,
    )
    
    template = "You are a helpful assistant that translates {input_language} to {output_language}."
    system_message_prompt = SystemMessagePromptTemplate.from_template(template)
    human_template = "{text}"
    human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)
    
    chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
    
    chat_prompt.format_messages(input_language="English", output_language="French", text="I love programming.")
    

输出解析器 - Output Parsers

  • 输出解析器的作用?

    输出解析器可将 LLM 的原始输出转换成下游可使用的格式。

  • 输出解析器的类型?

    • 将 LLM 中的文本转换为结构化信息(如 JSON);
    • 将聊天信息转换为字符串;
    • 将调用返回的除信息外的额外信息(如 OpenAI 函数调用)转换为字符串。
    • 等;
  • 案例:

    下案例为编写自己的输出解析器 – 将逗号分隔的列表转换为列表:

    from langchain.schema import BaseOutputParser
    
    class CommaSeparatedListOutputParser(BaseOutputParser):
        """Parse the output of an LLM call to a comma-separated list."""
        
        def parse(self, text: str):
            """Parse the output of an LLM call."""
            return text.strip().split(", ")
    
    CommaSeparatedListOutputParser().parse("hi, bye")
    # >> ['hi', 'bye']
    

LLMChain 组合

现在,我们将所有这些组合成一个链。
该链将接收输入变量,将其传递给提示模板以创建提示,将提示传递给 LLM,然后将输出传递给输出解析器。
这是一种捆绑模块化逻辑的便捷方法。请看测试案例:

from langchain.chat_models import ChatOpenAI
from langchain.prompts.chat import (
    ChatPromptTemplate,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.schema import BaseOutputParser

# 输出解析器部分
class CommaSeparatedListOutputParser(BaseOutputParser):
    """Parse the output of an LLM call to a comma-separated list."""

    def parse(self, text: str):
        """Parse the output of an LLM call."""
        return text.strip().split(", ")

# 信息列表提示模板案例
template = """You are a helpful assistant who generates comma separated lists.
A user will pass in a category, and you should generate 5 objects in that category in a comma separated list.
ONLY return a comma separated list, and nothing more."""
system_message_prompt = SystemMessagePromptTemplate.from_template(template)
human_template = "{text}"
human_message_prompt = HumanMessagePromptTemplate.from_template(human_template)

chat_prompt = ChatPromptTemplate.from_messages([system_message_prompt, human_message_prompt])
chain = LLMChain(
    llm=ChatOpenAI(),
    prompt=chat_prompt,
    output_parser=CommaSeparatedListOutputParser()
)
chain.run("colors")
# >> ['red', 'blue', 'green', 'yellow', 'orange']

上一篇博文:【LangChain】P0 LangChain 是什么与准备工作
下一篇博文:文章来源地址https://www.toymoban.com/news/detail-652689.html

到了这里,关于【LangChain】P1 LangChain 应用程序的核心构建模块 LLMChain 以及其三大部分的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • Java-langchain:在Java环境中构建强大的基于LLM的应用程序

    Java-langchain : 一个Java 8+的LangChain实现。在(企业)Java环境中构建强大的基于LLM的应用程序。 这里持续连载详细的Java入门的LLM学习课程。课程分四个部分: 面向开发者的提示工程 (promptdevelopment) 搭建基于 ChatGPT 的问答系统 (chagptapi) 使用 LangChain 开发应用程序 (langchain) 使用 Lang

    2024年02月21日
    浏览(47)
  • Elasticsearch:使用在本地计算机上运行的 LLM 以及 Ollama 和 Langchain 构建 RAG 应用程序

    无需 GPU 的隐私保护 LLM。在本博客中,我将演示使用不同的工具 Ollama 构建的 RAG 应用程序。 与本文相关的所有源代码均已发布在 github上。 请克隆存储库以跟随文章操作。我们可以通过如下的方式来克隆: Ollama 是一个轻量级且灵活的框架,专为在个人计算机上本地部署 LL

    2024年04月16日
    浏览(54)
  • 自学大语言模型的应用程序框架Langchain(初入门)

    现阶段chatGPT非常火热。带动了第三方开源库:LangChain火热。它是一个在大语言模型基础上实现联网搜索并给出回答、总结 PDF 文档、基于某个 Youtube 视频进行问答等等的功能的应用程序。 LangChain 是一个用于开发由语言模型驱动的应用程序的框架。 langchain的目标:最强大和差

    2024年02月07日
    浏览(51)
  • 【AI大模型应用开发】【LangChain系列】7. LangServe:轻松将你的LangChain程序部署成服务

    大家好,我是【同学小张】。持续学习,持续干货输出,关注我,跟我一起学AI大模型技能。 LangServe 用于将 Chain 或者 Runnable 部署成一个 REST API 服务。 同时安装langserve的服务端和客户端。 只安装客户端 只安装服务端 1.1 服务端代码 从代码来看创建LangServe的重点: (1)创建

    2024年03月28日
    浏览(63)
  • ChatGPT 使用 拓展资料:吴恩达大咖 基于LangChain的LLM应用程序开发-1

    ChatGPT 使用 拓展资料:吴恩达大咖 基于LangChain的LLM应用程序开发 基于LangChain的LLM应用程序开发 LangChain for LLM Application Development [https://www.deeplearning.ai/short-courses/langchain-for-llm-application-development/] LangChain for LLM Application Development https://www.deeplearning.ai/short-courses/langchain-for-llm-app

    2024年02月07日
    浏览(53)
  • Web 应用程序性能测试核心步骤

     通常大家做web 应用程序的时候会有哪些操作呢?今天就来看看常见的web 应用程序的常见操作。 1:识别测试环境。确定物理测试环境和生产环境,以及测试团队可用的工具和资源。物理环境包括硬件、软件和网络配置。在一开始就对整个测试环境有一个彻底的理解,可以使

    2024年01月18日
    浏览(46)
  • Flutter中的Web应用程序开发:构建现代Web应用程序

    作者:禅与计算机程序设计艺术 作为人工智能专家,程序员和软件架构师,CTO,我今天将为大家分享有关 Flutter 中 Web 应用程序开发的见解。在这篇文章中,我们将深入探讨 Flutter Web 应用程序的开发过程、技术原理以及最佳实践。 引言 随着移动设备的普及,Web 应用程序在全

    2024年02月12日
    浏览(77)
  • 【Serverless Web 应用程序】构建流程

    【1】选择构建 Serverless Web 应用程序,程序架构如下所示: 【2】开发流程 【2.1】静态 Web 托管与持续部署: 所有的静态网页内容(HTML、CSS、JavaScript、图 像)和其他文件将由 AWS Amplify 控制台管理。用户将使用 AWS Amplify 控制 台公开的公共网站 URL 访问 Web。不需要额外运行

    2024年02月03日
    浏览(59)
  • vite + electron 构建前端桌面应用程序

    npm yarn 选择是否继续 项目名称 选择框架 选择项目语言 项目构建成功,根据提示进入项目目录,安装依赖 electron 官网:https://www.electronjs.org/zh/docs/latest/ vite-plugin-electron :https://github.com/electron-vite/vite-plugin-electron 安装依赖(electron 安装比较慢,耐心等待即可) 编写 Electron 入

    2024年02月06日
    浏览(51)
  • 使用Docker构建分布式应用程序

    作者:禅与计算机程序设计艺术 Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个轻量级、可移植的容器中,然后发布到任何流行的Linux或Windows机器上,也可以实现虚拟化。 传统的应用分为三层结构:应用运行环境、应用逻辑和资源管理,Doc

    2024年02月08日
    浏览(79)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包