lc_callbacks/lib.rs
1#![warn(missing_docs)]
2// lc-callbacks/src/lib.rs
3//! Callback and tracing system
4//!
5//! This module provides callbacks for observability, tracing, and monitoring.
6//!
7//! # Quick Start
8//!
9//! ```rust,ignore
10//! use lc_callbacks::{CallbackManager, StdOutHandler, LangSmithHandler};
11//! use std::sync::Arc;
12//!
13//! // Create callback manager with handlers
14//! let manager = CallbackManager::new()
15//! .add_handler(Arc::new(StdOutHandler::new()))
16//! .add_handler(Arc::new(LangSmithHandler::from_env()?));
17//!
18//! // Use with LLM or Agent
19//! let llm = OpenAIChat::new(config);
20//! // llm.with_callbacks(Arc::new(manager));
21//! ```
22//!
23//! # Environment Variables for LangSmith
24//!
25//! - `LANGSMITH_API_KEY`: API key (required, starts with "ls_")
26//! - `LANGSMITH_TRACING`: Enable tracing (default: "true")
27//! - `LANGSMITH_PROJECT`: Project name (default: "default")
28//! - `LANGSMITH_ENDPOINT`: API endpoint (default: LangSmith official)
29//! - `LANGSMITH_WORKSPACE_ID`: Workspace ID (required for org accounts)
30
31mod base;
32pub mod handlers;
33mod langsmith_client;
34mod run_tree;
35mod run_type;
36pub mod tracing;
37
38pub use base::{CallbackHandler, CallbackManager};
39#[cfg(feature = "opentelemetry")]
40pub use handlers::OtelHandler;
41pub use handlers::{
42 FileCallbackHandler, GenericHandler, LangSmithHandler, LogFormat, StdOutHandler,
43};
44pub use langsmith_client::{LangSmithClient, LangSmithConfig, LangSmithError};
45pub use run_tree::{RunCreate, RunTree, RunUpdate};
46pub use run_type::RunType;
47
48// Tracing exports
49#[cfg(feature = "opentelemetry")]
50pub use tracing::OtelTracingBackend;
51pub use tracing::{
52 clear_span_stack, init_task_span_stack, ConsoleTracingBackend, InMemoryTracingBackend,
53 SpanGuard, SpanId, SpanKind, SpanStatus, SpanTokenUsage, TraceNode, TraceSpan, Tracer,
54 TracingBackend,
55};