論文精讀:HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

Status: Reading
Author: Dongsheng Li, Kaitao Song, Weiming Lu, Xu Tan, Yongliang Shen, Yueting Zhuang
Institution: 微軟亞洲研究院(Microsoft Research Asia), 浙江大學(Zhejiang University)
Publisher: NeurIPS
Publishing/Release Date: December 3, 2023
Summary: 解決不同領域和多種模態的復雜任務是通往AGI的關鍵,盡管現在有各種各樣的AI模型,但是它們沒有辦法自主地處理復雜任務,而LLMs恰好可以作為管理者控制現有的AI模型來完成任務。本文提出的HuggingGPT就是一個基于ChatGPT的Agent,可以利用HuggingFace上各種各樣的AI模型來完成任務。首先通過ChatGPT根據用戶的請求制定任務計劃,然后根據HuggingFace上模型的功能描述選擇可用的AI模型,之后通過這些模型來執行子任務,最后總結執行結果并給出響應。HuggingGPT可以解決跨領域跨模態的各種AI任務,在語言、視覺、語音等任務中都取得很好的效果。
Type: Paper
鏈接: https://arxiv.org/abs/2303.17580
代碼是否開源: 開源
代碼鏈接: https://github.com/microsoft/JARVIS


讀前先問

帶著問題讀論文,邊讀邊回答。

  1. 大方向的任務是什么?Task

Agent

  1. 這個方向有什么問題?是什么類型的問題?Type

雖然AI模型眾多,但是不能互相配合。

  1. 為什么會有這個問題?Why

沒有一個大腦作為指揮。

  1. 作者是怎么解決這個問題的?How

將ChatGPT作為大腦來指揮各種AI模型。

  1. 怎么驗證解決方案是否有效?

  2. 實驗結果怎么樣?What(重點關注有沒有解決問題,而不是效果有多好)


論文精讀

引言

目前的LLM技術尚不完善,在構建先進的AI系統的道路上面臨著一些緊迫的挑戰:

  1. 受限于文本生成的輸入輸出形式,目前的LLM缺乏處理視覺、語音等復雜信息的能力;
  2. 在現實場景中,一些復雜的任務通常由多個子任務組成,因此需要多個模型的調度和協作,這也超出了語言模型的能力;
  3. 對于一些具有挑戰性的任務,LLM在Zero-Shot或Few-Shot設置中表現出出色的結果,但仍然弱于一些專家。

作者認為,為了處理復雜的AI任務,LLM應該能夠與外部模型協調以利用它們的力量。關鍵問題是如何選擇合適的中間件來橋接LLM和AI模型之間的聯系,LLM恰好可以完成這個工作。將各種AI模型的描述融入到提示詞中,LLM可以作為管理規劃、調度、合作等這些AI模型的大腦。

在這篇論文中,作者提出了一種名為 HuggingGPT 的由 LLM 驅動的 Agent,可以自主處理各種復雜的 AI 任務,它連接了 LLM(即 ChatGPT)和 ML 社區(即 Hugging Face),并且可以處理來自不同模式的輸入。更具體地說,LLM充當大腦:一方面根據用戶請求拆解任務,另一方面根據模型描述為任務分配合適的模型。通過執行模型并將結果集成到計劃任務中,HuggingGPT 可以自主滿足復雜的用戶請求。

HuggingGPT 的工作流如下圖所示,可以分為四個階段:

  1. 任務規劃:使用ChatGPT分析用戶的請求,了解他們的意圖,并將其分解為可能的可解決的任務。
  2. 模型選擇:ChatGPT 根據模型描述選擇托管在 Hugging Face 上的專家模型。
  3. 任務執行:調用并執行每個選定的模型,并將結果返回給ChatGPT。
  4. 響應生成:ChatGPT 集成所有模型的預測結果并為用戶生成響應。

HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in Hugging Face

Status: Reading
Author: Dongsheng Li, Kaitao Song, Weiming Lu, Xu Tan, Yongliang Shen, Yueting Zhuang
Institution: 微軟亞洲研究院(Microsoft Research Asia), 浙江大學(Zhejiang University)
Publisher: NeurIPS
Publishing/Release Date: December 3, 2023
Summary: 解決不同領域和多種模態的復雜任務是通往AGI的關鍵,盡管現在有各種各樣的AI模型,但是它們沒有辦法自主地處理復雜任務,而LLMs恰好可以作為管理者控制現有的AI模型來完成任務。本文提出的HuggingGPT就是一個基于ChatGPT的Agent,可以利用HuggingFace上各種各樣的AI模型來完成任務。首先通過ChatGPT根據用戶的請求制定任務計劃,然后根據HuggingFace上模型的功能描述選擇可用的AI模型,之后通過這些模型來執行子任務,最后總結執行結果并給出響應。HuggingGPT可以解決跨領域跨模態的各種AI任務,在語言、視覺、語音等任務中都取得很好的效果。
Type: Paper
鏈接: https://arxiv.org/abs/2303.17580
代碼是否開源: 開源
代碼鏈接: https://github.com/microsoft/JARVIS


讀前先問

帶著問題讀論文,邊讀邊回答。

  1. 大方向的任務是什么?Task

Agent

  1. 這個方向有什么問題?是什么類型的問題?Type

雖然AI模型眾多,但是不能互相配合。

  1. 為什么會有這個問題?Why

沒有一個大腦作為指揮。

  1. 作者是怎么解決這個問題的?How

將ChatGPT作為大腦來指揮各種AI模型。

  1. 怎么驗證解決方案是否有效?

  2. 實驗結果怎么樣?What(重點關注有沒有解決問題,而不是效果有多好)


論文精讀

引言

目前的LLM技術尚不完善,在構建先進的AI系統的道路上面臨著一些緊迫的挑戰:

  1. 受限于文本生成的輸入輸出形式,目前的LLM缺乏處理視覺、語音等復雜信息的能力;
  2. 在現實場景中,一些復雜的任務通常由多個子任務組成,因此需要多個模型的調度和協作,這也超出了語言模型的能力;
  3. 對于一些具有挑戰性的任務,LLM在Zero-Shot或Few-Shot設置中表現出出色的結果,但仍然弱于一些專家。

作者認為,為了處理復雜的AI任務,LLM應該能夠與外部模型協調以利用它們的力量。關鍵問題是如何選擇合適的中間件來橋接LLM和AI模型之間的聯系,LLM恰好可以完成這個工作。將各種AI模型的描述融入到提示詞中,LLM可以作為管理規劃、調度、合作等這些AI模型的大腦。

在這篇論文中,作者提出了一種名為 HuggingGPT 的由 LLM 驅動的 Agent,可以自主處理各種復雜的 AI 任務,它連接了 LLM(即 ChatGPT)和 ML 社區(即 Hugging Face),并且可以處理來自不同模式的輸入。更具體地說,LLM充當大腦:一方面根據用戶請求拆解任務,另一方面根據模型描述為任務分配合適的模型。通過執行模型并將結果集成到計劃任務中,HuggingGPT 可以自主滿足復雜的用戶請求。

HuggingGPT 的工作流如下圖所示,可以分為四個階段:

  1. 任務規劃:使用ChatGPT分析用戶的請求,了解他們的意圖,并將其分解為可能的可解決的任務。
  2. 模型選擇:ChatGPT 根據模型描述選擇托管在 Hugging Face 上的專家模型。
  3. 任務執行:調用并執行每個選定的模型,并將結果返回給ChatGPT。
  4. 響應生成:ChatGPT 集成所有模型的預測結果并為用戶生成響應。

在這里插入圖片描述

主要貢獻:

  1. 提出HuggingGPT,結合LLM和專家模型,通過模型間合作協議,提供設計通用AI解決方案的新方法。
  2. 將Hugging Face平臺的任務特定模型與ChatGPT集成,處理多模態、多領域的廣義AI任務,提供可靠的多模態對話服務。
  3. 強調任務規劃和模型選擇的重要性,并提出評估LLMs在這方面能力的實驗方法。
  4. 大量跨模態和領域的實驗表明,HuggingGPT在理解和解決復雜任務方面具有強大能力和巨大潛力。

方法

任務規劃

任務規劃模塊旨在使用LLM分析用戶請求,然后將其分解為結構化任務的集合,還要要求LLM確定這些分解任務的依賴關系和執行順序,以建立它們的連接。

  1. 特定格式的指令:為了更好地表示用戶請求并且在后續階段使用,我們希望LLM能夠輸出特定格式(例如JSON)的內容,方便解析。一個任務則是由任務名稱、任務ID、依賴任務和參數四部分組成。
  2. 為了更好地理解任務規劃的意圖和標準,HuggingGPT 在提示詞中融入了多個例子。

任務規劃階段的提示詞如下圖所示,為了支持更復雜的場景(例如,多輪對話),作者在提示詞中還包含了聊天日志。

在這里插入圖片描述

任務規劃的模板

[{"task": task, "id", task_id, "dep": dependency_task_ids, "args": {"text": text, "image": URL, "audio": URL, "video": URL}
}]
名稱定義
task代表解析任務的類型,涵蓋了語言、視覺、視頻、音頻等不同的任務。
id任務計劃的唯一標識符,用于引用相關任務及其生成的資源。
dep定義了執行所需的先決任務,僅當所有先決依賴任務完成后才會啟動該任務。
args包含任務執行所需參數的列表,三個子字段,根據任務類型填充文本、圖像和音頻資源。它們是根據用戶的請求或依賴任務生成的資源來解析的。

支持的任務列表

在這里插入圖片描述

模型選擇

HuggingGPT 繼續將任務與模型進行匹配的任務,即為解析的任務列表中的每個任務選擇最合適的模型。作者使用模型描述作為連接每個模型的語言接口,從 ML 社區(例如 Hugging Face)收集專家模型的描述,然后采用動態上下文任務模型分配機制來為任務選擇模型。

模型選擇階段的提示詞如下圖所示,將模型選擇制定為單選問題,其中可用模型在給定上下文中作為選項呈現。由于最大上下文長度的限制,提示詞中無法包含所有相關模型的信息。為了緩解這個問題,作者首先根據任務類型過濾模型,然后根據 Hugging Face 上的下載量對模型進行排名,選擇前 K 個模型作為候選模型。

在這里插入圖片描述

任務執行

HuggingGPT 會自動將任務參數輸入到模型中,執行這些模型以獲得推理結果,然后將其發送回 LLM。

由于先決任務的輸出是動態生成的,HuggingGPT 還需要在啟動任務之前動態指定任務的依賴資源。因此,任務執行階段的重點是建立具有資源依賴性的任務之間的連接。

作者使用了一個唯一符號“”來維護資源依賴性。具體來說,HuggingGPT 將先決任務生成的資源標識為 -task_id,其中 task_id 是先決任務的 id。在任務規劃階段,如果某些任務依賴于先前執行的任務的輸出(例如,task_id),HuggingGPT 會將此符號(即 -task_id)設置為參數中相應的資源子字段。然后在任務執行階段,HuggingGPT 動態地用先決任務生成的資源替換該符號。

其余沒有任何資源依賴的任務直接并行執行,進一步提高推理效率。也就是說,如果多個任務滿足先決條件依賴關系,則可以同時執行多個任務。

響應生成

HuggingGPT 在本階段將前三個階段(任務規劃、模型選擇和任務執行)的所有信息整合為一個簡潔的摘要,包括規劃的任務列表、任務選擇的模型以及模型的推理結果。

其中最重要的是推理結果,這是HuggingGPT做出最終決策的關鍵點。HuggingGPT 允許LLM接收結構化的推理結果作為輸入,并以友好的人類語言形式生成響應。此外,LLM 不是簡單地匯總結果,而是生成積極響應用戶請求的響應,從而提供具有置信度的可靠決策。

在這里插入圖片描述

實驗

采用 GPT 模型的 gpt-3.5-turbo、text-davinci-003 和 gpt-4 變體作為主要 LLM,可通過 OpenAI API 公開訪問,set the decoding temperature to 0,set the logit_bias to 0.2 on the format constraints (e.g., “{” and “}”)。

定性分析

下圖中,用戶的請求包括三個任務:檢測示例圖像中人的姿勢,根據該姿勢和指定文本生成新圖像,以及創建描述該圖像的語音。 HuggingGPT 將這些任務解析為六個任務,包括姿勢檢測、基于姿勢的文生圖、目標檢測、圖像分類、圖像字幕和TTS。可以觀察到 HuggingGPT 可以正確編排任務之間的執行順序和資源依賴關系。例如,基于姿勢的文生圖任務必須遵循姿勢檢測并使用其輸出作為輸入。之后,HuggingGPT 為每個任務選擇合適的模型,并將模型執行的結果綜合為最終響應。

在這里插入圖片描述

定量分析

任務規劃在整個工作流程中起著至關重要的作用,因為它決定了后續流程中將執行哪些任務。因此,我們認為任務規劃的質量可以用來衡量LLM作為HuggingGPT控制器的能力。

作者通過僅考慮任務類型來簡化評估,不考慮其關聯的參數。為了更好地對任務規劃進行評估,作者將任務分為三個不同的類別并為它們制定不同的指標:

  1. 單任務:僅涉及一項任務的請求。當且僅當任務名稱和預測標簽完全相同時,才認為計劃是正確的。在這種情況下使用 F1 和準確性作為評估指標。
  2. 順序任務:用戶的請求可以分解為多個子任務的序列。在這種情況下采用 F1 和歸一化編輯距離作為評估指標。
  3. 圖任務:用戶請求可以分解為有向無環圖。圖任務中可能存在多種規劃拓撲,僅依靠F1分數不足以反映LLM在規劃方面的能力。為了解決這個問題,作者采用 GPT-4 作為批評者來評估規劃的正確性。準確率是通過評估GPT-4的判斷力得到的,簡稱GPT-4 Score。

在這里插入圖片描述

數據集

作者創建兩個數據集用于評估任務規劃,收集了 3497 個不同的用戶請求

  1. 邀請一些標注者提交一些用戶請求作為評估數據集,用 GPT-4 生成任務規劃作為偽標簽,涵蓋單任務(1450個)、順序任務(1917個)和圖任務(130個)。
  2. 邀請一些專家標注者將一些復雜請求(46 個示例,24個順序任務+22個圖任務)的任務規劃標記為高質量的人工注釋數據集。

在這里插入圖片描述

性能

單任務評估結果:

在這里插入圖片描述

順序任務評估結果:

在這里插入圖片描述

圖任務評估結果:

在這里插入圖片描述

復雜任務評估結果:

在這里插入圖片描述

消融實驗

任務規劃階段,提示詞中不同任務示例的多樣性對結果的影響。多樣性指的是提示詞中涉及的不同任務類型的數量。增加示例的多樣性可以適度提高LLM在任務規劃方面的表現。

在這里插入圖片描述

提示詞中不同任務示例的數量對結果的影響。添加一些示例可以稍微提高模型性能,但當示例數量超過 4 個時,這種改進將受到限制。

在這里插入圖片描述

人工評測

作者收集了 130 個不同的請求來評估 HuggingGPT 在各個階段的性能,包括任務規劃、模型選擇和最終響應生成,設計了三個評價指標,即通過率、合理性、成功率。

在這里插入圖片描述

限制

一些限制或改進空間:

  1. HuggingGPT 中的規劃很大程度上依賴于 LLM 的能力,而我們無法確保生成的計劃始終可行且最優。因此,探索優化LLM的途徑,提升其規劃能力至關重要;
  2. 效率是一個最大的挑戰,要構建這樣一個具有任務自動化功能的協作系統(即 HuggingGPT),它在很大程度上依賴于強大的控制器(例如 ChatGPT)。然而,HuggingGPT 在整個工作流程中需要與LLM進行多次交互,從而增加了生成響應的時間成本;
  3. 令牌長度是使用 LLM 時的另一個常見問題,因為最大令牌長度始終受到限制,如何簡潔有效地總結模型描述也是值得探索的;
  4. 不穩定主要是因為LLM通常不可控,在推理過程中可能不符合指令或給出錯誤答案,從而導致程序工作流程出現異常。在設計系統時應該考慮如何減少推理過程中的這些不確定性。

速覽筆記

Motivation

作者為什么做這件事?之前存在什么問題?

AI模型很多,但是大部分都是領域專家模型,沒有一個控制器將它們都聯合起來。

ChatGPT出來之后,展現出了強大的理解和推理能力,正好可以作為一個復雜AI系統的大腦。

Novelty

  1. 創建點在哪里?為什么要提出來這個?要解決什么問題?

創新點包括:將ChatGPT作為控制器和規劃器,解構復雜的任務,調用HuggingFace上的模型完成子任務,最后再匯總。

其實它也解決LLM只是一個純語言模型,不能聽、說和看的問題。

  1. 怎么才能想出來這個創新點?想問題的思路是什么?

推測作者的想法

站在當時的情境下,ChatGPT爆火,隨之而來的就是AGI和Agent的概念。當時也有一些項目,像是AutoGPT、AgentGPT和BabyAGI等等,都是非常新的東西。

但是更多處理的還是文本這一個模態的信息,并不能處理其它像語音、圖像和音頻等模態的信息。

而GPT-4當時應該是還沒有開放視覺能力,如果想要讓ChatGPT擁有多模態的處理能力,就只能借助其它的模型,也就是HuggingFace上的模型。這些模型為了能夠跟ChatGPT進行交互,也只能把輸入輸出都轉換為文本的形式,這樣就能搭建起一個以文本為媒介,ChatGPT為大腦的AI系統。

  1. 怎么就能發這個會議或者這個期刊的?

站在審稿人的角度看論文

一方面AGI和Agent這兩點結合的很好,另外一方面,我覺得最重要的是,它提供了一種以文本為媒介的多模態處理方式,還不需要訓練一個多模態模型。

Methods

對照代碼,整理模型整體結構,分析每個模塊的作用以及對性能的提升貢獻(重點,呼應實驗),找到核心模塊(提點最多),以及判斷跟創新點是否匹配

Experiments

訓練集和測試集

用的哪個數據集,規模多少,評價指標是什么

作者自己創建兩個數據集用于評估任務規劃,收集了 3497 個不同的用戶請求

  1. 邀請一些標注者提交一些用戶請求作為評估數據集,用 GPT-4 生成任務規劃作為偽標簽,涵蓋單任務(1450個)、順序任務(1917個)和圖任務(130個)。
  2. 邀請一些專家標注者將一些復雜請求(46 個示例,24個順序任務+22個圖任務)的任務規劃標記為高質量的人工注釋數據集。

在這里插入圖片描述

性能如何,好不好復現,是否有Code/Blog/知乎討論

代碼開源,但是數據集不開源,嘗試一下demo可以,復現實驗結果不太好弄。

浙大與微軟發布的 HuggingGPT 在線演示驚艷亮相,可完成多模態復雜任務,將帶來哪些影響? - 知乎

HuggingGPT - 知乎

浙大與微軟發布的 HuggingGPT 在線演示驚艷亮相,可完成多模態復雜任務,將帶來哪些影響? - 知乎

每個實驗證明了什么

定量分析都是模型在任務規劃階段的指標。

消融實驗是為了則是評估了提示詞中示例的數量對結果的影響。

人類評估測試主要分了三個方面:通過率、合理性和成功率,我覺得最重要的事合理性。

有沒有哪些實驗沒有做

論文中只對任務規劃模塊進行了定量分析,雖然給出的理由是任務規劃模塊最重要,但是我覺得其它模塊也應該做實驗分析。

  1. 任務規劃模塊,只考慮了任務類型的準確性,沒有考慮參數,而且也沒有考慮任務之間的依賴是否準確。對于順序任務和圖任務,我覺得順序也是一個非常重要的因素;
  2. 模型選擇這一塊,選擇模型的準確性也需要評估。例如TTS任務,用戶請求是合成的是中文,它會不會選擇一個通用的TTS模型然后合成了英文輸出;
  3. 任務執行這一塊倒是沒有什么實驗可以做;
  4. 響應生成這一塊,是邀請了人類專家做的評判,但是這一塊我覺得有些評測可以自動化,比如統計圖片中有多少只狗,這個在一些目標檢測的數據集中應該是有標簽的,可以自動評測。

Downsides

哪些提出的模塊是有問題的

好像也沒有什么問題,少一個模塊都不大行。

哪些提出的點對性能提升存疑

暫無。

有沒有能改進的地方

論文中提出的未來改進方向:

  1. we plan to improve the quality and quantity of this dataset to further assist in evaluating the LLM’s planning capabilities.
  2. we believe that developing technologies to improve the ability of LLMs in task planning is very important, and we leave it as a future research direction.
  3. In the future, we will continue to explore more elements that can improve the capability of LLMs at different stages.
  4. we think that how to design and deploy systems with better stability for HuggingGPT or other autonomous agents will be very important in the future.

增加反饋機制,如果有哪個流程出現了問題,可以通過ChatGPT進行檢查并反饋。

Thinking

能否遷移應用?(業務應用方向、模型改進、數據生產組織等方面)

超級縫合怪,牛逼o( ̄▽ ̄)d。

不一定要訓練多模態大模型,借助現有的各種領域專家模型也可以。


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

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

相關文章

uniapp 對接 微信App/支付寶App 支付

相關文檔:uni.requestPayment(OBJECT) | uni-app官網 示例代碼: import qs from qsasync aliPay(){const { provider } await uni.getProvider({ service:payment })if(provider.includes(alipay)){uni.request({url:后端接口地址,data:{ //傳參 },suc…

? 傳知代碼 ? 基于擴散模型的無載體圖像隱寫術

💛前情提要💛 本文是傳知代碼平臺中的相關前沿知識與技術的分享~ 接下來我們即將進入一個全新的空間,對技術有一個全新的視角~ 本文所涉及所有資源均在傳知代碼平臺可獲取 以下的內容一定會讓你對AI 賦能時代有一個顛覆性的認識哦&#x…

前端---閉包【防抖以及節流】----面試高頻!

1.什么閉包 釋放閉包 從以上看出:一般函數調用一次會把內部的數據進行清除--但是這種操作卻可以一起保留局部作用域的數據 // 優點:1、可以讀取函數內部的變量 2、讓這些變量始中存在局部作用域當中 2.閉包產生的兩種業務場景:防抖、節流 2.1防抖 舉…

QGraphicsView實現簡易地圖16『爆炸效果』

前文鏈接:QGraphicsView實現簡易地圖15『測量面積』 一種簡單的爆炸波擴散效果 動態演示效果: 靜態展示圖片: 核心代碼: #pragma once #include "../AbstractGeoItem.h" #include "DataStruct/GeoData.h"…

sysbench壓測mysql性能測試命令和報告

sysbench壓測mysql性能測試命令和報告 一、安裝sysbench工具二、創建測試數據庫三、基于sysbench構造測試表和測試數據四、數據庫性能測試1、數據庫讀寫性能測試2、數據庫讀性能測試3、數據庫刪除性能測試4、數據庫更新索引字段性能測5、數據庫更新非索引字段性能測試6、數據庫…

windows ip助手函數了解

根據手冊,winsock編程中提供的有一類函數叫ip助手函數;比如Ipconfig函數,從名字看應該是可自己編程實現類似ipconfig命令的功能; 剛看到一個示例,是MS提供的,也屬于這一類,代碼如下, #include <winsock2.h> #include <ws2tcpip.h> #include <iphlpapi…

C++ vector類

目錄 0.前言 1.vector介紹 2.vector使用 2.1 構造函數(Constructor) 2.1.1. 默認構造函數 (Default Constructor) 2.1.2 填充構造函數 (Fill Constructor) 2.1.3 范圍構造函數 (Range Constructor) 2.1.4 拷貝構造函數 (Copy Constructor) 2.2 迭代器(Iterator) 2.2.…

十、通配符和正則表達式

10.1 通配符 通配符是由shell處理的, 它只會出現在 命令的“參數”里。當shell在“參數”中遇到了通配符 時&#xff0c;shell會將其當作路徑或文件名去在磁盤上搜尋可能的匹配&#xff1a;若符合要求的匹配存在&#xff0c;則進 行代換(路徑擴展)&#xff1b;否則就將該通配…

python安裝依賴

創建 requirement.txt 文件并填充內容 flask2.0.0 pandas1.3.3 numpy1.21.2 安裝模塊 pip install -r requirement.txt

Spring boot使用集群方式、支持ssl連接redis的方法

1、需求背景 項目需要提供一個管理界面給內部人員操作用戶信息&#xff0c;需要在修改用戶信息后刪除用戶的redis緩存。用戶所在的區域不同&#xff0c;其redis服務地址也不相同&#xff0c;因此需要管理多個redis連接&#xff0c;且redis要求以集群方式并支持ssl進行連接。 2…

Qt for android 獲取USB設備列表(一)Java方式 獲取

簡介 QtActivity 作為 Qt 應用程序的入口點&#xff0c;負責啟動和配置 Qt 應用程序的信息&#xff0c; 后面我們繼承 QtActivity 做自定義控制&#xff0c;了解一下 Activity 生命周期概念&#xff0c; 因為 QtActivity 繼承自Android的activity&#xff0c;使用周期函數完成我…

java8新特性——函數式編程詳解

目錄 一 概述1.1 背景1.2 函數式編程的意義1.3 函數式編程的發展 Lambda表達式1.1 介紹1.2 使用Lambda的好處1.3 Lambda方法1.3.1 Lambda表達式結構1.3.2 Lambda表達式的特征 1.4 Lambda的使用1.4.1 定義函數式接口1.4.2 Lambda表達式實現函數式接口1.4.3 簡化Lambda表達式1.4.…

C++學習/復習4--與類相關的概念/默認成員函數/運算符重載/Date類實現案例

一、類和對象 1.本章概要 2.C中的結構體(struct與class) 升級為類 &#xff08;1&#xff09;類及成員函數的兩種定義方式 聲明與定義分離 &#xff08;2&#xff09;權限 注意1&#xff1a;struct/class在權限上的區別 &#xff08;3&#xff09;封裝 &#xff08;4&#x…

AI學習指南數學工具篇-凸優化之對偶性與拉格朗日對偶

AI學習指南數學工具篇-凸優化之對偶性與拉格朗日對偶 在凸優化中&#xff0c;對偶性是一個非常重要的概念。通過對偶性&#xff0c;我們可以將原始問題轉化為對偶問題&#xff0c;從而更容易求解。其中&#xff0c;拉格朗日對偶問題是對偶性的一個重要應用&#xff0c;通過拉格…

《Ai學習筆記》自然語言處理 (Natural Language Processing):機器閱讀理解-基礎概念解析01

自然語言處理 (Natural Language Processing)&#xff1a; NLP四大基本任務 序列標注&#xff1a; 分詞、詞性標注 分類任務&#xff1a; 文本分類、情感分析 句子關系&#xff1a;問答系統、對話系統 生成任務&#xff1a;機器翻譯、文章摘要 機器閱讀理解的定義 Machi…

LangChain - 建立代理

本文翻譯整理自&#xff1a;Build an Agent https://python.langchain.com/v0.2/docs/tutorials/agents/ 文章目錄 一、說明概念 二、定義工具1、TavilyAPI參考&#xff1a; 2、RetrieverAPI參考&#xff1a;API參考&#xff1a; 3、工具 三、使用語言模型四、創建代理五、運行…

《安富萊嵌入式周報》第337期:超高性能信號量測量,協議分析的開源工具且核心算法開源,工業安全應用的雙通道數字I/O模組,低成本腦機接口,開源音頻合成器

周報匯總地址&#xff1a;http://www.armbbs.cn/forum.php?modforumdisplay&fid12&filtertypeid&typeid104 視頻版&#xff1a; https://link.zhihu.com/?targethttps%3A//www.bilibili.com/video/BV1PT421S7TR/ 《安富萊嵌入式周報》第337期&#xff1a;超高性…

【Spring Boot】分層開發 Web 應用程序(含實例)

分層開發 Web 應用程序 1.應用程序分層開發模式&#xff1a;MVC1.1 了解 MVC 模式1.2 MVC 和三層架構的關系 2.視圖技術 Thymeleaf3.使用控制器3.1 常用注解3.1.1 Controller3.1.2 RestController3.1.3 RequestMapping3.1.4 PathVariable 3.2 將 URL 映射到方法3.3 在方法中使用…

用戶數據報協議UDP實現可靠傳輸的思路

一、UDP協議的特點 按照報文來分割發送。不需要建立連接和維護連接。不需要接收確認。速度較快。不確保接收的順序和發送順序一樣。 二、用UDP實現可靠通信的思路 (一)接收時發送一個確認報文 實現接收確認的機制。 (二)每個報文騰出空間放置序號 發送時設置序號&#xff0c…