跳到主要內容

Callbacks

先決條件

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

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

Callback 事件

事件事件觸發器關聯方法
聊天模型開始當聊天模型開始時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

Callback 處理器

Callback 處理器可以是 syncasync

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

傳遞 callbacks

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

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

建構子 callbacks 的範圍僅限於定義它們的物件。它們不會被物件的子物件繼承。

如果您正在建立自訂鏈或 runnable,您需要記住將請求時間 callbacks 傳播到任何子物件。

Python <=3.10 中的非同步

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

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

有關如何使用 callbacks 的具體資訊,請參閱此處相關的操作指南


此頁面是否對您有幫助?