【GPT入門】第33 課 一文吃透 LangChain:chain 結合 with_fallbacks ([]) 的實戰指南

@[TOC](【GPT入門】第33課 一文吃透 LangChain:chain 結合 with_fallbacks ([]) 的實戰指南)

1. fallback概述

模型回退,可以設置在llm上,也可以設置在chain上,都帶有with_fallbacks([])函數

2. llm的回退

2.1 代碼

核心代碼: bad_llm.with_fallbacks([good_llm])
打開debug,觀察執行情況

from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama import OllamaLLM
from langchain.globals import set_debug
from langchain_core.output_parsers import StrOutputParserset_debug(True)
chat_prompt = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant."),("human", "{input}"),
])
bad_llm = OllamaLLM(model="gpt-fack")
good_llm = OllamaLLM(model="gpt-4")
llm_with_fallback = bad_llm.with_fallbacks([good_llm])
fallback_chain = chat_prompt | llm_with_fallback | StrOutputParser()
print(fallback_chain.invoke({"input": "你是誰?"}))

2.2 執行結果

[llm/start] [llm:OllamaLLM] Entering LLM run with input:
{"prompts": ["你是誰?"]
}
[llm/end] [llm:OllamaLLM] [10.98s] Exiting LLM run with output:
{"generations": [[{"text": "我是來自阿里云的大規模語言模型,我被命名為通義千問。我可以回答各種問題,包括但不限于科技、文化、生活、歷史、地理等各個領域的問題。我還能夠進行文本摘要、代碼解析、圖像生成、視頻轉碼等各種任務。如果您有任何具體問題或需要某個特定任務的幫助,請隨時告訴我,我會盡力為您提供最準確和最有用的答案和幫助。","generation_info": {"model": "gpt-4","created_at": "2025-04-02T21:53:46.7502575Z","done": true,"done_reason": "stop","total_duration": 10975642300,"load_duration": 3865007300,"prompt_eval_count": 11,"prompt_eval_duration": 1252263100,"eval_count": 83,"eval_duration": 5857248900,"response": "","context": [151644,872,.---省略---33108,100364,1773]},"type": "Generation"}]],"llm_output": null,"run": null,"type": "LLMResult"
}
我是來自阿里云的大規模語言模型,我被命名為通義千問。我可以回答各種問題,包括但不限于科技、文化、生活、歷史、地理等各個領域的問題。我還能夠進行文本摘要、代碼解析、圖像生成、視頻轉碼等各種任務。如果您有任何具體問題或需要某個特定任務的幫助,請隨時告訴我,我會盡力為您提供最準確和最有用的答案和幫助。

3. chain級別fallback

核心代碼:res = bad_chain.with_fallbacks([good_chain])

3.1 代碼

from langchain_core.prompts import ChatPromptTemplate
from langchain_ollama import OllamaLLM
from langchain.globals import set_debug, set_verboseset_debug(True)from langchain_core.output_parsers import StrOutputParser
chat_prompt = ChatPromptTemplate.from_messages([("system", "You are a helpful assistant."),("human", "{input}"),
])
# 構建一個錯誤的model, 該model不存在,會報錯
llm_chatmodel = OllamaLLM(model="gpt-fack")
bad_chain = chat_prompt | llm_chatmodel | StrOutputParser()
# print(bad_chain.invoke({"input": "你是誰?"}))# 構建一個正確的鏈llm_chatmodel = OllamaLLM(model="gpt-4")
good_chain = chat_prompt | llm_chatmodel | StrOutputParser()
# print(good_chain.invoke({"input": "你是誰?"}))
# 設置fallback
res = bad_chain.with_fallbacks([good_chain])
print(res.invoke({"input": "我是星火老師,你是誰?"}))

3.2 執行結果

C:\ProgramData\anaconda3\envs\gptLearning\python.exe "E:\workspace\gptLearning\gptLearning\ls10\06 ollama\332_chain級別的fallback.py" 
[chain/start] [chain:RunnableWithFallbacks] Entering Chain run with input:
{"input": "我是星火老師,你是誰?"
}
[chain/start] [chain:RunnableWithFallbacks > chain:RunnableSequence] Entering Chain run with input:
{"input": "我是星火老師,你是誰?"
}
[chain/start] [chain:RunnableWithFallbacks > chain:RunnableSequence > prompt:ChatPromptTemplate] Entering Prompt run with input:
{"input": "我是星火老師,你是誰?"
}
[chain/end] [chain:RunnableWithFallbacks > chain:RunnableSequence > prompt:ChatPromptTemplate] [1ms] Exiting Prompt run with output:
[outputs]
[llm/start] [chain:RunnableWithFallbacks > chain:RunnableSequence > llm:OllamaLLM] Entering LLM run with input:
{"prompts": ["System: You are a helpful assistant.\nHuman: 我是星火老師,你是誰?"]
}
[llm/error] [chain:RunnableWithFallbacks > chain:RunnableSequence > llm:OllamaLLM] [9ms] LLM run errored with error:
"ResponseError(\"model 'gpt-fack' not found\")Traceback (most recent call last):\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_core\\language_models\\llms.py\", line 787, in _generate_helper\n    self._generate(\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_ollama\\llms.py\", line 288, in _generate\n    final_chunk = self._stream_with_aggregation(\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_ollama\\llms.py\", line 256, in _stream_with_aggregation\n    for stream_resp in self._create_generate_stream(prompt, stop, **kwargs):\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_ollama\\llms.py\", line 211, in _create_generate_stream\n    yield from self._client.generate(\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\ollama\\_client.py\", line 168, in inner\n    raise ResponseError(e.response.text, e.response.status_code) from None\n\n\nollama._types.ResponseError: model 'gpt-fack' not found (status code: 404)"
[chain/error] [chain:RunnableWithFallbacks > chain:RunnableSequence] [19ms] Chain run errored with error:
"ResponseError(\"model 'gpt-fack' not found\")Traceback (most recent call last):\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_core\\runnables\\base.py\", line 3025, in invoke\n    input = context.run(step.invoke, input, config)\n            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_core\\language_models\\llms.py\", line 390, in invoke\n    self.generate_prompt(\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_core\\language_models\\llms.py\", line 763, in generate_prompt\n    return self.generate(prompt_strings, stop=stop, callbacks=callbacks, **kwargs)\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_core\\language_models\\llms.py\", line 966, in generate\n    output = self._generate_helper(\n             ^^^^^^^^^^^^^^^^^^^^^^\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_core\\language_models\\llms.py\", line 787, in _generate_helper\n    self._generate(\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_ollama\\llms.py\", line 288, in _generate\n    final_chunk = self._stream_with_aggregation(\n                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_ollama\\llms.py\", line 256, in _stream_with_aggregation\n    for stream_resp in self._create_generate_stream(prompt, stop, **kwargs):\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\langchain_ollama\\llms.py\", line 211, in _create_generate_stream\n    yield from self._client.generate(\n\n\n  File \"C:\\ProgramData\\anaconda3\\envs\\gptLearning\\Lib\\site-packages\\ollama\\_client.py\", line 168, in inner\n    raise ResponseError(e.response.text, e.response.status_code) from None\n\n\nollama._types.ResponseError: model 'gpt-fack' not found (status code: 404)"
[chain/start] [chain:RunnableWithFallbacks > chain:RunnableSequence] Entering Chain run with input:
{"input": "我是星火老師,你是誰?"
}
[chain/start] [chain:RunnableWithFallbacks > chain:RunnableSequence > prompt:ChatPromptTemplate] Entering Prompt run with input:
{"input": "我是星火老師,你是誰?"
}
[chain/end] [chain:RunnableWithFallbacks > chain:RunnableSequence > prompt:ChatPromptTemplate] [1ms] Exiting Prompt run with output:
[outputs]
[llm/start] [chain:RunnableWithFallbacks > chain:RunnableSequence > llm:OllamaLLM] Entering LLM run with input:
{"prompts": ["System: You are a helpful assistant.\nHuman: 我是星火老師,你是誰?"]
}
[llm/end] [chain:RunnableWithFallbacks > chain:RunnableSequence > llm:OllamaLLM] [12.51s] Exiting LLM run with output:
{"generations": [[{"text": "我是來自阿里云的大規模語言模型——通義千問。我被設計成能夠理解和生成各種形式的語言文本,包括但不限于中文、英文、法文等。\n\n我可以根據你的問題或指令進行回答,甚至可以自動生成與主題相關的文章或段落。無論你有什么需求,我都會盡力提供最準確和最有幫助的答案。\n\n感謝你選擇與我交流!如果你有任何疑問或需要進一步的幫助,請隨時告訴我,我會盡力為你提供最好的支持和服務。","generation_info": {"model": "gpt-4","created_at": "2025-04-02T22:06:15.9157224Z","done": true,"done_reason": "stop","total_duration": 12508307000,"load_duration": 3565616000,"prompt_eval_count": 29,"prompt_eval_duration": 1493288400,"eval_count": 100,"eval_duration": 7411968100,"response": "","context": [151644,---省略--100143,106510,1773]},"type": "Generation"}]],"llm_output": null,"run": null,"type": "LLMResult"
}
[chain/start] [chain:RunnableWithFallbacks > chain:RunnableSequence > parser:StrOutputParser] Entering Parser run with input:
{"input": "我是來自阿里云的大規模語言模型——通義千問。我被設計成能夠理解和生成各種形式的語言文本,包括但不限于中文、英文、法文等。\n\n我可以根據你的問題或指令進行回答,甚至可以自動生成與主題相關的文章或段落。無論你有什么需求,我都會盡力提供最準確和最有幫助的答案。\n\n感謝你選擇與我交流!如果你有任何疑問或需要進一步的幫助,請隨時告訴我,我會盡力為你提供最好的支持和服務。"
}
[chain/end] [chain:RunnableWithFallbacks > chain:RunnableSequence > parser:StrOutputParser] [5ms] Exiting Parser run with output:
{"output": "我是來自阿里云的大規模語言模型——通義千問。我被設計成能夠理解和生成各種形式的語言文本,包括但不限于中文、英文、法文等。\n\n我可以根據你的問題或指令進行回答,甚至可以自動生成與主題相關的文章或段落。無論你有什么需求,我都會盡力提供最準確和最有幫助的答案。\n\n感謝你選擇與我交流!如果你有任何疑問或需要進一步的幫助,請隨時告訴我,我會盡力為你提供最好的支持和服務。"
}
[chain/end] [chain:RunnableWithFallbacks > chain:RunnableSequence] [12.52s] Exiting Chain run with output:
{"output": "我是來自阿里云的大規模語言模型——通義千問。我被設計成能夠理解和生成各種形式的語言文本,包括但不限于中文、英文、法文等。\n\n我可以根據你的問題或指令進行回答,甚至可以自動生成與主題相關的文章或段落。無論你有什么需求,我都會盡力提供最準確和最有幫助的答案。\n\n感謝你選擇與我交流!如果你有任何疑問或需要進一步的幫助,請隨時告訴我,我會盡力為你提供最好的支持和服務。"
}
[chain/end] [chain:RunnableWithFallbacks] [12.55s] Exiting Chain run with output:
{"output": "我是來自阿里云的大規模語言模型——通義千問。我被設計成能夠理解和生成各種形式的語言文本,包括但不限于中文、英文、法文等。\n\n我可以根據你的問題或指令進行回答,甚至可以自動生成與主題相關的文章或段落。無論你有什么需求,我都會盡力提供最準確和最有幫助的答案。\n\n感謝你選擇與我交流!如果你有任何疑問或需要進一步的幫助,請隨時告訴我,我會盡力為你提供最好的支持和服務。"
}
我是來自阿里云的大規模語言模型——通義千問。我被設計成能夠理解和生成各種形式的語言文本,包括但不限于中文、英文、法文等。我可以根據你的問題或指令進行回答,甚至可以自動生成與主題相關的文章或段落。無論你有什么需求,我都會盡力提供最準確和最有幫助的答案。感謝你選擇與我交流!如果你有任何疑問或需要進一步的幫助,請隨時告訴我,我會盡力為你提供最好的支持和服務。Process finished with exit code 0

執行過程有詳細的錯誤信息

在這里插入圖片描述

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

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

相關文章

打包python文件生成exe

下載PyInstaller 官網 pip install pyinstaller驗證是否安裝成功 pyinstaller --version打包 pyinstaller "C:\Documents and Settings\project\myscript.py"會生成.spec,build,dist三項,其中build,dist為文件夾,dist包含最后的可執行文件…

【Axure元件分享】年月日范圍選擇器

年月日范圍選擇器是常用元件,列表查詢條件、表單輸入通常需要用到。這里采用單日歷面板布局設計。 元件獲取方式:

使用PyTorch實現ResNet:從殘差塊到完整模型訓練

ResNet(殘差網絡)是深度學習中的經典模型,通過引入殘差連接解決了深層網絡訓練中的梯度消失問題。本文將從殘差塊的定義開始,逐步實現一個ResNet模型,并在Fashion MNIST數據集上進行訓練和測試。 1. 殘差塊&#xff08…

Transformer架構詳解:從Encoder到Decoder的完整旅程

引言:從Self-Attention到完整架構 在上一篇文章中,我們深入剖析了Self-Attention機制的核心原理。然而,Transformer的魅力遠不止于此——其Encoder-Decoder架構通過巧妙的模塊化設計,實現了從機器翻譯到文本生成的廣泛能力。本文…

Docker學習--容器生命周期管理相關命令--docker create 命令

docker create 命令作用: 會根據指定的鏡像和參數創建一個容器實例,但容器只會在創建時進行初始化,并不會執行任何進程。 語法: docker create[參數] IMAGE(要執行的鏡像) [COMMAND](在容器內部…

【C++11】異步編程

異步編程的概念 什么是異步? 異步編程是一種編程范式,允許程序在等待某些操作時繼續執行其它任務,而不是阻塞或等待這些操作完成。 異步編程vs同步編程? 在傳統的同步編程中,代碼按順序同步執行,每個操作需…

FastAPI與ASGI深度整合實戰指南

一、ASGI技術體系解析 1. ASGI協議棧全景圖 #mermaid-svg-a5XPEshAsf64SBkw {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-a5XPEshAsf64SBkw .error-icon{fill:#552222;}#mermaid-svg-a5XPEshAsf64SBkw .error-te…

數組與特殊壓縮矩陣

一、數組的基本特性 定義: int arr[3][3]; // 3x3二維數組 存儲方式: 行優先存儲(C語言默認):元素按行連續存儲。 列優先存儲:需手動實現(如科學計算中的Fortran風格)。 訪問元素…

Word 插入無頁眉頁碼的空白頁(即插入奇數頁)

遇到問題 例如,我的第5章的頁碼是58,偶數頁,我想改成奇數頁59,需要在57頁和58頁之間插入奇數頁。 解決辦法 單擊上一頁(57頁),打開“視圖-大綱”,找到要插入奇數頁的位置&#x…

OpenCV 從入門到精通(day_05)

1. 模板匹配 1.1 什么是模板匹配 模板匹配就是用模板圖(通常是一個小圖)在目標圖像(通常是一個比模板圖大的圖片)中不斷的滑動比較,通過某種比較方法來判斷是否匹配成功。 1.2 匹配方法 rescv2.matchTemplate(image, …

【目標檢測】【深度學習】【Pytorch版本】YOLOV3模型算法詳解

【目標檢測】【深度學習】【Pytorch版本】YOLOV3模型算法詳解 文章目錄 【目標檢測】【深度學習】【Pytorch版本】YOLOV3模型算法詳解前言YOLOV3的模型結構YOLOV3模型的基本執行流程YOLOV3模型的網絡參數 YOLOV3的核心思想前向傳播階段反向傳播階段 總結 前言 YOLOV3是由華盛頓…

LN2220 2A 高效率升壓 DC/DC 電壓調整器

1、產品概述 LN2220 是一款微小型、高效率、升壓型 DC/DC 調整器。 電路由電流模 PWM 控制環路,誤差放大器,斜波補償電路, 比較器和功率開關等模塊組成。該芯片可在較寬負載范圍內 高效穩定的工作,內置一個 4A 的功率開關和…

【大模型基礎_毛玉仁】6.3 知識檢索

目錄 6.3 知識檢索6.3.1 知識庫構建1)數據采集及預處理2)知識庫增強 6.3.2 查詢增強1)查詢語義增強2)查詢內容增強 6.3.3 檢索器1)判別式檢索器2)生成式檢索器 6.3.4 檢索效率增強1)相似度索引算…

靜態方法和實例方法

在 Java 中,?靜態方法(static method)?和?實例方法(instance method)?是兩種不同類型的方法,它們在調用方式、內存分配和訪問權限上有顯著區別。以下是詳細對比: ?1. 靜態方法(…

Lua環境搭建+Lua基本語法

前期準備: 搜索并下載安裝LuaForWindows,例: 安裝完成后開啟cmd窗口,輸入lua 出現版本號證明成功下載安裝 使用Sublime Text編輯器編寫Lua 使用瀏覽器或CSDN搜索Sublime Text下載并安裝,安裝成功后打開編輯器,編輯…

FFmpeg錄制屏幕和音頻

一、FFmpeg命令行實現錄制屏幕和音頻 1、Windows 示例 #include <cstdlib> #include <string> #include <iostream>int main() {// FFmpeg 命令行&#xff08;錄制屏幕 麥克風音頻&#xff09;std::string command "ffmpeg -f gdigrab -framerate 3…

【數據集】多視圖文本數據集

多視圖文本數據集指的是包含多個不同類型或來源的信息的文本數據集。不同視圖可以來源于不同的數據模式&#xff08;如原始文本、元數據、網絡結構等&#xff09;&#xff0c;或者不同的文本表示方法&#xff08;如 TF-IDF、詞嵌入、主題分布等&#xff09;。這些數據集常用于多…

C++ 繼承方式使用場景(極簡版)

1. 公有繼承&#xff08;public&#xff09; 什么時候用&#xff1f; “是一個”&#xff08;is-a&#xff09;關系&#xff1a;派生類 是 基類的一種。 例&#xff1a;class Dog : public Animal&#xff08;狗是動物&#xff09; 最常見&#xff0c;90%的繼承都用它。 2. 保…

Ubuntu 系統 Docker 中搭建 CUDA cuDNN 開發環境

CUDA 是 NVIDIA 推出的并行計算平臺和編程模型&#xff0c;利用 GPU 多核心架構加速計算任務&#xff0c;廣泛應用于深度學習、科學計算等領域。cuDNN 是基于 CUDA 的深度神經網絡加速庫&#xff0c;為深度學習框架提供高效卷積、池化等操作的優化實現&#xff0c;提升模型訓練…

高密度任務下的挑戰與破局:數字樣機助力火箭發射提效提質

2025年4月1日12時&#xff0c;在酒泉衛星發射中心&#xff0c;長征二號丁運載火箭順利升空&#xff0c;成功將一顆衛星互聯網技術試驗衛星送入預定軌道&#xff0c;發射任務圓滿完成。這是長征二號丁火箭的第97次發射&#xff0c;也是長征系列火箭的第567次發射。 執行本次任務…