Skip to main content

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// Pure attribute-name vocabulary (no OTel SDK types): compiled even without
40// the `opentelemetry` feature so instrumentation (e.g. lc-agents stamping run
41// metadata) can reference the names without pulling in the SDK.
42pub mod semconv;
43pub mod tracing;
44
45pub use base::{CallbackHandler, CallbackManager};
46#[cfg(feature = "opentelemetry")]
47pub use handlers::OtelHandler;
48pub use handlers::{
49    FileCallbackHandler, GenericHandler, LangSmithHandler, LogFormat, StdOutHandler,
50};
51pub use langsmith_client::{LangSmithClient, LangSmithConfig, LangSmithError};
52pub use pricing::{estimate_cost_usd, price_for, ModelPrice};
53pub use run_tree::{RunCreate, RunTree, RunUpdate};
54pub use run_type::RunType;
55
56// Tracing exports
57#[cfg(feature = "opentelemetry")]
58pub use tracing::OtelTracingBackend;
59pub use tracing::{
60    aggregate_cost, clear_span_stack, init_task_span_stack, ConsoleTracingBackend,
61    InMemoryTracingBackend, SpanGuard, SpanId, SpanKind, SpanStatus, SpanTokenUsage, TraceNode,
62    TraceSpan, Tracer, TracingBackend,
63};