use crate::BoxFuture;
use crate::messages::Message;
use serde_json::Value;
pub trait CallbackHandler: Send + Sync {
fn on_llm_start<'a>(
&'a self,
_model_type: &'a str,
_messages: &'a [Message],
) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn on_llm_end<'a>(&'a self, _response: &'a Value) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn on_tool_start<'a>(&'a self, _tool_name: &'a str, _input: &'a Value) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn on_tool_end<'a>(&'a self, _tool_name: &'a str, _output: &'a str) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn on_tool_error<'a>(&'a self, _tool_name: &'a str, _error: &'a str) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn on_retry<'a>(&'a self, _attempt: u32, _error: &'a str) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn on_chain_start<'a>(&'a self, _chain_name: &'a str) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn on_chain_end<'a>(&'a self, _output: &'a Value) -> BoxFuture<'a, ()> {
Box::pin(async {})
}
fn ignore_tool(&self) -> bool {
false
}
fn ignore_llm(&self) -> bool {
false
}
}