langsmith_rust/observability/
observer.rs1use serde_json::Value;
2
3pub trait Observer: Send + Sync {
5 fn on_node_start(&self, node_name: &str, inputs: &Value);
7
8 fn on_node_end(&self, node_name: &str, outputs: &Value);
10
11 fn on_node_error(&self, node_name: &str, error: &str);
13}
14
15pub struct LangSmithObserver {
17 }
19
20impl LangSmithObserver {
21 pub fn new() -> Self {
22 Self {}
23 }
24}
25
26impl Observer for LangSmithObserver {
27 fn on_node_start(&self, node_name: &str, _inputs: &Value) {
28 eprintln!("LangSmithObserver: Node '{}' started", node_name);
31 }
32
33 fn on_node_end(&self, node_name: &str, _outputs: &Value) {
34 eprintln!("LangSmithObserver: Node '{}' completed", node_name);
36 }
37
38 fn on_node_error(&self, node_name: &str, error: &str) {
39 eprintln!("LangSmithObserver: Node '{}' error: {}", node_name, error);
41 }
42}
43
44impl Default for LangSmithObserver {
45 fn default() -> Self {
46 Self::new()
47 }
48}
49