无限可能LangChain——概念指南之架构

本节包含对 LangChain 关键部分的介绍。

架构

LangChain 作为一个框架由多个包组成。

langchain-core

该包包含不同组件的基本抽象以及将它们组合在一起的方法。此处定义了LLM、向量存储、检索器等核心组件的接口。这里没有定义第三方集成。依赖项有目的地保持非常轻量级。

LangChain Core 包含为 LangChain 生态系统的其余部分提供基础的抽象。拥有这些抽象的好处是任何提供商都可以实现所需的接口,然后轻松地在 LangChain 生态系统的其余部分中使用。

快速安装
pip install langchain-core
核心接口:可运行文件

Runnable的概念是 LangChain Core 的核心——它是大多数 LangChain Core 组件实现的接口,为它们提供了

  • 一个通用的调用接口(调用、批处理、流等)
  • 用于重试、回退、模式和运行时可配置性的内置实用程序
  • 使用 LangServe 轻松部署

如需更多信息,请查看可运行文档。实现接口的组件示例包括:LLM、聊天模型、提示、检索器、工具、输出解析器。

我们可以通过两种方式使用 LangChain Core 对象:

  • 命令式:即。直接调用它们,例如:model.invoke(...)
  • 声明式,带有LangChain表达式语言(LCEL)
  • 或者两者兼而有之!例如:LCEL 序列中的一个步骤可以是自定义函数。

合作包

当整合的长尾在 langchain-community,我们将流行的集成拆分为它们自己的包(例如:langchain-openailangchain-anthropic 等)。这样做是为了改进对这些重要集成的支持。

langchain

langchain包包含构成应用程序认知架构的链、代理和检索策略。这些不是第三方集成。这里的所有链、代理和检索策略都不特定于任何一个集成,而是在所有集成中通用的。

快速安装
pip install langchain or pip install langsmith && conda install langchain -c conda-forge
langchain 具体是什么?

大型语言模型正在成为一种变革性技术,使开发人员能够构建他们以前无法构建的应用程序。然而,孤立地使用这些LLM通常不足以创建一个真正强大的应用程序——当你可以将它们与其他计算或知识来源结合起来时,真正的强大就来了。

该库旨在帮助开发这些类型的应用程序。这些应用程序的常见示例包括:

  • 用RAG回答问题:参考
  • 提取结构化输出:参考
  • 聊天机器人:参考
langchain 有什么帮助?

LangChain 旨在帮助解决以下五个主要领域的问题:

📃 模型和提示: 这包括提示管理、提示优化、所有LLM的通用接口以及用于处理聊天模型和LLM的通用实用程序。

🔗: 链超越了单个LLM调用,涉及调用序列(无论是对LLM还是不同的实用程序)。LangChain为链提供了标准接口、与其他工具的大量集成以及用于常见应用程序的端到端链。

📚检索增强生成: 检索增强生成涉及特定类型的链,这些链首先与外部数据源交互以获取用于生成步骤的数据。示例包括长文本片段的摘要和对特定数据源的问答。

🤖代理: 代理涉及LLM决定采取哪些行动,采取该行动,查看观察结果,并重复该观察结果,直到完成。LangChain为代理提供了标准接口、可供选择的代理以及端到端代理的示例。

🧐评价: 众所周知,生成模型很难用传统指标进行评估。评估它们的一种新方法是使用语言模型本身进行评估。LangChain提供了一些提示/链来协助这一点。

langchain-community

此包包含由 LangChain 社区维护的第三方集成。关键合作伙伴包被分离出来的。这包含各种组件(LLM、向量存储、检索器)的所有集成。此包中的所有依赖项都是可选的,以保持包尽可能轻量级。

快速安装
pip install langchain-community
langchain-community 是什么?

朗链社区包含实现朗链核心中定义的基本接口的第三方集成,使它们可以在任何朗链应用程序中随时使用。参考API

langgraph

langgraph 是 langchain 的扩展,旨在通过将步骤建模为图中的边和节点,使用LLM构建健壮且有状态的多参与者应用程序。

LangGraph 公开了用于创建通用类型代理的高级接口,以及用于组合自定义流的低级API。

概览

假设您正在构建一个客户支持助理。您希望您的助手能够:

  1. 使用工具回答问题
  2. 如果需要,与人类联系
  3. 能够无限期暂停进程并在人类响应时恢复

LangGraph 让这一切变得简单。

快速安装:

pip install -U langgraph

然后定义我们的助手:

import jsonfrom langchain_anthropic import ChatAnthropic
from langchain_community.tools.tavily_search import TavilySearchResultsfrom langgraph.checkpoint.sqlite import SqliteSaver
from langgraph.graph import END, MessageGraph
from langgraph.prebuilt.tool_node import ToolNode# Define the function that determines whether to continue or not
def should_continue(messages):last_message = messages[-1]# If there is no function call, then we finishif not last_message.tool_calls:return ENDelse:return "action"# Define a new graph
workflow = MessageGraph()tools = [TavilySearchResults(max_results=1)]
model = ChatAnthropic(model="claude-3-haiku-20240307").bind_tools(tools)
workflow.add_node("agent", model)
workflow.add_node("action", ToolNode(tools))workflow.set_entry_point("agent")# Conditional agent -> action OR agent -> END
workflow.add_conditional_edges("agent",should_continue,
)# Always transition `action` -> `agent`
workflow.add_edge("action", "agent")memory = SqliteSaver.from_conn_string(":memory:") # Here we only save in-memory# Setting the interrupt means that any time an action is called, the machine will stop
app = workflow.compile(checkpointer=memory, interrupt_before=["action"])

现在,运行 langgraph:

# Run the graph
thread = {"configurable": {"thread_id": "4"}}
for event in app.stream("what is the weather in sf currently", thread, stream_mode="values"):event[-1].pretty_print()

LangGraph 是一个工具,可以帮助你构建复杂的、有状态的代理程序,而无需过多关注手动管理状态和中断。你只需要定义节点、边和状态模式,然后让 LangGraph 处理其余的事情。

langserve

将 LangChain 链部署为 REST API 的包。使启动和运行生产就绪API变得容易。

LangSmith

一个开发人员平台,可让您调试、测试、评估和监控 LLM 应用程序。

image.png

欢迎关注微信公众号【千练极客】,尽享更多干货文章! qrcode_for_gh_e39063348296_258.jpg

本文由博客一文多发平台 OpenWrite 发布!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28278.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LaTex入门教程

目录 1.说明 2.页面的分区 3.入门介绍 (1)命令 (2)环境 (3)声明 (4)注释 4.代码结构 (1)导言区 (2)支持中文 (3…

【字符串】65. 有效数字

本文涉及知识点 字符串 LeetCode65. 有效数字 给定一个字符串 s ,返回 s 是否是一个 有效数字。 例如,下面的都是有效数字:“2”, “0089”, “-0.1”, “3.14”, “4.”, “-.9”, “2e10”, “-90E3”, “3e7”, “6e-1”, “53.5e93”,…

药品销售管理系统带万字文档药店管理系统java项目药店商城网站

文章目录 药品销售管理系统一、项目演示二、项目介绍三、万字项目文档四、部分功能截图五、部分代码展示六、底部获取项目源码带万字文档(9.9¥带走) 药品销售管理系统 一、项目演示 药品销售管理系统 二、项目介绍 系统角色:管理…

Python 函数返回值:理解 Return 语句的重要性

Python 函数返回值:理解 Return 语句的重要性 在 Python 编程中,return 语句在函数定义中扮演着至关重要的角色。它决定了函数执行后应返回的数据。但并非所有的函数都需要一个 return 语句。本文将详细探讨 return 语句的作用、函数不包含 return 语句…

GPU的工作原理

location: Beijing 1. why is GPU CPU的存储单元和计算单元的互通过慢直接促进了GPU的发展 先介绍一个概念:FLOPS(Floating Point Operations Per Second,浮点运算每秒)是一个衡量其执行浮点运算的能力,可以作为计算…

【MySQL】事务的特性和隔离级别

创作不易&#xff0c;本篇文章如果帮助到了你&#xff0c;还请点赞 关注支持一下♡>&#x16966;<)!! 主页专栏有更多知识&#xff0c;如有疑问欢迎大家指正讨论&#xff0c;共同进步&#xff01; 给大家跳段街舞感谢支持&#xff01;ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ …

向https地址发送请求失败报错

错误1&#xff1a; 10:13:47.520 [main] DEBUG org.apache.http.conn.ssl.SSLConnectionSocketFactory - Starting handshake 10:13:47.523 [main] DEBUG org.apache.http.impl.conn.DefaultManagedHttpClientConnection - http-outgoing-0: Shutdown connection 10:13:47.523…

vue 应用测试(一) --- 介绍

vue 应用测试&#xff08;一&#xff09; ---介绍 前端测试简介组件测试Jest 测试框架简介其他测试框架 第一个测试避免误报如何组织测试代码 组件挂载Vue2 组件挂载的方式Vue3 的挂载方式vue-test-utils挂载选项 如何调试测试用例参考小结 前端测试简介 软件测试&#xff1a;…

[AIGC] Python的Range函数

Python的range()函数是一个内置函数&#xff0c;常常用于编程中生成数列。这个函数可以生成一个整数序列&#xff0c;这个序列通常用在循环中。 文章目录 基本用法详细用法注意事项 基本用法 range()函数的基本形式为 range(stop) —— 这将生成一个从0开始&#xff0c;到stop…

Docker_1.0

1.初识Docker 1.1.什么是Docker 微服务虽然具备各种各样的优势&#xff0c;但服务的拆分通用给部署带来了很大的麻烦。 - 分布式系统中&#xff0c;依赖的组件非常多&#xff0c;不同组件之间部署时往往会产生一些冲突。 - 在数百上千台服务中重复部署&#xff0c;环境不一…

(60)MOS管专题--->(15)MOS场效应管

(15)MOS场效应管 1 目录 (a)IC简介 (b)数字IC设计流程 (c)Verilog简介 (d)MOS场效应管 (e)结束 1 IC简介 (a)在IC设计中,设计师使用电路设计工具(如EDA软件)来设计和模拟各种电路,例如逻辑电路、模拟电路、数字信号处理电路等。然后,根据设计电路的…

Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported

Content type application/x-www-form-urlencoded;charsetUTF-8 not supported 问题背景新增页面代码改造 问题背景 这里有一个需求&#xff0c;前端页面需要往后端传参&#xff0c;参数包括主表数据字段以及子表数据字段&#xff0c;由于主表与子表为一对多关系&#xff0c;在…

基于单片机的多功能智能小车设计

第一章 绪论 1.1 课题背景和意义 随着计算机、微电子、信息技术的快速发展,智能化技术的发展速度越来越快,智能化与人们生活的联系也越来越紧密,智能化是未来社会发展的必然趋势。智能小车实际上就是一个可以自由移动的智能机器人,比较适合在人们无法工作的地方工作,也可…

python基础面试器(其一)

一&#xff0c; 你为什么主要学习的是python语言&#xff1f; 我觉得python 是一门优秀的综合语言&#xff0c;python的宗旨就是简明&#xff0c;优雅&#xff0c;强大&#xff0c;在数据采集&#xff0c;人工智能&#xff0c;云计算&#xff0c;金融分析&#xff0c;大数据开…

C++ 12 之 指针引用

c12指针引用.cpp #include <iostream>using namespace std;struct students12 {int age; };int main() {students12 stu;students12* p &stu; // 结构体指针students12* &pp p; // 结构体指针起别名pp->age 20;// (*pp).age 22;cout << "…

【CTF Web】CTFShow 探针泄露 Writeup(PHP+探针泄露+信息收集)

探针泄露 10 对于测试用的探针&#xff0c;使用完毕后要及时删除&#xff0c;可能会造成信息泄露 解法 查看网页源代码。 view-source:https://11170dfe-84c7-4fde-b1ca-5d1ec3dd7570.challenge.ctf.show/没有找到有用的信息。 用 dirsearch 扫描。 dirsearch -u https://1…

打造私密的通信工具,极空间搭建免费开源的电子邮件管理程序『Cypht』

打造私密的通信工具&#xff0c;极空间搭建免费开源的电子邮件管理程序『Cypht』 哈喽小伙伴门好&#xff0c;我是Stark-C~ 说起电子邮件大家都不陌生&#xff0c;哪怕是在当前微信或者QQ已经非常普遍的今天&#xff0c;电子邮件在我们很多人的工作中都充当了重要的通信工具。…

【TB作品】基于STM32单片机的实验室器材管理登记二维码系统

这个单片机代码实现了一个实验室管理系统&#xff0c;该系统的主要功能包括记录和管理ID信息、日期和时间、以及显示这些信息到OLED屏幕上。以下是对代码主要功能的分析&#xff1a; 全局变量定义 定义了多个全局变量来存储系统状态、页面、密码、ID列表等信息。time 结构体用…

专题六——模拟

目录 一替换所有的问号 二提莫攻击 三N字形变换 四外观数列 五数青蛙 一替换所有的问号 oj链接&#xff1a;替换所有的问号 思路&#xff1a;简单模拟&#xff1b;注意i0和in是处理越界问题就行&#xff01;&#xff01; class Solution { public:string modifyString…

GenericObjectPool对象池化的介绍与用法

前言 GenericObjectPool 是 Apache Commons Pool 库的一部分&#xff0c;它提供了一个通用的对象池实现&#xff0c;允许用户在需要时从池中借用和返回对象&#xff0c;而不是每次需要一个新实例时都创建一个。这种方法可以显著提高性能&#xff0c;特别是对于创建开销大或需要…