Spaces:
Runtime error
Runtime error
from __future__ import annotations | |
import logging | |
from contextlib import contextmanager | |
from contextvars import ContextVar | |
from typing import ( | |
Generator, | |
Optional, | |
) | |
from langchain_core.tracers.context import register_configure_hook | |
from langchain_community.callbacks.bedrock_anthropic_callback import ( | |
BedrockAnthropicTokenUsageCallbackHandler, | |
) | |
from langchain_community.callbacks.openai_info import OpenAICallbackHandler | |
from langchain_community.callbacks.tracers.comet import CometTracer | |
from langchain_community.callbacks.tracers.wandb import WandbTracer | |
logger = logging.getLogger(__name__) | |
openai_callback_var: ContextVar[Optional[OpenAICallbackHandler]] = ContextVar( | |
"openai_callback", default=None | |
) | |
bedrock_anthropic_callback_var: (ContextVar)[ | |
Optional[BedrockAnthropicTokenUsageCallbackHandler] | |
] = ContextVar("bedrock_anthropic_callback", default=None) | |
wandb_tracing_callback_var: ContextVar[Optional[WandbTracer]] = ContextVar( | |
"tracing_wandb_callback", default=None | |
) | |
comet_tracing_callback_var: ContextVar[Optional[CometTracer]] = ContextVar( | |
"tracing_comet_callback", default=None | |
) | |
register_configure_hook(openai_callback_var, True) | |
register_configure_hook(bedrock_anthropic_callback_var, True) | |
register_configure_hook( | |
wandb_tracing_callback_var, True, WandbTracer, "LANGCHAIN_WANDB_TRACING" | |
) | |
register_configure_hook( | |
comet_tracing_callback_var, True, CometTracer, "LANGCHAIN_COMET_TRACING" | |
) | |
def get_openai_callback() -> Generator[OpenAICallbackHandler, None, None]: | |
"""Get the OpenAI callback handler in a context manager. | |
which conveniently exposes token and cost information. | |
Returns: | |
OpenAICallbackHandler: The OpenAI callback handler. | |
Example: | |
>>> with get_openai_callback() as cb: | |
... # Use the OpenAI callback handler | |
""" | |
cb = OpenAICallbackHandler() | |
openai_callback_var.set(cb) | |
yield cb | |
openai_callback_var.set(None) | |
def get_bedrock_anthropic_callback() -> ( | |
Generator[BedrockAnthropicTokenUsageCallbackHandler, None, None] | |
): | |
"""Get the Bedrock anthropic callback handler in a context manager. | |
which conveniently exposes token and cost information. | |
Returns: | |
BedrockAnthropicTokenUsageCallbackHandler: | |
The Bedrock anthropic callback handler. | |
Example: | |
>>> with get_bedrock_anthropic_callback() as cb: | |
... # Use the Bedrock anthropic callback handler | |
""" | |
cb = BedrockAnthropicTokenUsageCallbackHandler() | |
bedrock_anthropic_callback_var.set(cb) | |
yield cb | |
bedrock_anthropic_callback_var.set(None) | |
def wandb_tracing_enabled( | |
session_name: str = "default", | |
) -> Generator[None, None, None]: | |
"""Get the WandbTracer in a context manager. | |
Args: | |
session_name (str, optional): The name of the session. | |
Defaults to "default". | |
Returns: | |
None | |
Example: | |
>>> with wandb_tracing_enabled() as session: | |
... # Use the WandbTracer session | |
""" | |
cb = WandbTracer() | |
wandb_tracing_callback_var.set(cb) | |
yield None | |
wandb_tracing_callback_var.set(None) | |