@@ -741,10 +741,49 @@ def _handle_retriever_error(
741741class OpenlayerHandler (OpenlayerHandlerMixin , BaseCallbackHandlerClass ): # type: ignore[misc]
742742 """LangChain callback handler that logs to Openlayer."""
743743
744+ def __init__ (
745+ self ,
746+ ignore_llm = False ,
747+ ignore_chat_model = False ,
748+ ignore_chain = False ,
749+ ignore_retriever = False ,
750+ ignore_agent = False ,
751+ ** kwargs : Any ,
752+ ) -> None :
753+ super ().__init__ (** kwargs )
754+ # Store the ignore flags as instance variables
755+ self ._ignore_llm = ignore_llm
756+ self ._ignore_chat_model = ignore_chat_model
757+ self ._ignore_chain = ignore_chain
758+ self ._ignore_retriever = ignore_retriever
759+ self ._ignore_agent = ignore_agent
760+
761+ @property
762+ def ignore_llm (self ) -> bool :
763+ return self ._ignore_llm
764+
765+ @property
766+ def ignore_chat_model (self ) -> bool :
767+ return self ._ignore_chat_model
768+
769+ @property
770+ def ignore_chain (self ) -> bool :
771+ return self ._ignore_chain
772+
773+ @property
774+ def ignore_retriever (self ) -> bool :
775+ return self ._ignore_retriever
776+
777+ @property
778+ def ignore_agent (self ) -> bool :
779+ return self ._ignore_agent
780+
744781 def on_llm_start (
745782 self , serialized : Dict [str , Any ], prompts : List [str ], ** kwargs : Any
746783 ) -> Any :
747784 """Run when LLM starts running."""
785+ if self .ignore_llm :
786+ return
748787 return self ._handle_llm_start (serialized , prompts , ** kwargs )
749788
750789 def on_chat_model_start (
@@ -754,16 +793,22 @@ def on_chat_model_start(
754793 ** kwargs : Any ,
755794 ) -> Any :
756795 """Run when Chat Model starts running."""
796+ if self .ignore_chat_model :
797+ return
757798 return self ._handle_chat_model_start (serialized , messages , ** kwargs )
758799
759800 def on_llm_end (self , response : "langchain_schema.LLMResult" , ** kwargs : Any ) -> Any :
760801 """Run when LLM ends running."""
802+ if self .ignore_llm :
803+ return
761804 return self ._handle_llm_end (response , ** kwargs )
762805
763806 def on_llm_error (
764807 self , error : Union [Exception , KeyboardInterrupt ], ** kwargs : Any
765808 ) -> Any :
766809 """Run when LLM errors."""
810+ if self .ignore_llm :
811+ return
767812 return self ._handle_llm_error (error , ** kwargs )
768813
769814 def on_llm_new_token (self , token : str , ** kwargs : Any ) -> Any :
@@ -774,32 +819,44 @@ def on_chain_start(
774819 self , serialized : Dict [str , Any ], inputs : Dict [str , Any ], ** kwargs : Any
775820 ) -> Any :
776821 """Run when chain starts running."""
822+ if self .ignore_chain :
823+ return
777824 return self ._handle_chain_start (serialized , inputs , ** kwargs )
778825
779826 def on_chain_end (self , outputs : Dict [str , Any ], ** kwargs : Any ) -> Any :
780827 """Run when chain ends running."""
828+ if self .ignore_chain :
829+ return
781830 return self ._handle_chain_end (outputs , ** kwargs )
782831
783832 def on_chain_error (
784833 self , error : Union [Exception , KeyboardInterrupt ], ** kwargs : Any
785834 ) -> Any :
786835 """Run when chain errors."""
836+ if self .ignore_chain :
837+ return
787838 return self ._handle_chain_error (error , ** kwargs )
788839
789840 def on_tool_start (
790841 self , serialized : Dict [str , Any ], input_str : str , ** kwargs : Any
791842 ) -> Any :
792843 """Run when tool starts running."""
844+ if self .ignore_retriever :
845+ return
793846 return self ._handle_tool_start (serialized , input_str , ** kwargs )
794847
795848 def on_tool_end (self , output : str , ** kwargs : Any ) -> Any :
796849 """Run when tool ends running."""
850+ if self .ignore_retriever :
851+ return
797852 return self ._handle_tool_end (output , ** kwargs )
798853
799854 def on_tool_error (
800855 self , error : Union [Exception , KeyboardInterrupt ], ** kwargs : Any
801856 ) -> Any :
802857 """Run when tool errors."""
858+ if self .ignore_retriever :
859+ return
803860 return self ._handle_tool_error (error , ** kwargs )
804861
805862 def on_text (self , text : str , ** kwargs : Any ) -> Any :
@@ -810,23 +867,61 @@ def on_agent_action(
810867 self , action : "langchain_schema.AgentAction" , ** kwargs : Any
811868 ) -> Any :
812869 """Run on agent action."""
870+ if self .ignore_agent :
871+ return
813872 return self ._handle_agent_action (action , ** kwargs )
814873
815874 def on_agent_finish (
816875 self , finish : "langchain_schema.AgentFinish" , ** kwargs : Any
817876 ) -> Any :
818877 """Run on agent end."""
878+ if self .ignore_agent :
879+ return
819880 return self ._handle_agent_finish (finish , ** kwargs )
820881
821882
822883class AsyncOpenlayerHandler (OpenlayerHandlerMixin , AsyncCallbackHandlerClass ): # type: ignore[misc]
823884 """Async LangChain callback handler that logs to Openlayer."""
824885
825- def __init__ (self , ** kwargs : Any ) -> None :
886+ def __init__ (
887+ self ,
888+ ignore_llm = False ,
889+ ignore_chat_model = False ,
890+ ignore_chain = False ,
891+ ignore_retriever = False ,
892+ ignore_agent = False ,
893+ ** kwargs : Any ,
894+ ) -> None :
826895 super ().__init__ (** kwargs )
896+ # Store the ignore flags as instance variables
897+ self ._ignore_llm = ignore_llm
898+ self ._ignore_chat_model = ignore_chat_model
899+ self ._ignore_chain = ignore_chain
900+ self ._ignore_retriever = ignore_retriever
901+ self ._ignore_agent = ignore_agent
827902 # For async: manage our own trace mapping since context vars are unreliable
828903 self ._traces_by_root : Dict [UUID , traces .Trace ] = {}
829904
905+ @property
906+ def ignore_llm (self ) -> bool :
907+ return self ._ignore_llm
908+
909+ @property
910+ def ignore_chat_model (self ) -> bool :
911+ return self ._ignore_chat_model
912+
913+ @property
914+ def ignore_chain (self ) -> bool :
915+ return self ._ignore_chain
916+
917+ @property
918+ def ignore_retriever (self ) -> bool :
919+ return self ._ignore_retriever
920+
921+ @property
922+ def ignore_agent (self ) -> bool :
923+ return self ._ignore_agent
924+
830925 def _start_step (
831926 self ,
832927 run_id : UUID ,
@@ -965,6 +1060,8 @@ def _process_and_upload_async_trace(self, trace: traces.Trace) -> None:
9651060 async def on_llm_start (
9661061 self , serialized : Dict [str , Any ], prompts : List [str ], ** kwargs : Any
9671062 ) -> Any :
1063+ if self .ignore_llm :
1064+ return
9681065 return self ._handle_llm_start (serialized , prompts , ** kwargs )
9691066
9701067 async def on_chat_model_start (
@@ -973,16 +1070,22 @@ async def on_chat_model_start(
9731070 messages : List [List ["langchain_schema.BaseMessage" ]],
9741071 ** kwargs : Any ,
9751072 ) -> Any :
1073+ if self .ignore_chat_model :
1074+ return
9761075 return self ._handle_chat_model_start (serialized , messages , ** kwargs )
9771076
9781077 async def on_llm_end (
9791078 self , response : "langchain_schema.LLMResult" , ** kwargs : Any
9801079 ) -> Any :
1080+ if self .ignore_llm :
1081+ return
9811082 return self ._handle_llm_end (response , ** kwargs )
9821083
9831084 async def on_llm_error (
9841085 self , error : Union [Exception , KeyboardInterrupt ], ** kwargs : Any
9851086 ) -> Any :
1087+ if self .ignore_llm :
1088+ return
9861089 return self ._handle_llm_error (error , ** kwargs )
9871090
9881091 async def on_llm_new_token (self , token : str , ** kwargs : Any ) -> Any :
@@ -991,27 +1094,39 @@ async def on_llm_new_token(self, token: str, **kwargs: Any) -> Any:
9911094 async def on_chain_start (
9921095 self , serialized : Dict [str , Any ], inputs : Dict [str , Any ], ** kwargs : Any
9931096 ) -> Any :
1097+ if self .ignore_chain :
1098+ return
9941099 return self ._handle_chain_start (serialized , inputs , ** kwargs )
9951100
9961101 async def on_chain_end (self , outputs : Dict [str , Any ], ** kwargs : Any ) -> Any :
1102+ if self .ignore_chain :
1103+ return
9971104 return self ._handle_chain_end (outputs , ** kwargs )
9981105
9991106 async def on_chain_error (
10001107 self , error : Union [Exception , KeyboardInterrupt ], ** kwargs : Any
10011108 ) -> Any :
1109+ if self .ignore_chain :
1110+ return
10021111 return self ._handle_chain_error (error , ** kwargs )
10031112
10041113 async def on_tool_start (
10051114 self , serialized : Dict [str , Any ], input_str : str , ** kwargs : Any
10061115 ) -> Any :
1116+ if self .ignore_retriever : # Note: tool events use ignore_retriever flag
1117+ return
10071118 return self ._handle_tool_start (serialized , input_str , ** kwargs )
10081119
10091120 async def on_tool_end (self , output : str , ** kwargs : Any ) -> Any :
1121+ if self .ignore_retriever :
1122+ return
10101123 return self ._handle_tool_end (output , ** kwargs )
10111124
10121125 async def on_tool_error (
10131126 self , error : Union [Exception , KeyboardInterrupt ], ** kwargs : Any
10141127 ) -> Any :
1128+ if self .ignore_retriever :
1129+ return
10151130 return self ._handle_tool_error (error , ** kwargs )
10161131
10171132 async def on_text (self , text : str , ** kwargs : Any ) -> Any :
@@ -1020,22 +1135,32 @@ async def on_text(self, text: str, **kwargs: Any) -> Any:
10201135 async def on_agent_action (
10211136 self , action : "langchain_schema.AgentAction" , ** kwargs : Any
10221137 ) -> Any :
1138+ if self .ignore_agent :
1139+ return
10231140 return self ._handle_agent_action (action , ** kwargs )
10241141
10251142 async def on_agent_finish (
10261143 self , finish : "langchain_schema.AgentFinish" , ** kwargs : Any
10271144 ) -> Any :
1145+ if self .ignore_agent :
1146+ return
10281147 return self ._handle_agent_finish (finish , ** kwargs )
10291148
10301149 async def on_retriever_start (
10311150 self , serialized : Dict [str , Any ], query : str , ** kwargs : Any
10321151 ) -> Any :
1152+ if self .ignore_retriever :
1153+ return
10331154 return self ._handle_retriever_start (serialized , query , ** kwargs )
10341155
10351156 async def on_retriever_end (self , documents : List [Any ], ** kwargs : Any ) -> Any :
1157+ if self .ignore_retriever :
1158+ return
10361159 return self ._handle_retriever_end (documents , ** kwargs )
10371160
10381161 async def on_retriever_error (self , error : Exception , ** kwargs : Any ) -> Any :
1162+ if self .ignore_retriever :
1163+ return
10391164 return self ._handle_retriever_error (error , ** kwargs )
10401165
10411166 async def on_retry (self , retry_state : Any , ** kwargs : Any ) -> Any :
0 commit comments