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

news2024/12/26 11:24:05

本节包含对 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 json

from langchain_anthropic import ChatAnthropic
from langchain_community.tools.tavily_search import TavilySearchResults

from 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 finish
    if not last_message.tool_calls:
        return END
    else:
        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.coloradmin.cn/o/1828977.html

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

相关文章

DenseNet完成Cifer10任务的效果验证

本文章是针对论文《2017-CVPR-DenseNet-Densely-Connected Convolutional Networks》中实验的复现,使用了几乎相同的超参数 目录 一、论文中的实验 1.准确率 2.参数效率 3.不同网络结构之间的比较 二、超参数: 三、复现的实验结果: 1.DenseNet20…

编写一个简单的Mybatis插件

1.编写一个类,实现Intercepter这个接口 2.完成这个类的方法,并通过注解Intercepts来告诉Mybatis这个插件拦截哪个类和哪个方法 3.在Mybatis的全局配置文件里注册这个插件,让插件生效 4.玩一个实际功能的插件

CCPD数据集

官网:https://github.com/detectRecog/CCPD 其它介绍:https://blog.csdn.net/qianbin3200896/article/details/103009221 CCPD (Chinese City Parking Dataset, ECCV) provinces ["皖", "沪", "津", "渝", &…

机床网关功能特点、实施过程以及应用效果分享-天拓四方

随着工业4.0时代的到来,智能制造和工业互联网技术快速发展,机床作为制造业的核心设备,其智能化、网联化的需求日益迫切。机床网关作为连接机床与上层管理系统的关键枢纽,其重要性不言而喻。本案例将详细介绍机床网关的解决方案&am…

数据仓库和数据库有什么区别?

一、什么是数据仓库二、什么是数据库三、数据仓库和数据库有什么区别 一、什么是数据仓库 数据仓库(Data Warehouse)是一种专门用于存储和管理大量结构化数据的信息系统。它通过整合来自不同来源的数据,为企业提供统一、一致的数据视图&…

【百度智能体】零代码创建职场高情商话术助手智能体

一、前言 作为一个程序猿,工科男思维,走上职场后,总会觉得自己不会处理人际关系,容易背锅说错话,这时候如果有个助手能够时时刻刻提醒自己该如何说话如何做事情就好了。 而我们现在可以通过百度文心智能体平台构建各…

[论文精读]Line Graph Neural Networks for Link Prediction

论文网址:Line Graph Neural Networks for Link Prediction | IEEE Journals & Magazine | IEEE Xplore 论文代码:GitHub - divelab/LGLP 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法…

植物大战僵尸杂交版全新版v2.1解决全屏问题

文章目录 🚋一、植物大战僵尸杂交版❤️1. 游戏介绍💥2. 如何下载《植物大战僵尸杂交版》 🚀二、解决最新2.1版的全屏问题🌈三、画质增强以及减少闪退 🚋一、植物大战僵尸杂交版 《植物大战僵尸杂交版》是一款在原版《…

【three.js】设置canvas画布背景透明

通过Three.js渲染一个模型的时候,不希望canvas画布有背景颜色,也就是canvas画布完全透明,可以透过canvas画布看到画布后面叠加的HTML元素图文,呈现出来一种三维模型悬浮在网页上面的效果。 比如我们现在的模型背景是黑色的&#…

linxu-Ubuntu系统上卸载Kubernetes-k8s

如果您想从Ubuntu系统上卸载Kubernetes集群,您需要执行以下步骤: 1.关闭Kubernetes集群: 如果您的集群还在运行,首先您需要使用kubeadm命令来安全地关闭它: sudo kubeadm reset在执行该命令后,系统会提示…

哪些数据管理知识领域需要做到数据全生命周期管理

一、数据生命周期 数据管理、数据治理、数据安全、元数据管理、数据治理等知识领域,都需要按照数据的生命周期开展管理工作。数据生命周期包括计划、设计/启用、创建/获取、存储/维护、使用、增强和处置。详见下图。 1.数据治理生命周期 1)规划:将数据要求与业务战略连接起…

HTTP-代理

HTTP-代理 web代理服务器是网络的中间实体,代理位于客户端和服务器之间,扮演者中间人的角色,在各端点之间来回传递http报文 web的中间实体 web上的代理服务器是代表客户端完成事务处理的中间人,如果没有web代理,htt…

拍抖音素材段子去哪里找?哪里有搞笑段子文案以及视频素材?

拍抖音视频非常火爆,很多人都在为找素材发愁。别担心,今天我给大家推荐几个非常不错的网站,保证你们找到满满的灵感,拍出更有趣的段子视频! 蛙学府 首先要推荐的是蛙学府。这个网站不仅素材多,还提供各种段…

ChatGPT 网页会话过程数据传输分析以及横向对比

新建一个会话 https://chatgpt.com/backend-api/conversation POST 请求 {"action": "next","messages": [{"id": "aaa2d6d4-5a8b-473e-bd21-e3bf2ee4f571","author": {"role": "user"},&…

matlab动画模拟三体问题,微分方程,动力学

介绍 三体问题(Three-Body Problem)是经典力学中的一个著名问题,它研究的是三个质量相似的天体在相互引力作用下的运动规律。这个问题最早由艾萨克牛顿(Isaac Newton)在1687年的《自然哲学的数学原理》中提出&#xf…

oracle RAC安装 保姆级教程

使用SSHXmanager 我的本地IP是172.17.68.68 服务器配置 [rootrac12-1 ~]# cat /etc/hosts 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6 #Public IP …

全网爆火《pvz植物大战僵尸杂交版》最新安装包,Android、Windows、ios安装包+教程!

今天阿星想和大家分享一个最近在B站上引起轰动的老游戏——《植物大战僵尸》! 是的,你没听错,就是那个曾经让我们熬夜到天亮,一关接一关挑战的游戏。 让我们来聊聊,这款游戏怎么就突然又火了起来呢? 原来…

[Linux] UDP协议介绍:UDP协议格式、端口号在网络协议栈那一层工作...

TCP/IP网络模型, 将网络分为了四层: 之前的文章中以HTTP和HTTPS这两个协议为代表, 简单介绍了应用层协议. 实际上, 无论是HTTP还是HTTPS等应用层协议, 都是在传输层协议的基础上实现的 而传输层协议中最具代表性的就是: UDP和TCP协议了. 以HTTP为例, 在使用HTTP协议通信之前, …

上海磐璟物流设备携物流笼车、金属周转箱等盛装亮相2024杭州快递物流展

上海磐璟物流设备有限公司携物流笼车、金属周转箱、周转架等物流设备盛装亮相2024长三角快递物流展(杭州),7月8日杭州国际博览中心3C馆C09-1与您相约! 我公司是集研发、设计、生产、销售、服务为一体的物流装备企业;1…

【学习-华为HCIA数通网络工程师真题(持续更新)】(2024-6-16更)

1、在 VRP 平台上,可以通过下面哪种方式访向上条历史命令? 上光标 (ctrlU 为自定义快捷键,ctrlP 为显示历史缓存区的前一条命令,左光标为移动光标) 2、主机 A (10.1.1.2/24)和主机 B…