开源模型应用落地-LangChain试炼-LCEL-表达式语言(一)

本文介绍了如何使用LangChain和LCEL语言简化大语言模型的应用开发。LCEL提供了一种构建复杂组件链的方式,而LangChain是一个全方位的开发工具,通过预构建的链功能和模块化组件,方便开发者快速构建项目。文章详细阐述了LCEL和LangChain的概念、主要特性,并提及了使用它们的技术实现和环境设置。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、前言

    尽管现在的大语言模型已经非常强大,可以解决许多问题,但在处理复杂情况时,仍然需要进行多个步骤或整合不同的流程才能达到最终的目标。然而,现在可以利用langchain来使得模型的应用变得更加直接和简单。

    LCEL是什么?

    LCEL是一种非常灵活和强大的语言,可以帮助您更方便地构建复杂的应用程序。它提供了很多有用的功能,使得您可以更快速地完成开发任务。


二、术语

2.1.LCEL

    是一种用于构建复杂链式组件的语言。它提供了一些非常实用的功能,比如流式处理、并行化和日志记录。它的使用方式很简单:只需要使用 "|" 符号将不同的组件连接起来,就可以形成一个链式结构。这个 "|" 符号就像是Unix中的管道操作符,可以将一个组件的输出转换成下一个组件的输入,从而实现数据的传递和处理。

2.2.LangChain

    是一个全方位的、基于大语言模型这种预测能力的应用开发工具。LangChain的预构建链功能,就像乐高积木一样,无论你是新手还是经验丰富的开发者,都可以选择适合自己的部分快速构建项目。对于希望进行更深入工作的开发者,LangChain 提供的模块化组件则允许你根据自己的需求定制和创建应用中的功能链条。

    LangChain本质上就是对各种大模型提供的API的套壳,是为了方便我们使用这些 API,搭建起来的一些框架、模块和接口。

   LangChain的主要特性:
        1.可以连接多种数据源,比如网页链接、本地PDF文件、向量数据库等
        2.允许语言模型与其环境交互
        3.封装了Model I/O(输入/输出)、Retrieval(检索器)、Memory(记忆)、Agents(决策和调度)等核心组件
        4.可以使用链的方式组装这些组件,以便最好地完成特定用例。
        5.围绕以上设计原则,LangChain解决了现在开发人工智能应用的一些切实痛点。


三、前提条件

3.1.安装虚拟环境

conda create -n langchain python=3.10
conda activate langchain
pip install --quiet  langchain-core langchain-community langchain-openai -i https://pypi.tuna.tsinghua.edu.cn/simple

PS:--quiet: 这个选项会让输出信息更简洁,只显示必要的信息,不会输出太多冗余信息。


四、技术实现

4.1.传统实现方式

# -*-  coding: utf-8 -*-
import os
import warnings

from langchain_community.chat_models import ChatOpenAI
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import PromptTemplate

warnings.filterwarnings("ignore")

os.environ["OPENAI_API_KEY"] = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'    #你的Open AI Key

if __name__ == '__main__':
    prompt_template = PromptTemplate.from_template("我家在{region},请推荐一下特色美食?")
    prompt = prompt_template.format_prompt(region="广州").to_messages()
    chat = ChatOpenAI(model="gpt-3.5-turbo",temperature=0.7,max_tokens=256)
    resp = chat.invoke(prompt)
    parser = StrOutputParser()
    resp = parser.parse(resp.content)
    print(resp)

调用结果:

4.2.LCEL实现方式

# -*- coding: utf-8 -*-
import os

from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
os.environ["OPENAI_API_KEY"] = 'sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'    #你的Open AI Key

if __name__ == '__main__':
    model = ChatOpenAI(model="gpt-3.5-turbo",temperature=0.7,max_tokens=256)

    prompt = ChatPromptTemplate.from_template("我家在{region},请推荐一下特色美食?")

    output_parser = StrOutputParser()

    chain = prompt | model | output_parser

    resp = chain.invoke({"region": "广州"})

    print(resp)


调用结果:


五、附带说明

5.1. 管道(prompt | model | output_parser)执行步骤

  1. 将用户参数以 {"region": "广州"} 的形式传入。

  2. Prompt 组件接收用户输入,并构建 PromptValue 对象。

  3. 模型组件接收组装后的Prompt,将其传入OpenAI LLM 模型进行评估。模型生成的输出为 ChatMessage 对象。

  4. output_parser组件接收 ChatMessage 对象,并将其转换为Python字符串,作为invoke方法的返回值。

评论 28
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

开源技术探险家

以微薄之力温暖这个世界

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值