Movatterモバイル変換


[0]ホーム

URL:


Skip to main content
OurBuilding Ambient Agents with LangGraph course is now available on LangChain Academy!
Open In ColabOpen on GitHub

How to propagate callbacks constructor

Prerequisites

This guide assumes familiarity with the following concepts:

Most LangChain modules allow you to passcallbacks directly into the constructor (i.e., initializer). In this case, the callbacks will only be called for that instance (and any nested runs).

warning

Constructor callbacks are scoped only to the object they are defined on. They arenot inherited by children of the object. This can lead to confusing behavior,and it's generally better to pass callbacks as a run time argument.

Here's an example:

from typingimport Any, Dict, List

from langchain_anthropicimport ChatAnthropic
from langchain_core.callbacksimport BaseCallbackHandler
from langchain_core.messagesimport BaseMessage
from langchain_core.outputsimport LLMResult
from langchain_core.promptsimport ChatPromptTemplate


classLoggingHandler(BaseCallbackHandler):
defon_chat_model_start(
self, serialized: Dict[str, Any], messages: List[List[BaseMessage]],**kwargs
)->None:
print("Chat model started")

defon_llm_end(self, response: LLMResult,**kwargs)->None:
print(f"Chat model ended, response:{response}")

defon_chain_start(
self, serialized: Dict[str, Any], inputs: Dict[str, Any],**kwargs
)->None:
print(f"Chain{serialized.get('name')} started")

defon_chain_end(self, outputs: Dict[str, Any],**kwargs)->None:
print(f"Chain ended, outputs:{outputs}")


callbacks=[LoggingHandler()]
llm= ChatAnthropic(model="claude-3-sonnet-20240229", callbacks=callbacks)
prompt= ChatPromptTemplate.from_template("What is 1 + {number}?")

chain= prompt| llm

chain.invoke({"number":"2"})
Chat model started
Chat model ended, response: generations=[[ChatGeneration(text='1 + 2 = 3', message=AIMessage(content='1 + 2 = 3', response_metadata={'id': 'msg_01CdKsRmeS9WRb8BWnHDEHm7', 'model': 'claude-3-sonnet-20240229', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 16, 'output_tokens': 13}}, id='run-2d7fdf2a-7405-4e17-97c0-67e6b2a65305-0'))]] llm_output={'id': 'msg_01CdKsRmeS9WRb8BWnHDEHm7', 'model': 'claude-3-sonnet-20240229', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 16, 'output_tokens': 13}} run=None
AIMessage(content='1 + 2 = 3', response_metadata={'id': 'msg_01CdKsRmeS9WRb8BWnHDEHm7', 'model': 'claude-3-sonnet-20240229', 'stop_reason': 'end_turn', 'stop_sequence': None, 'usage': {'input_tokens': 16, 'output_tokens': 13}}, id='run-2d7fdf2a-7405-4e17-97c0-67e6b2a65305-0')

You can see that we only see events from the chat model run - no chain events from the prompt or broader chain.

Next steps

You've now learned how to pass callbacks into a constructor.

Next, check out the other how-to guides in this section, such as how topass callbacks at runtime.


[8]ページ先頭

©2009-2025 Movatter.jp