Source code for langchain_community.callbacks.trubrics_callback
importosfromtypingimportAny,Dict,List,OptionalfromuuidimportUUIDfromlangchain_core.callbacksimportBaseCallbackHandlerfromlangchain_core.messagesimport(AIMessage,BaseMessage,ChatMessage,FunctionMessage,HumanMessage,SystemMessage,)fromlangchain_core.outputsimportLLMResultdef_convert_message_to_dict(message:BaseMessage)->dict:message_dict:Dict[str,Any]ifisinstance(message,ChatMessage):message_dict={"role":message.role,"content":message.content}elifisinstance(message,HumanMessage):message_dict={"role":"user","content":message.content}elifisinstance(message,AIMessage):message_dict={"role":"assistant","content":message.content}if"function_call"inmessage.additional_kwargs:message_dict["function_call"]=message.additional_kwargs["function_call"]# If function call only, content is None not empty stringifmessage_dict["content"]=="":message_dict["content"]=Noneelifisinstance(message,SystemMessage):message_dict={"role":"system","content":message.content}elifisinstance(message,FunctionMessage):message_dict={"role":"function","content":message.content,"name":message.name,}else:raiseTypeError(f"Got unknown type {message}")if"name"inmessage.additional_kwargs:message_dict["name"]=message.additional_kwargs["name"]returnmessage_dict
[docs]classTrubricsCallbackHandler(BaseCallbackHandler):""" Callback handler for Trubrics. Args: project: a trubrics project, default project is "default" email: a trubrics account email, can equally be set in env variables password: a trubrics account password, can equally be set in env variables **kwargs: all other kwargs are parsed and set to trubrics prompt variables, or added to the `metadata` dict """
[docs]def__init__(self,project:str="default",email:Optional[str]=None,password:Optional[str]=None,**kwargs:Any,)->None:super().__init__()try:fromtrubricsimportTrubricsexceptImportError:raiseImportError("The TrubricsCallbackHandler requires installation of ""the trubrics package. ""Please install it with `pip install trubrics`.")self.trubrics=Trubrics(project=project,email=emailoros.environ["TRUBRICS_EMAIL"],password=passwordoros.environ["TRUBRICS_PASSWORD"],)self.config_model:dict={}self.prompt:Optional[str]=Noneself.messages:Optional[list]=Noneself.trubrics_kwargs:Optional[dict]=kwargsifkwargselseNone