跳到主要內容
Open on GitHub

回呼

先決條件

LangChain 提供了一個回呼系統,讓您可以掛鉤到 LLM 應用程式的各個階段。這對於日誌記錄、監控、串流和其他任務非常有用。

您可以使用 API 中大多數物件上提供的 callbacks 引數來訂閱這些事件。此引數是處理常式物件的列表,這些物件應實作以下更詳細描述的一或多個方法。

回呼事件

事件事件觸發器關聯方法
聊天模型開始當聊天模型開始時on_chat_model_start
LLM 開始當 llm 開始時on_llm_start
LLM 新 Token當 llm 或聊天模型發出新 Token 時on_llm_new_token
LLM 結束當 llm 或聊天模型結束時on_llm_end
LLM 錯誤當 llm 或聊天模型發生錯誤時on_llm_error
鏈開始當鏈開始執行時on_chain_start
鏈結束當鏈結束時on_chain_end
鏈錯誤當鏈發生錯誤時on_chain_error
工具開始當工具開始執行時on_tool_start
工具結束當工具結束時on_tool_end
工具錯誤當工具發生錯誤時on_tool_error
代理動作當代理採取動作時on_agent_action
代理完成當代理結束時on_agent_finish
檢索器開始當檢索器開始時on_retriever_start
檢索器結束當檢索器結束時on_retriever_end
檢索器錯誤當檢索器發生錯誤時on_retriever_error
文本當任意文本執行時on_text
重試當重試事件執行時on_retry

回呼處理器

回呼處理器可以是 syncasync

在執行階段,LangChain 會配置適當的回呼管理器(例如,CallbackManagerAsyncCallbackManager),它將負責在事件觸發時,在每個「已註冊」的回呼處理器上呼叫適當的方法。

傳遞回呼

callbacks 屬性在整個 API 中的大多數物件(模型、工具、代理等)上的兩個不同位置都可用

  • 請求時回呼:在請求時與輸入資料一起傳遞。在所有標準 Runnable 物件上都可用。這些回呼會由定義它們的物件的所有子項繼承。例如,chain.invoke({"number": 25}, {"callbacks": [handler]})
  • 建構函式回呼chain = TheNameOfSomeChain(callbacks=[handler])。這些回呼作為引數傳遞給物件的建構函式。回呼的範圍僅限於定義它們的物件,並且不會由物件的任何子項繼承。
警告

建構函式回呼的範圍僅限於定義它們的物件。它們不會由物件的子項繼承。

如果您要建立自訂鏈或可執行物件,則需要記住將請求時回呼傳播到任何子物件。

Python <=3.10 中的非同步

任何 RunnableLambdaRunnableGeneratorTool,如果它調用其他可執行物件,並且在 python<=3.10 中以 async 方式執行,則必須手動將回呼傳播到子物件。這是因為在這種情況下,LangChain 無法自動將回呼傳播到子物件。

這是您可能無法看到從自訂可執行物件或工具發出事件的常見原因。

有關如何使用回呼的詳細資訊,請參閱此處的相關操作指南


此頁面是否對您有幫助?