File size: 1,094 Bytes
3487f22
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""
Shared observability setup for full contract analysis pipeline
Initializes braintrust logger used by all agent nodes for tracing

Usage in any agent:
    from observability import get_logger
    logger = get_logger()
    if logger:
        with logger.start_span("my_node") as span:
            result = do_work()
            span.log(input={...}, output={...}, metadata={...})

"""

import os
import braintrust  
from dotenv import load_dotenv

load_dotenv()

BRAINTRUST_PROJECT = "contract-pipeline-evals"  

_logger = None 

def get_logger():
    """Return initialized Braintrust logger (None if BRAINTRUST_API_KEY is missing)"""
    global _logger
    if _logger is None:
        api_key = os.environ.get("BRAINTRUST_API_KEY")
        if api_key:
            _logger = braintrust.init_logger(  
                project=BRAINTRUST_PROJECT,
                api_key=api_key,
            )
        else:
            print(
                "[observability] BRAINTRUST_API_KEY not set — "
                "tracing disabled. Add it to .env to enable spans."
            )
    return _logger