langgraph的ReAct應用

一、什么是langgraph的ReAct

LangGraph 中的 ReAct(Reasoning + Acting)代理是一種結合推理與行動能力的 AI 代理架構,通過動態決策鏈實現復雜任務處理。以下是其核心要點及實踐指南

1、ReAct 代理的核心原理

1.1工作流程

ReAct 代理通過循環迭代完成任務:

推理(Reason):模型分析輸入和歷史上下文,生成思考步驟。

行動(Act):選擇工具并調用,或直接響應用戶。

觀察(Observe):工具返回結果作為新輸入,循環直至輸出最終響應

1.2技術優勢

動態決策基于狀態圖(State Graph)管理節點和邊,支持循環和條件分支。

透明可控:開發者可干預執行流程(如中斷節點),調試更便捷。

多輪對話支持:通過檢查點(Checkpointer)持久化狀態,實現長上下文記憶

2、典型應用場景

2.1 RAG 增強檢索

結合路由機制,動態選擇向量庫檢索或網絡搜索(如 Tavily API),并通過評分器過濾無關結果。

2.2 多工具協作

例如:用戶查詢 → 搜索工具 → 數學計算工具 → 生成綜合響應

2.3實時交互系統

客服機器人中處理多輪對話,保留歷史上下文

二、langgraph的ReAct應用示例

在本節中,我們將創建一個簡單的 ReAct 代理應用程序,該應用程序可以檢查天氣。該應用程序由一個代理(LLM)和工具組成。當我們與應用程序交互時,我們將首先調用代理(LLM)來決定是否應該使用工具。然后我們將運行一個循環

1.如果代理說要采取行動(即調用工具),我們將運行工具并將結果傳遞回代理

2.如果代理沒有要求運行工具,我們將結束(應用戶)

預構建的代理

請注意,這里我們將使用預構建的代理。LangGraph 的一大優勢是你可以輕松創建自己的代理架構。因此,雖然從這里開始快速構建代理是不錯的選擇,但我們強烈建議你學習如何構建自己的代理,這樣你就可以充分利用LanqGraph。

下面是代碼示例:

# 首先我們初始化我們想要使用的模型。
from langchain_openai import ChatOpenAI
import osapiKey = os.environ.get("MODELSCOPE_SDK_TOKEN")
model = ChatOpenAI(api_key=apiKey,  # 請替換成您的ModelScope SDK Tokenbase_url="https://api-inference.modelscope.cn/v1/",model="Qwen/Qwen2.5-Coder-32B-Instruct"
)
from typing import Literal
from langchain_core.tools import tool# 定義一個工具函數 get_weather,它根據城市名稱返回預定義的天氣信息
@tool
def get_weather(city: Literal["武漢", "長沙"]):"""Use this to get weather information."""if city == "武漢":return "很熱"elif city == "長沙":return "不想告訴你"else:raise AssertionError("未知的城市名")# 將工具放入一個列表中
tools = [get_weather]# 導入 create_react_agent 函數,用于創建 REACT 代理
from langgraph.prebuilt import create_react_agent# 使用指定的模型和工具創建 REACT 代理
graph = create_react_agent(model, tools=tools)# 將生成的圖片保存到文件
graph_png = graph.get_graph().draw_mermaid_png()
with open("create_react_agent.png", "wb") as f:f.write(graph_png)# 定義一個函數用于打印流數據
def print_stream(stream):for s in stream:message = s["messages"][-1]if isinstance(message, tuple):print(message)else:message.pretty_print()# 使用需要工具調用的輸入運行應用程序
inputs = {"messages": [("user", "長沙的天氣怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values"))# 嘗試一個不需要工具的問題
inputs = {"messages": [("user", "如何學AI")]}
print_stream(graph.stream(inputs, stream_mode="values"))inputs = {"messages": [("user", "深圳的天氣怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values"))inputs = {"messages": [("user", "武漢的天氣怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values"))

上面代碼生成的流程圖如下:

上面代碼我們分別問了四個問題,對應的輸出如下:

================================ Human Message =================================

長沙的天氣怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_2db5e20f75474d5489225b)

?Call ID: call_2db5e20f75474d5489225b

??Args:

????city: 長沙

================================= Tool Message =================================

Name: get_weather

不想告訴你

================================== Ai Message ==================================

很抱歉,無法獲取當前長沙的天氣信息。請稍后再試。

================================ Human Message =================================

如何學AI

================================== Ai Message ==================================

學習人工智能(AI)是一個多步驟的過程,涉及理論知識的學習和實踐技能的培養。以下是一些基本的建議,幫助你開始你的AI學習之旅:

1. **數學基礎**:AI依賴于大量的數學概念,包括線性代數、微積分、概率論和統計學。這些數學知識對于理解機器學習算法的工作原理至關重要。

2. **編程技能**:Python是目前最常用的AI編程語言,因為它有許多強大的庫和框架支持,如TensorFlow、PyTorch、Scikit-learn等。熟悉Python編程語言及其相關庫對于AI開發非常重要。

3. **機器學習基礎**:機器學習是AI的一個重要分支,它使計算機能夠從數據中自動學習和改進。了解監督學習、無監督學習、強化學習等概念以及相關的算法,如線性回歸、決策樹、神經網絡等。

4. **深度學習**:深度學習是機器學習的一個子領域,它使用人工神經網絡來模擬人腦處理信息的方式。學習深度學習可以幫助你理解如何構建和訓練復雜的模型來解決更復雜的問題。

5. **數據處理與分析**:學會如何清洗、轉換和分析數據,因為這在AI項目中是非常重要的步驟。掌握數據可視化技術也很有幫助,它可以幫助你更好地理解和展示數據。

6. **項目實踐**:理論學習固然重要,但實際操作經驗同樣不可或缺。嘗試參與一些AI項目,比如圖像識別、自然語言處理等,通過實踐來鞏固所學知識。

7. **持續學習**:AI領域發展迅速,新的技術和方法不斷涌現。保持對新技術的關注,并持續學習,對于在AI領域取得成功至關重要。

8. **加入社區**:加入AI相關的論壇、小組或者參加線下活動,與其他學習者和專業人士交流,可以讓你獲得更多的資源和支持。

9. **閱讀文獻**:閱讀最新的研究論文和技術文章,可以幫助你了解行業趨勢和前沿技術。

10. **動手實驗**:利用在線平臺(如Kaggle、Google Colab等)進行實驗和練習,可以快速驗證你的想法,并提高解決問題的能力。

通過以上步驟,你可以逐步建立起扎實的AI知識體系,并具備一定的實踐能力。記住,學習AI是一個長期且持續的過程,保持好奇心和耐心是非常重要的。

================================ Human Message =================================

深圳的天氣怎么樣

================================== Ai Message ==================================

目前`get_weather`工具僅支持查詢武漢和長沙的天氣信息。如果您需要查詢深圳的天氣,建議使用其他天氣預報服務。

================================ Human Message =================================

武漢的天氣怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_6cf152a8605f46d6a74cc5)

?Call ID: call_6cf152a8605f46d6a74cc5

??Args:

????city: 武漢

================================= Tool Message =================================

Name: get_weather

很熱

================================== Ai Message ==================================

武漢今天的天氣很熱。

向 ReAct 代理添加記憶

我們可以簡單的 將記憶存儲到內存中,當然也可以存儲到其他中間件中,比如redis、mongo等其他介質。要啟用內存,我們只需要將 checkpointer 傳遞給create react agents。

代碼示例如下:

# 首先我們初始化我們想要使用的模型。
from langchain_openai import ChatOpenAI
import osapiKey = os.environ.get("MODELSCOPE_SDK_TOKEN")
model = ChatOpenAI(api_key=apiKey,  # 請替換成您的ModelScope SDK Tokenbase_url="https://api-inference.modelscope.cn/v1/",model="Qwen/Qwen2.5-Coder-32B-Instruct"
)
from typing import Literal
from langchain_core.tools import tool# 定義一個工具函數 get_weather,它根據城市名稱返回預定義的天氣信息
@tool
def get_weather(city: Literal["武漢", "長沙"]):"""Use this to get weather information."""if city == "武漢":return "很熱"elif city == "長沙":return "不想告訴你"else:raise AssertionError("未知的城市名")# 將工具放入一個列表中
tools = [get_weather]# 導入 create_react_agent 函數,用于創建 REACT 代理
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySavermemory =MemorySaver()# 使用指定的模型和工具創建 REACT 代理
graph = create_react_agent(model, tools=tools, checkpointer=memory)# 將生成的圖片保存到文件
graph_png = graph.get_graph().draw_mermaid_png()
with open("create_react_agent.png", "wb") as f:f.write(graph_png)# 定義一個函數用于打印流數據
def print_stream(stream):for s in stream:message = s["messages"][-1]if isinstance(message, tuple):print(message)else:message.pretty_print()# 使用需要工具調用的輸入運行應用程序config = {"configurable": {"thread_id": "1"}}inputs = {"messages": [("user", "武漢的天氣怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values",config=config))inputs = {"messages": [("user", "怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values",config=config))

打印內容如下:

================================ Human Message =================================

武漢的天氣怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_21d7ec337ddb4a3382b9c1)

?Call ID: call_21d7ec337ddb4a3382b9c1

??Args:

????city: 武漢

================================= Tool Message =================================

Name: get_weather

很熱

================================== Ai Message ==================================

武漢今天的天氣非常熱。

================================ Human Message =================================

怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_dd70f99943ef40acbe2ce4)

?Call ID: call_dd70f99943ef40acbe2ce4

??Args:

????city: 武漢

================================= Tool Message =================================

Name: get_weather

很熱

================================== Ai Message ==================================

武漢今天的天氣非常熱。

由上面打印我們可以知道,第二個問題沒有指明具體的問題,但是模型還是回答了,說明他具備了記憶功能。

向 ReAct 代理添加系統提示

本教程將展示如何向預構建的 ReAct 代理添加自定義系統提示。

代碼示例如下:

# 首先我們初始化我們想要使用的模型。
from langchain_openai import ChatOpenAI
import osapiKey = os.environ.get("MODELSCOPE_SDK_TOKEN")
model = ChatOpenAI(api_key=apiKey,  # 請替換成您的ModelScope SDK Tokenbase_url="https://api-inference.modelscope.cn/v1/",model="Qwen/Qwen2.5-Coder-32B-Instruct"
)
from typing import Literal
from langchain_core.tools import tool# 定義一個工具函數 get_weather,它根據城市名稱返回預定義的天氣信息
@tool
def get_weather(city: Literal["武漢", "長沙"]):"""Use this to get weather information."""if city == "武漢":return "很熱"elif city == "長沙":return "不想告訴你"else:raise AssertionError("未知的城市名")# 將工具放入一個列表中
tools = [get_weather]# 導入 create_react_agent 函數,用于創建 REACT 代理
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySaver#添加內存存儲
memory =MemorySaver()# 我們可以在這里添加系統提示
prompt = "請用繁體字回答"# 使用指定的模型和工具創建 REACT 代理
# 使用指定的模型、工具和狀態修改器(系統提示)創建 REACT 代理
graph = create_react_agent(model, tools=tools, checkpointer=memory,prompt=prompt)# 將生成的圖片保存到文件
graph_png = graph.get_graph().draw_mermaid_png()
with open("create_react_agent-prompt.png", "wb") as f:f.write(graph_png)# 定義一個函數用于打印流數據
def print_stream(stream):for s in stream:message = s["messages"][-1]if isinstance(message, tuple):print(message)else:message.pretty_print()# 使用需要工具調用的輸入運行應用程序config = {"configurable": {"thread_id": "1"}}inputs = {"messages": [("user", "武漢的天氣怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values",config=config))inputs = {"messages": [("user", "怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values",config=config))

打印結果如下:

================================ Human Message =================================

武漢的天氣怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_044f77360fa14deca3390e)

?Call ID: call_044f77360fa14deca3390e

??Args:

????city: 武漢

================================= Tool Message =================================

Name: get_weather

很熱

================================== Ai Message ==================================

武漢的天氣很熱。

================================ Human Message =================================

怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_c3752beac3e34751a980d4)

?Call ID: call_c3752beac3e34751a980d4

??Args:

????city: 武漢

================================= Tool Message =================================

Name: get_weather

Error: 1 validation error for get_weather

city

??Input should be '武漢' or '長沙' [type=literal_error, input_value='武漢', input_type=str]

????For further information visit https://errors.pydantic.dev/2.11/v/literal_error

?Please fix your mistakes.

================================== Ai Message ==================================

輸入的城市名稱有誤,請輸入「武漢」或「長沙」。

從上面的打印,我們知道提示詞已生效。

向 ReAct 代理添加人機交互

本教程將演示如何向預構建的 ReAct 代理添加人機交互環過程,主要是在工具執行前進行中斷,interrupt_before=["tools"]。

代碼示例如下:

# 首先我們初始化我們想要使用的模型。
from langchain_openai import ChatOpenAI
import osapiKey = os.environ.get("MODELSCOPE_SDK_TOKEN")
model = ChatOpenAI(api_key=apiKey,  # 請替換成您的ModelScope SDK Tokenbase_url="https://api-inference.modelscope.cn/v1/",model="Qwen/Qwen2.5-Coder-32B-Instruct"
)
from typing import Literal
from langchain_core.tools import tool# 定義一個工具函數 get_weather,它根據城市名稱返回預定義的天氣信息
@tool
def get_weather(city: Literal["武漢", "長沙"]):"""Use this to get weather information."""if city == "武漢":return "很熱"elif city == "長沙":return "不想告訴你"else:raise AssertionError("未知的城市名")# 將工具放入一個列表中
tools = [get_weather]# 導入 create_react_agent 函數,用于創建 REACT 代理
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySavermemory =MemorySaver()# 使用指定的模型和工具創建 REACT 代理
graph = create_react_agent(model, tools=tools, checkpointer=memory, interrupt_before=["tools"])# 將生成的圖片保存到文件
graph_png = graph.get_graph().draw_mermaid_png()
with open("create_react_agent-hl.png", "wb") as f:f.write(graph_png)# 定義一個函數用于打印流數據
def print_stream(stream):for s in stream:message = s["messages"][-1]if isinstance(message, tuple):print(message)else:message.pretty_print()# 使用需要工具調用的輸入運行應用程序config = {"configurable": {"thread_id": "1"}}inputs = {"messages": [("user", "武漢的天氣怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values",config=config))# # 獲取圖的狀態快照
snapshot = graph.get_state(config)
# 打印下一步信息
print("Next step: ", snapshot.next)# 打印后續流輸出
print_stream(graph.stream(None, config, stream_mode="values"))

上面代碼打印結果如下:

================================ Human Message =================================

武漢的天氣怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_40adb899316d45e2bf14a0)

?Call ID: call_40adb899316d45e2bf14a0

??Args:

????city: 武漢

Next step: ?('tools',)

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_40adb899316d45e2bf14a0)

?Call ID: call_40adb899316d45e2bf14a0

??Args:

????city: 武漢

================================= Tool Message =================================

Name: get_weather

很熱

================================== Ai Message ==================================

武漢今天的天氣非常熱。

將最后幾行代碼注釋掉后:

# 首先我們初始化我們想要使用的模型。
from langchain_openai import ChatOpenAI
import osapiKey = os.environ.get("MODELSCOPE_SDK_TOKEN")
model = ChatOpenAI(api_key=apiKey,  # 請替換成您的ModelScope SDK Tokenbase_url="https://api-inference.modelscope.cn/v1/",model="Qwen/Qwen2.5-Coder-32B-Instruct"
)
from typing import Literal
from langchain_core.tools import tool# 定義一個工具函數 get_weather,它根據城市名稱返回預定義的天氣信息
@tool
def get_weather(city: Literal["武漢", "長沙"]):"""Use this to get weather information."""if city == "武漢":return "很熱"elif city == "長沙":return "不想告訴你"else:raise AssertionError("未知的城市名")# 將工具放入一個列表中
tools = [get_weather]# 導入 create_react_agent 函數,用于創建 REACT 代理
from langgraph.prebuilt import create_react_agent
from langgraph.checkpoint.memory import MemorySavermemory =MemorySaver()# 使用指定的模型和工具創建 REACT 代理
graph = create_react_agent(model, tools=tools, checkpointer=memory, interrupt_before=["tools"])# 將生成的圖片保存到文件
graph_png = graph.get_graph().draw_mermaid_png()
with open("create_react_agent-hl.png", "wb") as f:f.write(graph_png)# 定義一個函數用于打印流數據
def print_stream(stream):for s in stream:message = s["messages"][-1]if isinstance(message, tuple):print(message)else:message.pretty_print()# 使用需要工具調用的輸入運行應用程序config = {"configurable": {"thread_id": "1"}}inputs = {"messages": [("user", "武漢的天氣怎么樣")]}
print_stream(graph.stream(inputs, stream_mode="values",config=config))# # 獲取圖的狀態快照
# snapshot = graph.get_state(config)
# # 打印下一步信息
# print("Next step: ", snapshot.next)
# 
# # 打印后續流輸出
# print_stream(graph.stream(None, config, stream_mode="values"))

當我們把后面幾行代碼注釋掉后,執行結果如下:

================================ Human Message =================================

武漢的天氣怎么樣

================================== Ai Message ==================================

Tool Calls:

??get_weather (call_f9aaf3002f664cd5b05157)

?Call ID: call_f9aaf3002f664cd5b05157

??Args:

????city: 武漢

Process finished with exit code 0

由上面對比,可知人機交互效果已實現。

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

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

相關文章

一個編輯功能所引發的一場知識探索學習之旅(JavaScript、HTML)

文章目錄一個編輯功能所引發的一場知識探索學習之旅(JavaScript、HTML)1. 一個編輯功能案例2. 知識點探索學習3. 參考資料一個編輯功能所引發的一場知識探索學習之旅(JavaScript、HTML) 1. 一個編輯功能案例 HTML: &l…

kali制作Windows木馬

環境描述:攻擊機:Kali-2025實驗靶機:Windows11不要攻擊他人,這只是網絡安全實驗還是一樣獲取IP地址制作好之后開服務,上傳下載在靶機右鍵保留下載記得把防火墻,安全中心關了否則無法下載之后就可以kali控制…

從零實現一個GPT 【React + Express】--- 【1】初始化前后端項目,實現模型接入+SSE

摘要 本系列文章主要是實現一個能夠對話以及具有文生圖等功能的模型應用。主要UI界面會參考chat-gpt,豆包等系列應用。模型使用的是gpt開源的大模型。 如果你是一個前端開發工程師需要一個自己的開源項目,可以學習這個系列的文章,不需要有很完整的后端…

【PTA數據結構 | C語言版】在順序表 list 的第 i 個位置上插入元素 x

本專欄持續輸出數據結構題目集,歡迎訂閱。 文章目錄題目代碼題目 請編寫程序,將 n 個整數存入順序表,對任一給定整數 x,將其插入順序表中指定的第 i 個位置。注意:i 代表位序,從 1 開始,不是數…

汽車智能化2.0引爆「萬億蛋糕」,誰在改寫游戲規則?

進入2025年,長安、奇瑞、比亞迪等各大主機廠紛紛將智能化推進至全新高度,中國汽車智能化競爭進入了“技術市場生態”綜合較量階段。一方面,各大主機廠全力推進輔助駕駛的規模化普及,掀起了一場關于高階輔助駕駛的“技術平權”革命…

QT 第八講 --- 控件篇 Widget(三)界面系列

前言: 在上一講《QT 第七講 --- 控件篇 (二)window系列與qrc機制》中,我們探討了應用程序窗口(QMainWindow, QWidget)的基礎結構、窗口標志、狀態以及Qt強大的資源管理機制(.qrc文件&#xff0…

廣州華銳互動:AR 領域的創新與服務先鋒?

(一)定制化服務? 廣州華銳互動秉持 “以客戶為中心” 理念,為客戶提供高度定制化 AR 解決方案。項目初期,通過多種方式深入了解客戶需求,挖掘痛點。基于需求分析,技術團隊運用自主研發技術和先進算法&…

暑假算法日記第一天

目標?:刷完靈神專題訓練算法題單 階段目標📌:【算法題單】滑動窗口與雙指針 LeetCode題目:1456. 定長子串中元音的最大數目643. 子數組最大平均數 I1343. 大小為 K 且平均值大于等于閾值的子數組數目2090. 半徑為 k 的子數組平均值2379. 得…

【軟考高項】信息系統項目管理師-第1章 信息化發展(1.5 數字化轉型與元宇宙、1.6 標題類知識點、1.7 十四五規劃內容匯總)

文章大綱 第1章 信息化發展1.5 數字化轉型與元宇宙1.5.1 數字化轉型1.5.2 元宇宙1.6 標題類知識點1.7 十四五規劃內容匯總1.8 10道試題第1章 信息化發展 學習建議: 此章內容大部分為新增內容,基本是全新的章節2023年5月考試2分選擇,5分案例2023年下半年各批次選擇題2分左右1.…

STM32F103C8T6單片機內部執行原理及啟動流程詳解

引言:為什么深入理解STM32啟動流程很重要?STM32F103C8T6作為嵌入式開發中最常用的單片機之一,其內部執行原理和啟動流程是理解嵌入式系統底層運行機制的核心。無論是開發Bootloader、調試HardFault異常,還是優化系統啟動速度&…

【python 常用的數學科學/計算機視覺等工具】

當然有!在科學計算、機器學習、圖像處理等領域,scikit-learn、scikit-image(skimage)、SciPy、OpenCV 是非常重要的庫,但它們不是唯一的。以下是一些與它們類似或互補的項目,按照用途分類列出: …

LUMP+NFS架構的Discuz論壇部署

一、配置準備 每臺主機都安裝mysql、nfs、php、mysql 對每臺主機都進行關閉防火墻、上下文等,減少阻礙[rooteveryone ~]# systemctl stop firewalld [rooteveryone ~]# setenforce 0安裝插件等[rootlocalhost mysql]# yum install -y nfs-utils nginx [rootlocalho…

C++STL-deque

一.基礎概念deque和vector一樣都是對元素的操作,不同點:vector對元素增刪后元素會往前或往后移,如果數據不大沒有太多影響,如果數據很大效率會變低;deque對元素增刪不會使元素位置改變,所有效率會變高。二.…

字節跳動高質量聲音克龍文字轉語音合成軟件MegaTTS3整合包

MegaTTS3是抖音團隊聯合國內其他大學研發的一款語音合成及聲音克龍應用,可實現零樣本語音克龍及富有情感的自然語音合成。我基于當前最新版制作了免安裝一鍵啟動整合包。 MegaTTS3介紹 MegaTTS 3 是字節跳動(ByteDance)與浙江大學聯合開發的…

RPC:遠程過程調用機制

目錄 1、概念 2、RPC架構 2.1 RPC的四個核心組件 2.2 訪問流程 3、關鍵概念 3.1 接口定義語言 (IDL - Interface Definition Language) 3.2 序列化與反序列化 (Serialization & Deserialization - Marshalling/Unmarshalling) 3.3 網絡傳輸 (Transport) 3.4 服務發…

EPLAN 電氣制圖(六):電機正反轉副勾主電路繪制

一、項目背景:為什么繪制電機正反轉主電路? 在多功能天車系統中,電機正反轉控制是核心功能之一。通過 EPLAN 繪制主電路,不僅能清晰展示電源分配、換相邏輯和線纜連接,還能為后續 PLC 控制設計奠定基礎。本次以西門子設…

JAVA JVM對象的實現

jvm分配內存給對象的方式1. 內存分配的總體流程對象內存分配的主要步驟:類加載檢查:確認類已加載、解析和初始化。內存分配:根據對象大小,從堆中劃分內存空間。內存初始化:將分配的內存空間初始化為零值(不…

CVE-2023-41990/CVE-2023-32434/CVE-2023-38606/CVE-2023-32435

CVE-2023-41990(GitLab 命令注入漏洞)漏洞原理CVE-2023-41990是GitLab CE/EE(社區版/企業版)中項目導出功能的一個命令注入漏洞。具體原理如下:①GitLab在導出項目時,會調用git命令生成項目存檔&#xff08…

RAG實戰指南 Day 8:PDF、Word和HTML文檔解析實戰

【RAG實戰指南 Day 8】PDF、Word和HTML文檔解析實戰 開篇 歡迎來到"RAG實戰指南"系列的第8天!今天我們將深入探討PDF、Word和HTML文檔解析技術,這是構建企業級RAG系統的關鍵基礎。在實際業務場景中,80%以上的知識都以這些文檔格式…

【AXI】讀重排序深度

我們以DDR4存儲控制器為例,設計一個讀重排序深度為3的具體場景,展示從設備如何利用3級隊列優化訪問效率:基礎設定從設備類型:DDR4存儲控制器(支持4個存儲體Bank0-Bank3)讀重排序深度:3&#xff…