LangChain和LangGraph 里面的 `create_react_agent`有什么不同

這兩個函數雖然名稱相同,但來自不同的庫(LangChain 和 LangGraph),它們在實現和使用上有一些關鍵區別:

主要區別

特性LangChain 的 create_react_agentLangGraph 的 create_react_agent
所屬庫LangChainLangGraph
設計目的單次執行的簡單代理基于圖的、可循環執行的復雜代理
執行模型線性執行圖結構執行(支持循環和分支)
狀態管理有限狀態管理完整的狀態管理和追蹤
適用場景簡單任務復雜、多步驟任務

LangChain 的 create_react_agent

from langchain.agents import create_react_agent# 典型用法
agent = create_react_agent(llm=llm,tools=tools,prompt=prompt
)

特點:

  • 基于 ReAct (Reasoning + Acting) 框架
  • 適合單次執行的簡單任務
  • 執行是線性的,沒有循環或復雜控制流
  • 狀態管理相對簡單

LangGraph 的 create_react_agent

from langgraph.prebuilt import create_react_agent# 典型用法
agent = create_react_agent(llm=llm,tools=tools,prompt=prompt
)

特點:

  • 同樣基于 ReAct 框架,但在圖結構中實現
  • 支持循環執行和復雜控制流
  • 可以處理多輪對話和復雜任務
  • 提供更強大的狀態管理和追蹤能力
  • 可以與其他圖節點組合創建更復雜的代理

如何選擇

  1. 選擇 LangChain 版本 當:

    • 你只需要簡單的單次任務執行
    • 不想引入額外的 LangGraph 依賴
    • 任務流程是線性的
  2. 選擇 LangGraph 版本 當:

    • 你需要處理復雜、多步驟的任務
    • 需要循環執行或條件分支
    • 需要更強大的狀態管理
    • 計劃將代理集成到更大的工作流中

代碼示例對比

LangChain 版本

from langchain.agents import create_react_agent
from langchain import hubprompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
result = agent_executor.invoke({"input": "查詢北京天氣"})

LangGraph 版本

from langgraph.prebuilt import create_react_agent
from langchain import hubprompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)# 可以定義更復雜的工作流
workflow = ...
workflow.add_node("agent", agent)
# 添加其他節點和邊...

總結

雖然兩者都實現了 ReAct 代理模式,但 LangGraph 的版本提供了更強大的工作流控制能力,適合構建復雜的多步驟代理系統。如果你只需要基本的代理功能,LangChain 的版本可能更簡單直接。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/91296.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/91296.shtml
英文地址,請注明出處:http://en.pswp.cn/web/91296.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

PostgreSQL 與 Oracle 數據庫字段類型的詳細對比

一、數值類型對比數據類型OraclePostgreSQL說明整數NUMBER(p,0)SMALLINT/INT/BIGINTOracle 統一用 NUMBER,PG 區分精度范圍浮點數BINARY_FLOATREAL單精度浮點雙精度浮點BINARY_DOUBLEDOUBLE PRECISION雙精度浮點高精度小數NUMBER(p,s)NUMERIC(p,s)精確數值存儲自增序…

JVM 性能調優實戰:讓系統性能 “飛” 起來的核心策略

在 Java 應用的生命周期中,性能問題如同隱藏的 “暗礁”—— 初期可能不顯眼,但隨著用戶量增長和業務復雜度提升,微小的性能損耗會被無限放大,最終導致系統響應遲緩、頻繁卡頓甚至崩潰。JVM 性能調優的目標,就是通過優…

Android Handler 完全指南

在 Android 開發中,Handler 是線程通信的核心工具 —— 當你在子線程下載圖片后需要更新 UI,當你在 TCP 連接中收到數據需要通知界面,當你需要延遲執行某個任務時,都會用到 Handler。這個看似簡單的類,卻蘊含著 Androi…

梳理Ego-Planner模式下5通道、6通道與無人機模式的關系

Copilot said: 你需要梳理Ego-Planner模式下5通道、6通道與無人機模式的關系,以及軌跡跟隨、緊急情況和人工接管的流程。下面結合你的描述和三張圖片,對核心邏輯進行總結和整理: --- ## 一、狀態組合與對應模式(見圖1)…

odbc和jdbc什么區別

ODBC 和 JDBC 都是用于連接和操作數據庫的標準接口,但它們分別面向不同的編程語言和平臺。下面是它們的區別與對比,幫助你理解它們的用途和適用場景。📊 一、基本概念對比特性ODBC(Open Database Connectivity)JDBC&am…

境外期貨Level2高頻Tick歷史行情數據獲取與應用指南

在金融量化分析中,本地數據的高效使用是提升策略效果的重要基礎。本文以CSV格式的本地數據為核心,以外盤期貨分鐘數據、CME/COMEX/CBOT歷史行情為例,闡述專業化的數據處理與應用方法,為研究者提供可行性方案。一、數據預處理標準化…

迅為RK3588開發板安卓GPIO調用-APP運行測試

將網盤上的安卓工程文件復制到 Windows 電腦上。確保工程路徑中使用英文字符,不包含中文。接著,啟動 Android Studio,點擊“Open”按鈕選擇應用工程文件夾,然后點擊“OK”。由于下載 Gradle 和各種 Jar 包可能需要一段時間&#x…

以太坊下一階段的關鍵——隱私

1. 引言 隨著以太坊慶祝其十周年紀念,Aztec Labs 聯合創始人兼 CEO Zac Williamson 和以太坊基金會 PSE 負責人 Sam Richards 表示,以太坊必須加強其對隱私的原始承諾。 以太坊慶祝十周年紀念,標志著智能合約、去中心化金融(DeF…

CTFpwn學習筆記1-棧溢出

棧溢出通過寫入超出數組定義范圍的字符長度達到溢出,從而覆蓋棧上其余數據,覆蓋返回地址約等于控制程序執行流例如:經過ida反編譯后,發現這里要將v2的值修改為11.28125才能獲得flag,同時我們可以發現這里使用了gets這個…

使用 Android Studio 中的 Gemini,讓 Flutter 開發更便捷

作者 / Flutter 產品經理 Ander Dobo 及 Gemini in Android Studio 產品經理 Sandhya Mohan在 Android Studio 中創建 Android 應用的 Flutter 開發者將迎來一次重大的飛躍: Android Studio 中的 Gemini 已全面支持 Dart 和 Flutter 開發!這意味著您可以直接在您青睞…

Deep Learning_ Foundations and Concepts-Springer (2024)【拜讀】前向編碼器20章

Diffusion Models 擴散模型 我們已經了解到,構建強大的生成模型的一種有效方法是:先引入一個關于潛在變量z的分布p(z),然后使用深度神經網絡將z變換到數據空間x。由于神經網絡具有通用性,能夠將簡單固定的分布轉化為關于x的高度靈…

Spring全局異常處理最佳實踐

全局異常處理器詳解 什么是全局異常處理器? 全局異常處理器是Spring框架提供的統一異常處理機制,用于集中處理應用程序中所有控制器(Controller)層拋出的異常。它的核心價值在于: 統一異常處理:避免在每個C…

STL學習(十一、常用的算數算法和集合算法)

目錄 一、常用的算數算法 1.accmulate 2.fill 二、常用的集合算法 1.set_intersection 2.set_union 3.set_difference 一、常用的算數算法 包含頭文件為<numeric> 1.accmulate 函數原型 accmulate(iterator beg, iterator end, value) // 計算元素累計和 // …

DeepSort 算法分析詳解

DeepSort 算法分析詳解 DeepSort 簡介 DeepSort (Deep Learning Sort) 是一種基于深度學習的多目標跟蹤算法&#xff0c;由 Wojke 等人于 2017 年提出。它是對傳統 Sort (Simple Online and Realtime Tracking) 算法的改進&#xff0c;通過引入深度特征提取網絡來增強目標關聯的…

基于深度學習的醫學圖像分析:使用Capsule Networks實現醫學圖像分類

前言 醫學圖像分析是計算機視覺領域中的一個重要應用&#xff0c;特別是在醫學圖像分類任務中&#xff0c;深度學習技術已經取得了顯著的進展。醫學圖像分類是指將醫學圖像分配到預定義的類別中&#xff0c;這對于疾病的早期診斷和治療具有重要意義。近年來&#xff0c;Capsule…

G9打卡——ACGAN

&#x1f368; 本文為&#x1f517;365天深度學習訓練營中的學習記錄博客&#x1f356; 原作者&#xff1a;K同學啊 1.導入庫及參數 import argparse import os import numpy as npimport torchvision.transforms as transforms from torchvision.utils import save_imagefrom…

應用war/jar包是用TongWeb企業版,還是嵌入版?

在判斷應用應該采用TongWeb哪個版本時&#xff0c;存在一種錯誤的觀點&#xff1a;如果應用包是jar包&#xff0c;則需要采用TongWeb嵌入版&#xff1b;如果應用包是war包&#xff0c;則需要采用TongWeb企業版。 正確的判斷方法&#xff1a;1. 首先應用為jar包&#xff0c;且符…

Linux ARM 平臺 C 語言操作 Excel 文件的常用庫與工具匯總(支持 xls 和 xlsx)

在 Linux 或嵌入式 ARM 平臺開發中&#xff0c;使用 C 語言操作 Excel 文件是一項常見需求&#xff0c;特別是在工業設備數據采集、日志導出、報表生成等場景。Excel 文件格式復雜&#xff0c;手工解析成本高&#xff0c;因此使用現成的庫可以極大簡化開發工作。 本文整理了若…

Apache Ignite 集群標識(Cluster ID)和集群標簽(Cluster Tag)

這是一個關于 Apache Ignite 集群標識&#xff08;Cluster ID&#xff09;和集群標簽&#xff08;Cluster Tag&#xff09; 的重要配置概念。我們來一步步深入理解這段文檔的含義&#xff0c;并結合實際場景說明其用途。&#x1f9e9; 一、核心概念&#xff1a;Cluster ID 與 C…

基于 Hadoop 生態圈的數據倉庫實踐 —— OLAP 與數據可視化(三)

目錄 三、Impala OLAP 實例 1. 建立 olap 庫、表、視圖 2. 初始裝載數據 3. 修改銷售訂單定期裝載腳本 4. 定義 OLAP 需求 5. 執行 OLAP 查詢 三、Impala OLAP 實例 本節使用前面銷售訂單的例子說明如何使用 Impala 做 OLAP 類型的查詢&#xff0c;以及實際遇到的問題及解…