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;
34#[cfg(feature = "otlp")]
35pub mod otlp;
36pub mod pricing;
37mod run_tree;
38mod run_type;
39#[cfg(feature = "opentelemetry")]
40mod semconv;
41pub mod tracing;
42
43pub use base::{CallbackHandler, CallbackManager};
44#[cfg(feature = "opentelemetry")]
45pub use handlers::OtelHandler;
46pub use handlers::{
47 FileCallbackHandler, GenericHandler, LangSmithHandler, LogFormat, StdOutHandler,
48};
49pub use langsmith_client::{LangSmithClient, LangSmithConfig, LangSmithError};
50pub use pricing::{estimate_cost_usd, price_for, ModelPrice};
51pub use run_tree::{RunCreate, RunTree, RunUpdate};
52pub use run_type::RunType;
53
54// Tracing exports
55#[cfg(feature = "opentelemetry")]
56pub use tracing::OtelTracingBackend;
57pub use tracing::{
58 aggregate_cost, clear_span_stack, init_task_span_stack, ConsoleTracingBackend,
59 InMemoryTracingBackend, SpanGuard, SpanId, SpanKind, SpanStatus, SpanTokenUsage, TraceNode,
60 TraceSpan, Tracer, TracingBackend,
61};