use serde_json::Value;
pub trait Observer: Send + Sync {
fn on_node_start(&self, node_name: &str, inputs: &Value);
fn on_node_end(&self, node_name: &str, outputs: &Value);
fn on_node_error(&self, node_name: &str, error: &str);
}
pub struct LangSmithObserver {
}
impl LangSmithObserver {
pub fn new() -> Self {
Self {}
}
}
impl Observer for LangSmithObserver {
fn on_node_start(&self, node_name: &str, _inputs: &Value) {
eprintln!("LangSmithObserver: Node '{}' started", node_name);
}
fn on_node_end(&self, node_name: &str, _outputs: &Value) {
eprintln!("LangSmithObserver: Node '{}' completed", node_name);
}
fn on_node_error(&self, node_name: &str, error: &str) {
eprintln!("LangSmithObserver: Node '{}' error: {}", node_name, error);
}
}
impl Default for LangSmithObserver {
fn default() -> Self {
Self::new()
}
}