AI產品的上層建筑:提示詞工程、RAG與Agent

上節課我們拆解了 AI 產品的基礎設施建設,這節課我們聊聊上層建筑。這部分是產品經理日常工作的重頭戲,包含提示詞、RAG 和 Agent 構建

用 AI 客服產品舉例,這三者的作用是這樣的:

  • 提示詞能讓客服很有禮貌。比如它會說:您好呀,很高興為您服務。
  • RAG 能讓客服很專業。當客戶咨詢某個產品具體的價格時,RAG 能查閱相關價格手冊,直接給出具體數值;如果沒有 RAG,客服只能傻白甜地說,“親,請您查閱價格手冊哦~”雖然禮貌,但并不解決實際問題。
  • Agent 能讓客服很有執行力。當客戶要求安排明天送貨時,Agent 能在系統里修改送貨時間,并回復客戶“我已經幫您修改明天送貨”。

這節課我會用最容易入門的方式帶你理解以下概念,為后面的實戰案例做好知識儲備。

  • 提示詞工程:我會講述一個框架和兩個技巧。
  • RAG:我會帶你“參觀”RAG 工廠的流水線作業。
  • Agent:我會帶你學習讓 Agent 具備執行能力的兩項技能。

提示詞

相信你在很多地方看到過關于提示詞的知識,但是 AI 產品經理的提示詞和日常我們所說的提示詞有所不同。

第一個區別是目標不同,正如 01 節課中講的:

  • 普通用戶寫提示詞就像玩盲盒。對結果有所期待,但不要求確定。
  • AI 產品經理寫提示詞就像打靶。你是首先有一個確定的目標,再開始寫提示詞,直到提示詞能打中靶心為止。

第二個不同是使用工具不同。

  • 普通用戶寫提示詞是在 AI 產品里寫,比如 Open AI 的 ChatGPT。
  • AI 產品經理寫提示詞是面向原生的大語言模型寫,比如 Open AI 的 GPT Playground。

在這里,ChatGPT 是 OpenAI 包裝好的一個 AI 產品,ChatGPT 里的每一次問答并不是直接發給模型,而是經過了包裝才發給 GPT 模型。而 GPT Playground 里的對話才是直接發給 GPT 模型的。你可以把 GPT 理解為 OpenAI 提供的“毛坯房”,為了把這個“毛坯房”賣出去,OpenAI 提供了一個“樣板房”,就是 ChatGPT。

下圖是二者界面對比,ChatGPT 看上去更加簡潔,看上去就可以“拎包入住”;而 GPT Playground 里會有很多設置項,更像是毛坯房里裸露的“水電管線”。

預備知識:準備環境

那么在“毛坯房”里寫提示詞之前,我們先來介紹一下毛坯房里的“水電注意事項”。不過這里需要說明,每個模型廠商“水電注意事項”也不盡一致,在這里我列出部分模型的“毛坯房”可配置項和官方鏈接,其他模型大家直接參考官網。

https://platform.openai.com/playground

智譜AI開放平臺

https://www.anthropic.com/app-unavailable-in-region?utm_source=country

通義千問API參考_大模型服務平臺百煉(Model Studio)-阿里云幫助中心

其中,OpenAI 的 Playground 配置項是目前最全的,我們就以此為例具體說明。

首先,左側四個選項 Chat、Assistants、TTS、Completion,可以視作面向不同場景開發的不同“戶型”。

  • Chat:和模型直接對話,是調試提示詞的主要模式。
  • Assistants:可以先創建聊天機器人角色,再用這個角色與模型對話。如果你的產品僅僅就是一個對話機器人的話,可以用這種模式來調試提示詞。
  • TTS:是文本到語音,當模型收到你的消息時,會被朗誦出來。適用于語音輸出的場景。
  • Completions:是指文本補全,經常用在代碼補全的場景。

我們以最基本的 Chat 模式來看一種模式下的右側各種設置。

  • Function:添加模型可以執行的自定義功能。
  • Response format:指定對話輸出的格式要求。比如要求以 JSON 格式輸出,方便解析。方便下一步操作。
  • Temprature:用來控制模型的創造力和隨機性。溫度越高,回答越發散;溫度越低,回答越穩定。你可以想象,水的溫度是 100 時,水分子以水蒸氣的方式發散;而水溫 0 度時,則相對穩定。實際上大語言模型的原理本身就起源于熱力學模型,因此在這里沿用了溫度的概念。
  • Maximum Tokens:設置模型在單個響應中可以生成 Token 最大數量。
  • Stop sequences:可以提供特定的短語或模式控制模型應停止生成文本。
  • Top P:此參數影響模型輸出的概率分布,專注于更可能的預測。
  • Frequency penalty:降低模型出現重復單詞或短語的可能性。
  • Presence penalty:增加模型談論新主題的可能性。

在 AI 產品開發中,當我們向 OpenAI 發送請求時,需要帶上以上設置好的參數。對于產品經理來說,我們調整好提示詞后,需要同時把這些參數值的設置告訴開發同學。

配好環境后,我們就可以學習提示詞框架和技巧了。

提示詞框架和技巧

提示詞技巧難度不高,網上也有很多資料。但隨著實戰深入,你會發現提示詞更多的是一項“工程”。

比如對于不同模型,我們需要調整不同的提示詞;對于同一場景,也需要需要調整提示詞以達到最大化滿足需求。

這節課我會以一個框架和兩個技巧帶你了解基本知識,后續再通過實戰案例帶你深入體會。

一個入門框架

提示詞的框架就是提示詞模板。框架是為了讓我們更容易上手、方便記憶。在你充分實踐后,就不必拘泥于框架了。網上有非常多的提示詞框架(參考 1),這里我以 RTF 框架為例說明。

RTF 代表 Role(角色),Task(任務), Format(格式)。我們把上節課提到的客服場景用 RTF 框架寫出來,就是下面這樣的提示詞。

## Role  
情感標注人員  
## Task 
我給你的一句客戶留言文字,請你判斷出文字中的情緒。請你從以下選項中選擇: 
1. 正面:表達了肯定、喜歡、贊賞、褒揚
2. 負面:表達了否定、討厭、貶低
3. 中性:通常客觀描述,沒有主觀意向, 沒有肯定、喜歡、贊賞、褒揚,也沒有否定、討厭、貶低
## Format
嚴格按照以下格式輸出:
{"客戶留言": "客戶留言內容","情緒判斷": "情緒判斷結果"
}

在撰寫提示詞時需要注意兩條不成文的“習俗”。

  1. 提示詞中的標記位參考 Markdown 語言來寫。Markdown 是一種帶標記的語言,比如例子中 “##” 代表一個小標題,Markdown 語言既能方便人來操作,又能讓計算機很好理解。所以在提示詞的撰寫中廣泛應用。你可以參考Markdown 官方文檔學習。Getting Started | Markdown Guide
  2. 輸出格式結構化。上面的提示詞特別規定了嚴格的輸出格式(通常是 JSON 格式)。這是因為開發同學通常會對模型的輸出做下一步處理,結構化輸出會方便他們解析。如果你不熟悉 JSON 格式,可以借助 ChatGPT 來修改成 JSON 格式(比如下圖)。

在框架之外,我們還需要掌握提示詞的兩個基本技巧,Few-Shots、COT。

基本技巧
技巧一:Few-Shots(少量樣本提示)

Few-Shots 通俗來講就是“舉例子”。我們給剛才客服場景的提示詞加上 Few-Shots,就是下面這樣的。

// RTF 內容略...## few shots 
{"客戶留言":"今天我不在家,你們明天送貨;","情緒判斷":"中性"
},
{"客戶留言":"我就不相信你們賣的是正品,質量太差了!","情緒判斷":"負面"
},
{"客戶留言":"收到您的差額退還了,你們的服務真快,謝謝!","情緒判斷":"正面"
}

你可千萬別小看舉例子這個簡單的操作,這可是正兒八經的學術話題。2020 年 OpenAI GPT-3 論文的標題就是《Language Models are Few-Shot Learners》,論文中有一張圖這樣的:

你看,在 1750 億參數的大語言模型中:

  1. 給出一個示例比不給示例的準確率從 10% 迅速提升到 45%。
  2. 給出 10 個示例比一個示例的準確率從 45% 提升到 60%。
  3. 給出 10 個以上示例效果會有所波動甚至下降。

所以,少量樣本數量不宜過少,但也不能過多。這也是提示詞被稱為是“工程”的一個原因:我們需要通過大量嘗試,把最典型的例子放在提示詞里。

Few-Shots 論文讓學術界見識到了大語言模型通過上下文就能“照貓畫虎”地學習到示例里的能力,而當時大語言模型的推理能力還很弱。于是大家就開始思考:如果提示詞當中給出推理步驟,是不是就能讓大語言模型“照貓畫虎”地學會推理呢?

這一思考就催生了提示詞的第二個基本技巧:COT(思維鏈,Chain Of Thought)

技巧二: COT(思維鏈,Chain Of Thought)

思維鏈簡單來說就是在提示詞里加上“讓我們一步步來,第一步……,第二步……”,主要用于推理場景,比如數學應用題計算,再比如規劃旅程時中轉站的時間要前后合理,這些都是推理場景。

這個簡單的技巧放在提示詞里確實有四兩拔千金的效果。在 COT 開山論文里發現:對于參數量在十億、百億、千億的大模型,采納了 COT 的提示詞在 GSM8K 數據集(加減乘除應用題)的測試中,準確率從 20% 直接干到 50%,接近人類平均水平。正如論文標題所說的《COT 點燃了大語言模型的推理能力》。

所以,在推理場景下,COT 的作用絕不可小覷。如果你了解更多關于 COT 的研究,可以參考這篇文章。上面說的提示詞框架和兩個提示詞技巧還衍生出來了很多技巧,你可以參考 2 提示詞指南網站上的內容學習。在后續的實戰案例中,我們會以組合、嵌套的方式同時使用這些技巧。

https://zhuanlan.zhihu.com/p/589087074

接下來我們來了解 AI 產品上層建筑中的另外一項內容,RAG。

RAG

在本節課開頭客服場景的例子里,我說的是 RAG 會讓客服更專業,是因為它會查閱資料后給出回答。RAG 本質上就是把搜索到的資料作為提示詞的一部分發給大語言模型,讓大語言模型有根據地輸出內容,從而降低大模型“臆想答案”的概率。在 OpenAI 分享的案例中,通過對 RAG 技術的應用將回答準確率從 45% 提升到了 98%,可見 RAG 的重要性。

RAG 的全稱是 Retrieval Argumented Generation,中文是檢索增強生成。意思是把檢索(資料庫)的結果發給大模型,以增強大模型的生成能力。

下面這張圖就是一張 RAG 作業的流水線,行話叫 Pipeline。這個流水線上有 10 個作業環節,只有精細打磨流水線上的每一個步驟,最后才能出來好的效果。

接下來,我們對這個 RAG Pipeline 中的各個環節做一個概念介紹。為了便于理解,這里都會拿“查閱資料庫”來類比。

  1. 數據提取:類比于資料庫的資料來源。主要目標是確保資料數據完整,除此之外,還可以新生成一些數據,比如利用大模型對資料進行 summary、打標簽,讓后續處理更高效。
  2. 分塊 (Chunking):你可以想象成資料應該拆分到多細來存儲,用梗話來說就是“對齊顆粒度”。比如按段落、句子拆,或者按照文章標題、某個標記來拆等等。
  3. 向量化(Embedding):就是把拆分后的段落、句子、單詞轉換為計算機可處理的向量,向量化就是把一個物體拆成多個維度表達。

比如一本書可以從以下八個維度去表達。

那么某一本特定的書《思考的快與慢》對應的向量值就是八維空間的一個點,計算機就是通過這些點來定義事物的。同樣,語言文字也可以被向量化,且語言都已經有成熟的向量模型,比如智源的開源 embedding 模型 bge-large-zh-v1.5 有 1024 個維度。

4、創建索引:類似把向量化后的資料塊進行分類、整理,按照一定順序放在對應位置后給出序號,方便后面的檢索查找。索引可以建多個,比如書可以按照圖書分類排序,也可以按照出版時間排序。

至此,你的資料庫終于建好了,接下來就是根據具體問題在這些資料庫中查找了。

5、檢索環節(Retriever):類似在資料庫找相關資料。系統會根據用戶的提問,在索引中查找最相關的數據塊。找到和問題匹配度高的資料(注意此時還沒有形成答案)。

6、第一輪檢索評估:大多數文章中會漏掉評估的環節,開發者往往也會忽視。要知道,沒有評估等于盲走。這里的評估和傳統搜索的評估是一樣的,最核心的指標是召回率,即實際檢索出的文本塊數量 / 期待被檢索的文本數量。

講到這里我們停一下。實際上到這一步之前,在技術上和互聯網的搜索邏輯是類似的,我們統稱為“語義檢索”階段。這意味著如果你公司內部的知識庫已經具備“語義搜索”能力,那么通過嫁接下面兩步就可以實現基于 LLM 的問答應用了。

7、重排序(Rerank):語義檢索出來的結果相當于是資料初篩,講究的是效率。重排序顧名思義就是對初步檢索結果進行重排序,從而得到更精確的結果。重排序也有開源閉源的模型供大家使用,比如 Cohere 等。

8、重排評測:和語義檢索階段一樣,在重排序之后,我們也應該有一個評估,這里的評估機制和步驟 6 類似。

9、生成(Generator):這一步對應的就是系統終于找到了最準確的資料,然后整理、總結資料,形成完整報告。實際上就是將重排序后的資料片段加上用戶的提示詞,提供給大型語言模型 LLM,由 LLM 根據上下文生成最終的輸出。在這個過程中,主要在提示詞、上下文、意圖識別方面下功夫。

10、終極評估:這一輪的評估指標和檢索、重排序指標不一樣,現在有專門用于評估 RAG 的框架 RAGAS (參考 RAGAS 官網)。

總的來說,RAG 流程玩的是一條流水線上的“組合拳”。對于應用開發者來說,比拼的就是對不同的場景該怎么打這套組合拳。有了 RAG 和提示詞,相當于我們和大語言模型建立起了很好的溝通機制,當我們把事情溝通好之后呢,就可以借助大語言模型來“執行工作”了,這就輪到 Agent 出場了。

Agent

Agent 并不是平行于 RAG、提示詞的概念,Agent 本身就包含了 RAG 和提示詞的應用。

在 01 節中,我們知道 Agent 需要具備記憶、反思、規劃和工具使用能力。這四項能力中,我把記憶、反思、規劃總結為思考力,工具使用總結為執行力。思考力通過上述的提示詞工程和 RAG 就可以獲得,剩下的執行力,我們在這一小節講述。

本節課開頭的例子中,Agent 能讓客服直接安排退貨這個行為,這就是執行力。那這是怎么做到的呢?你只要記住兩項技能:Function calling 和 Re-Act,別急,我們一個個講清楚。

技能一:Function calling(函數調用)

Function calling 的中文意思是函數調用,是計算機語言里的一個概念。比如你使用 Excel 表里的公式 SUM(C1,C2) 代表將單元格 C1,C2 中的數字相加,在這里:

  • 自然語言是:將單元格 C1,C2 中的數字相加。
  • 自然語言被轉換成函數調用就是:SUM(C1,C2),函數調用可以直接被機器編譯并運行。

大語言模型的 Function calling 能力就是把自然語言指令轉換為函數的調用指令,從而使自然語言指令可以被執行。

當然,可以被機器運行的函數有很多種,比如 Java 函數、Python 函數,而在 AI 產品中最常見的函數調用方式就是調用微服務架構下的各種 API request。

下面就是以 API request 這種函數為例,通過提示詞的方式讓大語言模型完成函數調用的任務。

## Instruction 
你是一個人工智能編程助手,根據用戶請求和函數定義,調用函數來完成任務,并以代碼格式進行回應,無需回復其他話語。請特別注意函數的定義。## 函數定義tools = [{"type": "function","function": {"name": "get_current_weather","description": "Get the current weather in a given location","parameters": {"type": "object","properties": {"location": {"type": "string","description": "The city and state, e.g. San Francisco, CA",},},"required": ["location"],}}}]## 用戶請求查一下今天北京的天氣

這個例子的提示詞里有三個部分。

  1. 任務:告訴大語言模型要完成指令轉換的任務,這里的核心任務就是“根據用戶請求和函數定義,調用函數來完成任務,并以代碼格式進行回應”。
  2. 函數定義:專業術語叫 schema,即告訴大語言模型這個 API request 里有哪些參數,各個參數的名稱、描述、數據類型等。這里最好遵循 OpenAI 自己的格式,這種格式也可以借助大語言模型來完成。
  3. 用戶請求:就是自然語言指令。

我們把上述的例子輸入給到 Open AI 的 GPT Playground,GPT 就會輸出以下 API Request,這就可以直接被機器運行。我們就實現了將自然語言指令轉變為計算機可執行指令。

```json
{"function": "get_current_weather","parameters": {"location": "北京"}
}

不過大語言模型在做這個可執行指令的轉換時,充滿了不確定性,除了調整提示詞中 instruction 部分外,還需要一些機制來控制執行的準確性,這就需要賦予 Agent 的第二項技能:Re-Act。

技能二: Re-Act

Re-Act 的全稱是:Reasoning and Act,推理并且執行,相當于是給行動裝上了一個隨機應變的機制。

回到上面的函數定義例子,假設 API 定義中要求第 14 行代碼的字段“location”必須是英文字母,但我們發送的是漢字“北京”,API 就會返回錯誤信息“location must be English”。這時大語言模型還會根據這個錯誤信息自動推理出此時需要將漢字“北京”改為拼音“Beijing”后,再去調用 API。

```json
{"function": "get_current_weather","parameters": {"location": "BeiJing"}
}

這就是推理并且執行,你瞧,大語言模型是不是很聰明呀。

在上面這個例子中,我們很容易就發現,在 Agent 進行推理執行的過程中,需要分享把觀察到的報錯信息也發給大語言模型,這就構成了 Re-Act 模式的提示詞框架:Observation,Think,Act。

## Observation:API就會返回錯誤信息“location must be English”.
## Think:應該location這個字段的值轉換為英文再發一次.將API request 當中的"北京"修改為"BeiJing".## Act:```json{"function": "get_current_weather","parameters": {"location": "BeiJing"}}

這種 Observation->Think->Act 的模式會一直循環,直到在 Think 步驟中認為 Observation 里的結果能達成用戶訴求,或者循環次數達到了代碼里規定的上限。可以說,Re-Act 本質上就是一種提高 Agent 執行準確率的提示詞模板。

聽到這里,你會不覺得,哇~ 這也太厲害了吧,只要通過提示詞能讓大語言模型像個真人一樣自主行動呢。不過這里我要潑點冷水:目前大語言模型的 Reasoning 和 Act 的準確率還不夠高,就像剛剛走路的孩子,執行起來跌跌撞撞,但這種能力會越來越強。

另一方面,研究者在 Re-Act 基礎之上,也衍生出了各種各樣的花式提示詞模板來提升 Agent 的執行準確率。類似于給孩子裝上護具、穿上牽引帶這類外圍措施防止他們跌倒。我們在后續的實戰案例中會根據需要使用到這些方式,在這里不再細講。

小結

到這里,AI 產品架構中的上層建筑就完成了簡單介紹。針對三點,我們需要做到:

  • 提示詞:以簡單框架入門提示詞,牢記 Few shots、COT 兩項基本技巧。這是讓應用層和大語言模型進行有效溝通的技巧。
  • RAG:了解 RAG 流水線的每一個環節,之后我們才能在實戰案例按照流水線來一一排查問題。
  • Agent:通過函數調用具備執行力,通過以 Re-Act 為代表的 Agent 提示詞模板提升執行準確率。

到這里我們完成了第一章的產品經理必懂的 AI 技術原理的學習。一款 AI 產品通常有四層架構,這四層又可以歸類為基礎設施(算法、數據,大語言模型)和上層建筑。這部分 AI 產品經理必備的基礎知識,也是打造所有 AI 產品的必備工具。相信你已經掌握了使用這些工具的方法,一定在實戰中得心應手地使用這些工具,打造出優秀的 AI 產品。

課后題

注冊堪稱國內版 OpenAI 的智譜大語言模型開放平臺(相當于智譜的 API playground),并完成兩個任務。

智譜AI開放平臺

任務一: 從 twitter 數據集中選取 20 條數據,寫一條提示詞,使模型輸出結果與 20 條數據中的標注數據保持一致。注意使用 Few shots。

https://huggingface.co/datasets/ought/raft/tree/main/data/twitter_complaints

任務二:將本節課中的《技能一:Function calling(函數調用)》部分提到的 Function calling 提示詞模板輸入到智譜大語言模型開放平臺,看看輸出的結果是否和 OpenAI 輸出的一致,看看在 function calling 領域,openAI 和智譜是否有一定差距?

參考:

提示詞框架。

提示詞指南。

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

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

相關文章

藍橋杯刷題記錄【并查集001】(2024)

主要內容:并查集 并查集 并查集的題目感覺大部分都是模板題,上板子!! class UnionFind:def __init__(self, n):self.pa list(range(n))self.size [1]*n self.cnt ndef find(self, x):if self.pa[x] ! x:self.pa[x] self.fi…

海外SD-WAN專線網絡部署成本分析

作為支撐企業國際業務的重要基石,海外SD-WAN專線以其獨特的成本優勢和技術特性,正成為企業構建高效穩定的全球網絡架構的首選方案。本文將從多維度解構海外SD-WAN專線部署的核心成本要素,為企業的全球化網絡布局提供戰略參考。 一、基礎資源投…

操作系統(二):實時系統介紹與實例分析

目錄 一.概念 1.1 分類 1.2 主要指標 二.實現原理 三.主流實時系統對比 一.概念 實時系統(Real-Time System, RTS)是一類以時間確定性為核心目標的計算機系統,其設計需確保在嚴格的時間約束內完成任務響應。 1.1 分類 根據時間約束的嚴…

Golang的消息中間件選型

# Golang的消息中間件選型 消息中間件的作用 消息中間件是一種用于分布式系統中應用程序之間進行通信的基礎架構工具,它能夠有效地解耦發送者和接收者,并提供高可用性和可靠性的消息傳遞機制。在Golang應用程序中,選擇適合的消息中間件對于構…

大模型中的參數規模與顯卡匹配

在大模型訓練和推理中,顯卡(GPU/TPU)的選擇與模型參數量緊密相關,需綜合考慮顯存、計算能力和成本。以下是不同規模模型與硬件的匹配關系及優化策略: 一、參數規模與顯卡匹配參考表 模型參數量訓練階段推薦顯卡推理階…

帶頭結點 的單鏈表插入方法(頭插法與尾插法)

帶頭結點的單鏈表插入方法(頭插法與尾插法) 在單鏈表的操作中,插入是最常見的操作之一,本文介紹 帶頭結點的單鏈表 如何實現 后插法 和 前插法(包括 插入法 和 后插數據交換法),并提供完整的 C …

Prometheus的工作流程

Prometheus 是一個開源的監控和告警系統,專為監控分布式系統而設計。它的工作流程主要包括以下幾個關鍵步驟: 1. 數據采集 (Scraping) 目標發現 (Service Discovery): Prometheus 自動或手動配置監控目標,通過 DNS、Kubernetes、…

軟件工程面試題(二十二)

1、常用的設計模式有哪些?并寫出一段程序代碼 Factory(工廠模式),Adapter(適配器模式),Singleton(單例模式),State(狀態模式),Observer(觀察者模式) 等。 單例模式 public class Singleton{ private static Singleton …

【Pandas】pandas DataFrame select_dtypes

Pandas2.2 DataFrame Attributes and underlying data 方法描述DataFrame.index用于獲取 DataFrame 的行索引DataFrame.columns用于獲取 DataFrame 的列標簽DataFrame.dtypes用于獲取 DataFrame 中每一列的數據類型DataFrame.info([verbose, buf, max_cols, …])用于提供 Dat…

如何利用ATECLOUD測試平臺的芯片測試解決方案實現4644芯片的測試?

作為多通道 DC-DC 電源管理芯片的代表產品,4644 憑借 95% 以上的轉換效率、1% 的輸出精度及多重保護機制,廣泛應用于航天航空(衛星電源系統)、醫療設備(MRI 梯度功放)、工業控制(伺服驅動單元&a…

Python 編程實戰:打造高效便捷的目錄結構生成器

Python 編程實戰:打造高效便捷的目錄結構生成器 相關資源文件已經打包成EXE文件,可雙擊直接運行程序,且文章末尾已附上相關源碼,以供大家學習交流,博主主頁還有更多Python相關程序案例,秉著開源精神的想法&…

移動端六大語言速記:第6部分 - 錯誤處理與調試

移動端六大語言速記:第6部分 - 錯誤處理與調試 本文將對比Java、Kotlin、Flutter(Dart)、Python、ArkTS和Swift這六種移動端開發語言在錯誤處理與調試方面的特性,幫助開發者理解和掌握各語言的異常處理機制。 6. 錯誤處理與調試 6.1 異常處理 各語言異常處理的語法對比:…

PyTorch優化器

PyTorch 提供了多種優化算法用于神經網絡的參數優化。以下是對 PyTorch 中主要優化器的全面介紹,包括它們的原理、使用方法和適用場景。 一、基本優化器 1. SGD (隨機梯度下降) torch.optim.SGD(params, lr0.01, momentum0, dampening0, weight_decay0, nesterov…

C++的UDP連接解析域名地址錯誤

背景 使用c開發一個udp連接功能的腳本,可以接收發送數據,而且地址是經過內網穿透到外網的 經過 通常發送數據給目標地址,需要把目的地址結構化,要么使用inet_addr解析ip地址,要么使用inet_pton sockaddr_in target…

Spark,上傳文件

上傳文件 1.上傳 先使用命令打開HDFS的NameNode [roothadoop100 hadoop-3.1.3]$ sbin/start-dfs.sh [roothadoop100 hadoop-3.1.3]$ sbin/stop-dfs.sh 和YARN的Job [roothadoop101 hadoop-3.1.3]$ sbin/start-yarn.sh [roothadoop101 hadoop-3.1.3]$ sbin/stop-yarn.sh 在Nam…

如何為Linux/Android Kernel 5.4和5.15添加 fuse passthrough透傳功能 ?

背景 參考:Google文檔 FUSE 透傳 參考此文檔,目前kernel.org提供的fuse passthrough補丁在6.9版本之后,但想要在5.4和5.15版本內核做移植應該如何簡單點呢?文檔中提到 Android的內核為5.4 和 5.15版本內核做了fuse passthrough功…

Ubuntu 防火墻配置

Ubuntu 的防火墻配置可以參考文章:Firewall - Ubuntu Server documentation 22 端口 需要注意的是,在啟動防火墻之前,需要先開放 22 端口。 否則 SSH 將會拒絕你連接防火墻。 開放 22 端口的命令為:sudo ufw allow 22 添加端…

Jetson 設備卸載 OpenCV 4.5.4 并編譯安裝 OpenCV 4.2.0

?一、卸載 OpenCV 4.5.4? 清除已安裝的 OpenCV 庫? sudo apt-get purge libopencv* python3-opencv # 卸載所有APT安裝的OpenCV包?:ml-citation{ref"1,3" data"citationList"}sudo apt autoremove # 清理殘留依賴?:ml-citation{ref"1,4"…

《AI大模型應知應會100篇》第57篇:LlamaIndex使用指南:構建高效知識庫

第57篇:LlamaIndex使用指南:構建高效知識庫 摘要 在大語言模型(LLM)驅動的智能應用中,如何高效地管理和利用海量知識數據是開發者面臨的核心挑戰之一。LlamaIndex(原 GPT Index) 是一個專為構建…

Sentinel[超詳細講解]-4

🚓 主要講解流控模式的 三種方式中的兩種: 直接、鏈路🚀 1?? 直接模式 🚎 直接模式:對資源本身進行限流,例如對某個接口進行限流,當該接口的訪問頻率超過設定的閾值時,直接拒絕新的…