LangChain 可以让开发人员像搭积木一样进行 AI 应用开发,它提供了很多的组件,你可以任意使用这些组件组开发成你自己的 AI 应用,例如调用不同的LLM、自建知识库时需要与各种数据的对接、自动执行一个任务等等。

image.png
外部数据调用
提示模版,例如如何自然语言转化成sql的提示模版
组件,一个个功能模块,例如调用google查询。
链,将组件链接在一起,例如问一个问题涉及天气和量子纠缠,链可以自动调用搜索天气组件和维基百科组件,然后把检索的数据返回后,给LLM,生成回答,整个过程,只需要用链即可,不需要认为写过多代码。
RAG,1文档加载器、2文本分块转化成向量、3存储到向量数据库、4从向量数据库中检索
Agent
组件数量:支持的LLM数量、使用例子数量、集成组件数量等

六大模块

模型I/O(Model I/O)

与不同LLM进行输入和输出的交互,封装了常用的提示模版,包含提示、与不同LLM对接输入和输出。

检索(Retrieval)

自建知识库,实现检索增强生成(Retrieval Augmented Generation ,RAG),包含文档加载、文本拆分、转换成向量、向量存储、知识检索

代理(Agents)

根据问题自动执行某个或多个任务,例如查询天气预报、发送一封邮件等

链(Chain)/ LCEL

分为Chain和LangChain表达式(LangChain Expression Language,LCEL),LCEL为更新后的方法,两者可以独立使用,LCEL里也可以调用Chain。
LCEL(LangChain Expression Language)可以用于构建和优化各种自动化和数据处理链条。举个例子,假设你正在开发一个自动化的内容摘要系统,该系统需要从多个数据源提取信息,然后使用自然语言处理(NLP)技术生成摘要。
LCEL和Chain的相同点和不同点
示例场景:自动化新闻摘要生成
假设我们要构建一个自动化系统,它的任务是从多个新闻网站收集新闻文章,然后生成这些文章的摘要。
使用Chain
定义Chain:首先,我们定义一个Chain,这个Chain包含了整个数据处理流程的步骤。例如,这个Chain可能包括以下步骤:

  1. 从新闻网站获取文章。
  2. 提取文章的主要内容。
  3. 使用自然语言处理技术生成摘要。
  4. 将摘要保存或展示给用户。

实现步骤:每个步骤都是Chain的一部分,可以使用不同的工具或方法实现。例如,从网站获取文章可能使用网络爬虫,提取内容可能使用文本处理库,生成摘要可能使用语言模型等。
使用LCEL
定义步骤:在这个Chain中,我们可以使用LCEL来定义和优化特定的步骤。例如,我们可以使用LCEL来声明性地描述如何从文章中提取关键信息,或者如何结合不同的数据源来改进摘要的质量。
优化流程:LCEL允许我们以高效和优化的方式组织这些步骤。例如,我们可以使用LCEL来定义并行处理规则,以便同时从多个新闻网站获取文章,或者定义如何在生成摘要时有效地处理和分析文本数据。
结合使用
在这个例子中,Chain定义了整个新闻摘要生成的流程,而LCEL用于优化这个流程中的特定步骤。LCEL提供了一种高级的方式来声明性地描述和组织数据处理逻辑,而Chain则是这些逻辑实际执行的框架。通过结合使用Chain和LCEL,我们能够构建一个既高效又灵活的自动化新闻摘要生成系统。

记忆(Memory)

用合适的方式存储对话内容,用户发送问题后先读取历史会话内容,返回答案之后,将本次交互内容进行存储。

回调(Callback)

回调在LangChain中提供了一种强大的方式来干预和管理LLM应用的不同阶段,无论是用于日志记录、监控、流式处理还是错误处理。通过使用回调,开发者可以更好地控制和优化他们的应用。
例如:

  1. 日志记录和监控:例如,您可以使用回调来记录LLM的每次调用或监控链条的性能。
  2. 流式处理:在处理流式数据时,例如,您可以使用回调来处理每个新生成的令牌或消息。
  3. 错误处理:在出现错误时,您可以使用回调来触发错误处理逻辑,例如重新尝试或发送警报。
  4. 用户交互:在聊天模型或交互式应用中,您可以使用回调来处理用户的每个输入或模型的每个响应。

    三大工具

    Templates、LangSmith、LangServe三大工具共同使,让你能够轻松开发、生产和部署AI应用程序。首先你可以参考Templates模板作为指导,编写AI应用程序。然后,LangSmith 帮助您检查、测试和监控您的链,确保您的AI应用程序不断改进并准备好部署。最后,使用 LangServe,您可以轻松地将任何链转换为 API,使部署变得轻而易举。

    Templates

    已经写好的一些常用的功能模版,可以直接拿来使用,例如RAG聊天机器人、从非结构化数据中提取结构化数据。
    开发:在LangChain/LangChain.js中编写应用程序。使用模板作为参考,立即开始运行。

    LangSmith

    可帮助开发人员跟踪和评估开发的AI应用。为 LangChain 生态增加了运行监测与分析的能力。它可以收集 LLM 应用的各类运行指标,并进行分析展示,帮助开发者更深入地理解应用的运行状况。
    生产化:使用 LangSmith 检查、测试和监控您的链,以便您可以自信地不断改进和部署。

    LangServe

    一个工具,用于将你的LangChain应用转换为可以通过REST API访问的服务。你的程序实际上是部署在你自己的服务器或云环境上,而LangServe负责创建和管理这些服务的API接口。
    部署:使用 LangServe 将任何链转换为 API。

    LangChain库

    https://api.python.langchain.com/en/stable/langchain_api_reference.html
    langchain :构成应用程序认知架构的链、代理和检索策略。
    langchain-core :基本抽象和LangChain表达式语言。
    langchain-community :第三方集成。