RAG 之 Prompt 動態選擇的三種方式

“如果我有5個prompt模板,我想只選擇一個每次都自動五選一能做到嗎怎么做?”


完全可以做到。這在復雜的RAG或Agentic工作流中是一個非常普遍且關鍵的需求,通常被稱為“條件路由(Conditional Routing)”或“動態調度(Dynamic Dispatching)”。其核心思想是系統需要根據輸入的上下文(Query)或其他中間狀態,智能地判斷哪一個Prompt模板最適合用于生成最終答案。這遠比硬編碼一個通用模板要強大,能顯著提升LLM在特定任務上的表現。

下面我將詳細闡述三種由淺入深、復雜度遞增的實現方法,并結合您的技術棧(FastAPI, Python)進行說明。

方法一:基于元數據/規則的路由 (Metadata/Rule-based Routing)

這是最簡單、最直接、可解釋性最強的方法。它依賴于對輸入數據或用戶交互的結構化理解。

  • 工作原理:
    您首先需要為您的五個Prompt模板定義清晰的“適用場景”。這些場景可以被編碼為一組規則或元數據。例如,假設您的五個模板分別用于:

    1. 產品功能咨詢 (Product Feature Inquiry): 當用戶問題明顯關于某個具體產品的功能時。

    2. 價格與套餐對比 (Pricing & Plan Comparison): 當用戶問題包含“價格”、“費用”、“訂閱”、“套餐”等關鍵詞時。

    3. 技術集成問題 (Technical Integration Issue): 當用戶問題涉及API、SDK、代碼、集成等技術術語時。

    4. 競品分析 (Competitive Analysis): 當用戶提到競爭對手的名字時。

    5. 通用/兜底模板 (General/Fallback Template): 當以上所有情況都不匹配時。

    您的FastAPI后端在接收到前端傳來的請求(包含用戶問卷回答和個人信息)后,會先通過一個“路由模塊”來分析這個請求。這個模塊會執行一系列if-elif-else邏輯判斷。

  • 在您的架構中如何實現:

    1. 定義請求模型: 在您的api/models.py中,使用Pydantic模型來結構化前端的請求。這不僅僅是為了數據驗證,更是為了路由。

      Generated python??生成的 python
            # api/models.py
      from pydantic import BaseModel, Field
      from typing import List, Literalclass UserProfile(BaseModel):industry: str = Field(..., description="用戶所在行業")company_size: int = Field(..., description="公司規模")class QuestionnaireAnswers(BaseModel):# 假設問卷中有明確的問題類型query_type: Literal['feature', 'pricing', 'integration', 'comparison'] = Field(..., description="用戶查詢的核心類別")keywords: List[str] = Field(default_factory=list, description="從用戶回答中提取的關鍵詞")full_text: strclass EnhanceRequest(BaseModel):user_profile: UserProfileanswers: QuestionnaireAnswers
    2. 實現路由邏輯: 在您的rag_pipeline.py或一個專門的router.py中,創建一個函數來選擇模板。

      Generated python??生成的 python
            # rag_pipeline/router.py
      PROMPT_TEMPLATES = {"feature": "這是產品功能模板: {context} \n\n 用戶問題: {question}","pricing": "這是價格對比模板: {context} \n\n 用戶問題: {question}","integration": "這是技術集成模板: {context} \n\n 用戶問題: {question}","comparison": "這是競品分析模板: {context} \n\n 用戶問題: {question}","general": "這是通用模板: {context} \n\n 用戶問題: {question}",
      }def select_prompt_template(request: EnhanceRequest) -> str:"""根據請求內容選擇最合適的Prompt模板"""query_type = request.answers.query_typeif query_type == 'feature':return PROMPT_TEMPLATES['feature']elif query_type == 'pricing':# 還可以增加更復雜的邏輯if "enterprise" in request.answers.full_text.lower():# 甚至可以有更細分的模板pass return PROMPT_TEMPLATES['pricing']elif query_type == 'integration':return PROMPT_TEMPLATES['integration']elif query_type == 'comparison':return PROMPT_TEMPLATES['comparison']else:# 如果前端無法提供明確的query_type,可以退化到關鍵詞匹配text = request.answers.full_text.lower()if any(kw in text for kw in ['api', 'sdk', 'code']):return PROMPT_TEMPLATES['integration']# ... 其他關鍵詞規則return PROMPT_TEMPLATES['general'] # 兜底模板
      優點:
    • 快速高效: 計算開銷極小。

    • 完全可控與可預測: 您確切地知道為什么會選擇某個模板,便于調試和迭代。

    • 實現簡單: 不需要復雜的AI模型。

  • 缺點:

    • 僵化: 規則是硬編碼的,無法處理模糊或未預料到的用戶意圖。

    • 維護成本高: 隨著模板和規則的增多,邏輯會變得非常復雜,難以維護。

方法二:基于語義相似度的路由 (Semantic Similarity-based Routing)

當用戶輸入的意圖比較模糊,無法用簡單規則判斷時,這種方法更優越。它利用了語言模型的“理解”能力。

  • 工作原理:

    1. 模板描述與向量化: 為您的每一個Prompt模板編寫一個簡短但精確的“描述”。例如,對于“產品功能模板”,描述可以是“這個模板用于回答關于我們產品具體特性的問題”。

    2. 離線處理: 使用一個預訓練的句子嵌入模型(如sentence-transformers庫中的模型),將這五個模板的“描述”文本轉換成向量,并存儲起來。

    3. 在線查詢: 當接收到用戶的查詢時,同樣使用該嵌入模型將用戶的查詢文本(request.answers.full_text)也轉換成一個向量。

    4. 相似度計算: 計算用戶查詢向量與所有五個模板描述向量之間的余弦相似度。

    5. 選擇最佳模板: 選擇相似度得分最高的那個模板作為本次調用的模板。

  • 在您的架構中如何實現:

    1. 安裝必要的庫: pip install sentence-transformers scikit-learn

    2. 創建模板描述和向量:

      Generated python??生成的 python
            # rag_pipeline/semantic_router.py
      from sentence_transformers import SentenceTransformer
      from sklearn.metrics.pairwise import cosine_similarity
      import numpy as npclass SemanticRouter:def __init__(self):self.model = SentenceTransformer('all-MiniLM-L6-v2') # 一個輕量級但效果不錯的模型self.template_names = ["feature", "pricing", "integration", "comparison", "general"]self.template_descriptions = ["Answers questions about specific product features, capabilities, and how they work.","Responds to inquiries about pricing, subscription plans, costs, and billing.","Handles technical questions related to API usage, SDKs, software integration, and code.","Provides analysis and comparison against competitor products and services.","A general-purpose template for questions that do not fit other categories."]# 離線計算并存儲模板描述的向量self.template_embeddings = self.model.encode(self.template_descriptions)def select_template(self, query_text: str) -> str:query_embedding = self.model.encode([query_text])# 計算余弦相似度similarities = cosine_similarity(query_embedding, self.template_embeddings)# 找到分數最高的模板索引best_template_index = np.argmax(similarities)selected_template_name = self.template_names[best_template_index]# 還可以設置一個閾值,如果最高分都低于閾值,則使用通用模板if np.max(similarities) < 0.5:return PROMPT_TEMPLATES["general"]return PROMPT_TEMPLATES[selected_template_name]# 使用示例
      # router = SemanticRouter()
      # user_query = "How much does your enterprise plan cost per user?"
      # selected_prompt = router.select_template(user_query) 
      # print(selected_prompt) # 應該會打印出 pricing 模板
  • 優點:

    • 智能與靈活: 能理解語義,而不是僅僅匹配關鍵詞。用戶用不同方式問同一個問題,也能正確路由。

    • 易于擴展: 增加新模板時,只需添加描述并重新計算向量即可,無需修改復雜的if-else邏輯。

  • 缺點:

    • 計算開銷: 每次請求都需要進行一次向量編碼和相似度計算,雖然很快,但比規則法要慢。

    • “黑盒”性: 可解釋性不如規則法,有時可能會出現意料之外的路由結果,調試稍難。

    • 依賴嵌入模型質量: 路由的準確性完全取決于所選嵌入模型的質量。

方法三:LLM作為路由/分類器 (LLM as a Router/Classifier)

這是最強大、最靈活,但也是成本最高、延遲最高的方法。它直接讓一個(通常是較小的、快速的)LLM來決定使用哪個模板。

  • 工作原理:
    您需要設計一個特殊的“元Prompt”(Meta-Prompt)。這個Prompt的任務不是生成最終答案,而是告訴LLM:“你是一個任務分類器。下面是用戶的請求,以及幾個可用的工具/模板。請判斷哪個工具/模板最適合處理這個請求,并以指定的格式(如JSON)返回你的選擇。”

  • 在您的架構中如何實現:

    1. 設計元Prompt:

      Generated python
            META_PROMPT = """
      You are an expert routing agent. Your task is to analyze the user's query and determine which of the following tools is the most appropriate to use.
      You must respond with only the name of the chosen tool. Do not add any other text or explanation.Here are the available tools:
      - "feature_tool": Use this for questions about specific product features and capabilities.
      - "pricing_tool": Use this for questions about costs, plans, and subscriptions.
      - "integration_tool": Use this for technical questions about APIs, SDKs, and integration.
      - "comparison_tool": Use this for questions involving competitor analysis.
      - "general_tool": Use this for all other general inquiries.User Query:
      ---
      {query_text}
      ---Chosen Tool:
      """

      現代的LLM API(如OpenAI, Anthropic)支持“Function Calling”或“Tool Use”功能,這是此方法的更優、更結構化的實現。您可以將每個模板定義為一個“工具”,LLM會返回一個結構化的JSON對象,指明應該調用哪個工具。

    2. 實現LLM調用邏輯:

      Generated python
            # rag_pipeline/llm_router.py
      import openai# 假設您已配置好OpenAI客戶端
      # client = openai.OpenAI(api_key="...")def select_template_with_llm(query_text: str) -> str:# 使用Function Calling/Tool Use會更穩健response = client.chat.completions.create(model="gpt-3.5-turbo", # 使用一個快速且便宜的模型messages=[{"role": "user", "content": META_PROMPT.format(query_text=query_text)}],max_tokens=10,temperature=0.0)tool_name = response.choices[0].message.content.strip().replace("_tool", "")if tool_name in PROMPT_TEMPLATES:return PROMPT_TEMPLATES[tool_name]else:# 如果LLM返回了意外的結果,進行兜底return PROMPT_TEMPLATES["general"]
  • 優點:

    • 極高的智能和理解力: 可以處理非常復雜、微妙和長篇的查詢,理解上下文的能力最強。

    • 最強的適應性: 幾乎不需要修改代碼就能通過調整元Prompt來改變路由邏輯。

  • 缺點:

    • 成本和延遲: 每次路由都需要進行一次LLM API調用,這會增加金錢成本和響應時間,對于需要快速響應的應用可能是個問題。

    • 穩定性: LLM的輸出不是100%確定的(即使temperature=0),可能返回意料之外的格式或選擇,需要有健壯的錯誤處理和重試邏輯。

結論與建議:
對于一個原型系統,我建議您從**方法一(基于規則)方法二(基于語義相似度)**開始。

  • 如果您的問卷設計得足夠結構化,能夠明確區分用戶意圖,方法一是最務實的選擇。

  • 如果用戶輸入是開放式的自然語言,方法二是性價比最高的選擇,它在智能和成本之間取得了很好的平衡。

  • 方法三可以作為未來的一個優化方向,當您發現前兩種方法無法滿足業務的復雜性時再考慮引入。


技術問題 2:data ingestion 與 intelligent chunking 的關系

問題核心: “data ingestion, intelligent chunking, 二者之間的關系是并列還是包含?”

回答:
這是一個非常好的問題,它觸及了RAG管道構建的核心概念。答案是:包含關系。data ingestion(數據攝取)是一個宏觀的、端到端的過程,而intelligent chunking(智能分塊)是這個過程中至關重要的一個步驟。

把data ingestion想象成一個工廠的生產線,它的目標是把“原材料”(您的原始文檔)加工成“標準化的、可用于檢索的零件”(帶有向量的文本塊)。這條生產線包含多個工位,intelligent chunking就是其中一個關鍵工位。

完整的 Data Ingestion 流程(Pipeline)通常包括以下步驟:

  1. 數據加載 (Loading):

    • 做什么: 從數據源讀取原始文件。

    • 例子: 從一個Azure Blob Storage容器中讀取PDF、Markdown、Word文檔、HTML文件,或者從數據庫中拉取文本記錄。LangChain中的DocumentLoader就是做這個的。

  2. 數據提取與清洗 (Extraction & Cleaning):

    • 做什么: 從加載的原始文件中提取出純文本內容,并進行預處理。

    • 例子:

      • 從PDF中抽取出文本,忽略頁眉、頁腳和圖片。

      • 從HTML中剝離掉<script>, <style>等無關標簽,只保留正文內容。

      • 去除多余的空格、換行符、特殊字符等噪聲。

      • 您的data_processing/cleaner.py腳本就負責這個階段。

  3. 文本分塊 (Chunking / Splitting):

    • 做什么: 這是intelligent chunking發生的階段。將清洗后的長文本分割成一系列更小的、有意義的、大小合適的文本塊(chunks)。

    • 為什么重要:

      • 嵌入模型限制: 大多數嵌入模型有輸入長度限制(如512個token)。你不能把一篇萬字長文直接扔進去。

      • 檢索精度: 如果塊太大,包含太多不相關信息,檢索時會引入噪聲,降低答案質量。如果塊太小,可能丟失上下文,導致檢索到的信息不完整。

    • “智能”體現在哪里:

      • 普通分塊 (Naive Chunking): 按固定字符數(如1000個字符)或固定token數進行硬切分。這種方法簡單粗暴,很容易把一個完整的句子或段落從中間切斷,破壞語義。

      • 智能分塊 (Intelligent Chunking):

        • 遞歸字符分塊 (Recursive Character Text Splitter): LangChain中常用的方法。它會嘗試按一系列分隔符(如\n\n, \n, )進行分割,優先使用最能保持語義完整性的分隔符,是一種更優的策略。

        • 基于語義/句子的分塊 (Semantic/Sentence Chunking): 使用NLTK或spaCy等NLP庫,按句子邊界進行分割,確保每個塊都是完整的句子。

        • 基于文檔結構的分塊 (Layout-aware Chunking): 這是更高級的方法。例如,對于Markdown,可以使用MarkdownHeaderTextSplitter(您計劃使用的),它會根據標題(#, ##)來分塊,使得每個塊都圍繞一個特定的主題。對于PDF,有工具可以根據其視覺布局(段落、列表、表格)來分塊。這保留了文檔的原始結構和上下文,效果通常最好。

    • 您的data_processing/chunker.py腳本就負責這個階段。

  4. 向量化 (Embedding):

    • 做什么: 將每一個文本塊(chunk)輸入到嵌入模型(如OpenAI的text-embedding-ada-002或開源模型)中,生成一個高維的浮點數向量(embedding)。這個向量可以被認為是該文本塊在語義空間中的“坐標”。

    • 例子: 將文本塊 "The API key is required for authentication" 轉換成一個 [0.012, -0.045, ..., 0.089] 這樣的1536維向量。

  5. 數據存儲/索引 (Storing / Indexing):

    • 做什么: 將文本塊及其對應的向量存儲到一個專門的數據庫中,這個數據庫能夠進行高效的向量相似度搜索。

    • 例子: 這就是您的Azure AI Search所扮演的角色。您會將文本塊和它的向量一起存入Azure AI Search的一個索引中。數據庫會為這些向量建立索引(如HNSW),以便快速找到與給定查詢向量最相似的鄰居。

所以,data ingestion是整個從A到Z的過程。intelligent chunking是這個過程中確保“零件”質量的關鍵一步。在簡歷中,將它們并列是不準確的,會顯得您對RAG的理解不夠深入。正確的表述應該是,在您設計的data ingestion pipeline中,您實現了一個intelligent chunking策略來提升數據處理質量。


技術問題 3:在您的工作流中,ingest 的是誰?

問題核心: “前端是用戶與問卷的交互,用戶填問卷和個人信息,后端檢索的query是問卷問題和其個人信息,那么ingest的是誰?”

回答:
這是一個至關重要的概念混淆,必須澄清。您的描述混淆了**“離線數據攝取(Offline Ingestion)”“在線查詢(Online Querying)”**兩個完全不同的階段。

被 ingest(攝取)的是您的“內部知識庫”,而不是用戶的信息。

讓我們把您的系統流程拆解成兩個獨立的部分:

階段一:數據攝取與索引構建 (Data Ingestion & Index Building) - 【離線階段】

這個階段在用戶與系統交互之前就已經完成了,而且可能會定期重復執行以更新知識庫。

  1. 對象: 您的內部知識庫。這可能包括:

    • 產品手冊、功能說明文檔。

    • 銷售話術、成功案例。

    • 市場分析報告、競品對比資料。

    • 技術白皮書、集成指南。

    • 所有您希望AI能夠學習并用來回答銷售咨詢的資料。

  2. 流程:

    • 您作為工程師,運行您的data_processing腳本(包含cleaner.py和chunker.py)。

    • 這些腳本會讀取上述的知識庫文檔(PDF, Markdown等)。

    • 對文檔進行清洗、智能分塊

    • 將分好的文本塊進行向量化

    • 將(文本塊 + 向量)的配對數據,**批量上傳并存儲(ingest)**到您的 Azure AI Search 索引中。

  3. 結果:

    • 一個填充完畢的、可供檢索的Azure AI Search索引。這個索引就是您的AI的“大腦”或“長期記憶”。它包含了所有它需要知道的背景知識。

階段二:查詢與應答 (Querying & Answering) - 【在線/實時階段】

這個階段是當一個真實用戶開始與您的前端應用交互時發生的。

  1. 對象: 用戶在前端填寫的信息。這包括:

    • 用戶的個人/公司信息(行業、規模等)。

    • 用戶對問卷問題的回答。

  2. 流程:

    • 前端收集用戶的輸入,并將其打包成一個JSON對象。

    • 前端的Next.js服務器(作為代理)將這個JSON對象發送到您的FastAPI后端的/enhance-answer端點。

    • FastAPI后端接收到請求。現在,它需要根據用戶的輸入,構造一個或多個“查詢(Query)”

      • 例如,后端邏輯可能會將用戶的“問卷回答”和“公司行業”組合成一個更豐富的查詢字符串,如:“For a company in the manufacturing industry, what is the best solution for tracking inventory?”

    • 后端將這個構造好的查詢字符串進行向量化,得到一個查詢向量。

    • 后端拿著這個查詢向量,去查詢(Search/Retrieve)那個在階段一就已經構建好的Azure AI Search索引

    • Azure AI Search會返回與查詢向量最相似的N個文本塊(這些是來自您的內部知識庫的片段)。這就是**檢索(Retrieval)**步驟。

    • 后端獲取到這些檢索到的文本塊(context),并根據我們之前討論的邏輯選擇一個合適的Prompt模板

    • 后端將context和用戶的原始問題question填入模板,形成最終的Prompt。

    • 后端調用GPT API(或其他大模型),將這個最終的Prompt發送過去。

    • GPT生成一個答案。

    • 后端接收到答案,可能會進行一些后處理(如格式化),然后將其返回給前端。

    • 前端將最終答案展示給用戶。

總結與澄清:

  • Ingest(攝取):是一個寫操作,是將知識庫數據處理后存入向量數據庫的過程。這是離線的。

  • Query/Retrieve(查詢/檢索):是一個讀操作,是使用用戶信息來構造查詢,從向量數據庫中檢索相關知識的過程。這是在線的。

data ingestion,指的應該是您為處理內部知識庫、構建Azure AI Search索引所做的工作。而您描述的用戶交互流程,是RAG的查詢階段。

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

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

相關文章

【ROS2 自動駕駛學習】02-安裝ROS2及其配套工具

目錄 一、設置語言環境 二、添加存儲庫 三、添加軟件源 四、安裝ROS2 五、配置環境 六、測試ROS2 七、安裝一些工具 7.1 terminator 7.2 colcon工具 7.3 tf工具 7.4 joint-state-publisher工具 7.5 urdf 八、安裝三方庫 8.1 Eigen 8.2 yaml-cpp 8.3 matplotl…

系統學習Python——并發模型和異步編程:基礎知識

分類目錄&#xff1a;《系統學習Python》總目錄 并行是并發的一種特殊情況。**所有并行系統都是并發的&#xff0c;但不是所有并發系統都是并行的。**在21世紀初&#xff0c;我們可以使用單核設備在GNU Linux上同時處理100個進程。一臺擁有4個CPU核的現代筆記本計算機&#xff…

睿爾曼系列機器人——以創新驅動未來,重塑智能協作新生態(下)

在智能制造與人工智能深度融合的當下&#xff0c;機器人技術正經歷從 “功能替代” 到 “價值共創” 的深刻躍遷。睿爾曼&#xff0c;作為全球超輕量仿人機械臂領域的先行者&#xff0c;始終秉持 “讓機器人觸手可及” 的使命&#xff0c;憑借底層技術的突破性進展&#xff0c;…

表征工程(Representation Engineering, RepE)

表征工程(Representation Engineering, RepE) 近年來,表征工程(Representation Engineering, RepE)在提升AI系統透明度和可控性方面取得了顯著進展。 一、大模型可解釋性與可控性的突破 核心論文:《Representation Engineering: A Top-Down Approach to AI Transparen…

國產ARM+FPGA工業開發平臺——GM-3568JHF

一、引言 隨著物聯網和國產替代需求的快速發展&#xff0c;嵌入式系統面臨計算性能與硬件靈活性的雙重挑戰。GM-3568JHF開發板基于國產“ARMFPGA”異構架構&#xff0c;結合瑞芯微RK3568J處理器與紫光同創Logos-2 FPGA芯片&#xff0c;支持國產自主操作系統&#xff0c;滿足通…

RISCV Linux 虛擬內存精講系列一 Sv39

筆者認為&#xff0c;Linux 操作系統&#xff08;Operating System&#xff09;最核心的機制是虛擬內存&#xff08;Virtual Memory&#xff09;。因為&#xff0c;操作系統主要作用是將硬件環境抽象起來&#xff0c;給在其中運行的應用&#xff08;Applications&#xff09;提…

【apply from: “$flutterRoot/packages/flutter_tools/gradle/flutter.gradle“作用】

這行代碼的作用是將 Flutter 的 Gradle 構建腳本集成到 Android 項目中&#xff0c;具體細節如下&#xff1a;作用解析&#xff1a;引入 Flutter 構建邏輯 flutter.gradle 是 Flutter SDK 的核心構建腳本&#xff0c;它負責&#xff1a; 編譯 Dart 代碼為原生二進制文件&#x…

深入理解JavaScript設計模式之命令模式

深入理解JavaScript設計模式之命令模式 文章目錄深入理解JavaScript設計模式之命令模式定義簡單命令模式組合命令模式使用命令模式實現文本編輯器目標關鍵類說明實現的效果交互邏輯流程所有代碼&#xff1a;總結定義 命令模式也是設計模式種相對于變焦簡單容易理解的一種設計模…

CSS 網頁布局:從基礎到進階

CSS 網頁布局&#xff1a;從基礎到進階 引言 隨著互聯網的飛速發展&#xff0c;網頁設計已經成為了一個不可或缺的領域。CSS&#xff08;層疊樣式表&#xff09;作為網頁設計中的關鍵工具&#xff0c;用于控制網頁元素的樣式和布局。本文將為您全面解析CSS網頁布局&#xff0c;…

【人工智能】大語言模型(LLM) NLP

大語言模型&#xff08;LLM&#xff09;& NLP1.大語言模型&#xff08;LLM&#xff09;1.1 一句話解釋1.2 更形象的比喻1.3 為什么叫 “大” 模型1.4 它能做什么1.5 現實中的例子2.對比 NLP2.1 用 “汽車進化” 比喻 NLP → LLM2.2 為什么說 LLM 屬于 NLP2.3 LLM 的 “革命…

Unity HDRP + Azure IoT 的 Python 后端實現與集成方案

Unity HDRP Azure IoT 的 Python 后端實現與集成方案 雖然Unity HDRP本身使用C#開發&#xff0c;但我們可以構建Python后端服務支持物聯網系統&#xff0c;并與Unity引擎深度集成。以下是完整的實現方案&#xff1a; 系統架構 #mermaid-svg-qCDb0g9Ik287Cg8X {font-family:&qu…

小黑黑日常積累大模型prompt句式2:【以段落的形式輸出,不分點列舉】【如果沒有相關內容則不輸出】【可讀性強】【輸出格式規范】

以段落的形式輸出&#xff0c;不分點列舉 每個標題下直接接續段落內容&#xff0c;不編號、不分點。......標題下直接接續段落內容&#xff0c;不繼續進行分點列舉。如果沒有相關內容則不輸出 若某一部分無法從原文中提取有效信息&#xff0c;則跳過該部分內容&#xff0c;不做…

React Native 基礎組件詳解<一>

一、Text組件 1&#xff09;numberOfLines&#xff1a;顯示行數 2&#xff09;ellipsizeMode&#xff1a;超出隱藏的位置 clip->裁掉 head/middle/ tail->點的位置 3&#xff09;selectable: 是否可以選中 4&#xff09;selectionColor&#xff1a;選中后的顏色 5&#…

異步編程(Promise/Generator/async)

1、Promise 2、Generator 3、async/await

【Note】《Kafka: The Definitive Guide》 第8章: Cross-Cluster Data Mirroring

《Kafka: The Definitive Guide》 第8章&#xff1a; Cross-Cluster Data Mirroring 一、跨集群鏡像的場景與價值 多區域低延遲訪問 將業務數據從主集群實時復制到多個地理區域的集群&#xff0c;縮短消費者跨區讀取延遲。 災備切換 當主集群出現故障時&#xff0c;可快速將消…

「Windows/Mac OS」AIGC圖片生成視頻 ,webui + stable-diffusion環境部署教程

stable-diffusion webui 環境搭建目錄 一、Windows 環境部署 stable-diffusion-webui1、準備條件2、安裝Python 3.10.X&#xff08;**較新版本的 Python 不支持 torch**&#xff09;3、安裝Git 教程4、使用Git 下載 stable-diffusion-webui 存儲庫&#xff0c;4.1、顯示報錯 5…

【深度學習】 深度學習訓練配置參數詳解

深度學習訓練配置參數詳解 1. 啟動初始化參數說明CUDA_VISIBLE_DEVICES指定使用的GPU設備編號&#xff08;"0"表示單卡&#xff09;seed隨機種子&#xff08;1777777&#xff09;&#xff0c;保證實驗可復現性cuda是否啟用GPU加速&#xff08;True&#xff09;benchm…

期望,積分,均值,求和的關系

1. 回顧期望的定義 對于連續性隨機變量 X X X&#xff0c;期望為&#xff1a; E X ~ f ( x ) [ X ] ∫ Ω x f ( x ) d x E_{X\sim f(x)}[X] \int_{\Omega}xf(x)dx EX~f(x)?[X]∫Ω?xf(x)dx 其中 f ( x ) f(x) f(x)為概率密度函數&#xff0c; Ω \Omega Ω為概率密度函…

1.如何對多個控件進行高效的綁定 C#例子 WPF例子

使用ObservableCollection高效為多個控件綁定數據在WPF開發中&#xff0c;數據綁定是一個非常重要的功能&#xff0c;它允許我們將UI控件與數據源進行綁定&#xff0c;從而實現數據的自動更新。當需要為多個控件綁定數據時&#xff0c;使用ObservableCollection可以大大提高開發…

JSONLines和JSON數據格式使用教程

文章目錄 一、核心區別二、JSONLines 的優勢三、Python 中使用 JSONLines1. 寫入 JSONLines 文件2. 讀取 JSONLines 文件3. 處理大文件示例四、常見工具支持1. 命令行工具2. 編程語言庫五、適用場景選擇六、注意事項總結JSONLines(簡稱 jsonl 或 jl)和傳統 JSON 都是用于存儲…