sherpa_ai.verbose_loggers package#

Overview#

The verbose_loggers package provides advanced logging capabilities for Sherpa AI, enabling detailed tracking and visualization of agent operations, model interactions, and system events.

Key Components

  • BaseVerboseLogger: Core logging interface that defines the logging protocol

  • Specialized Loggers: Various logger implementations for different logging needs

  • Formatting Tools: Utilities for formatting and presenting log information

Example Usage#

from sherpa_ai.verbose_loggers import ConsoleLogger
from sherpa_ai.orchestrator import Orchestrator
from sherpa_ai.agents import QAAgent

# Create a logger
logger = ConsoleLogger(log_level="INFO")

# Create an agent with verbose logging
agent = QAAgent(verbose_logger=logger)

# Create an orchestrator with the agent
orchestrator = Orchestrator(agents=[agent], verbose_logger=logger)

# Process a query with detailed logging
orchestrator.process("What is artificial intelligence?")

Submodules#

Module

Description

sherpa_ai.verbose_loggers.base

Contains the BaseVerboseLogger class that defines the core logging interface and protocols.

sherpa_ai.verbose_loggers.verbose_loggers

Implements various logger types including console loggers, file loggers, and specialized formatters.

sherpa_ai.verbose_loggers.base module#

Base verbose logger module for Sherpa AI.

This module provides the abstract base class for verbose loggers, defining the interface that all verbose loggers must implement.

class sherpa_ai.verbose_loggers.base.BaseVerboseLogger[source]#

Bases: ABC

Abstract base class for verbose loggers.

This class defines the interface for verbose loggers in the system. All concrete logger implementations must inherit from this class and implement the log method.

Example

>>> class MyLogger(BaseVerboseLogger):
...     def log(self, message: str):
...         print(f"LOG: {message}")
>>> logger = MyLogger()
>>> logger.log("Hello")
'LOG: Hello'
abstractmethod log(message)[source]#

Log a message.

Parameters:

message (str) – The message to log.

sherpa_ai.verbose_loggers.verbose_loggers module#

Verbose logger implementations for Sherpa AI.

This module provides concrete implementations of verbose loggers for different purposes, including Slack messaging, testing, file logging, and no-op logging.

class sherpa_ai.verbose_loggers.verbose_loggers.SlackVerboseLogger(logger, thread_ts)[source]#

Bases: BaseVerboseLogger

Verbose logger for Slack messaging.

This logger sends messages to a Slack channel or thread using the Bolt framework’s say utility function.

logger#

Bolt’s say function for sending messages.

Type:

Callable[[str], None]

thread_ts#

Timestamp of the Slack thread to post in.

Type:

str

Example

>>> def say_func(msg, thread_ts):
...     print(f"Slack({thread_ts}): {msg}")
>>> logger = SlackVerboseLogger(say_func, "1234567890")
>>> logger.log("Hello Slack!")
'Slack(1234567890): Hello Slack!'
logger: Callable[[str], None]#
thread_ts: str#
log(message)[source]#

Send a message to Slack.

Parameters:

message (str) – Message to send to Slack.

class sherpa_ai.verbose_loggers.verbose_loggers.DummyVerboseLogger[source]#

Bases: BaseVerboseLogger

No-op verbose logger.

This logger discards all messages without processing them. It’s useful when verbose logging is disabled but the logging interface is still needed.

Example

>>> logger = DummyVerboseLogger()
>>> logger.log("This message is ignored")  # Does nothing
log(message)[source]#

Discard a message without processing.

Parameters:

message (str) – Message to discard.

class sherpa_ai.verbose_loggers.verbose_loggers.StorageVerboseLogger[source]#

Bases: BaseVerboseLogger

In-memory storage verbose logger.

This logger stores all messages in a list for later inspection. It’s particularly useful for testing and debugging purposes.

storage#

List of stored messages.

Type:

List[str]

Example

>>> logger = StorageVerboseLogger()
>>> logger.log("First message")
>>> logger.log("Second message")
>>> print(logger.storage)
['First message', 'Second message']
storage: List[str]#
log(message)[source]#

Store a message in the internal list.

Parameters:

message (str) – Message to store.

class sherpa_ai.verbose_loggers.verbose_loggers.FileVerboseLogger(file_path, append_mode=True)[source]#

Bases: BaseVerboseLogger

File-based verbose logger.

This logger writes messages to a local file with timestamps. It’s useful for persistent logging that can be reviewed later or used for debugging.

file_path#

Path to the log file.

Type:

str

append_mode#

Whether to append to existing file or overwrite.

Type:

bool

Example

>>> logger = FileVerboseLogger("usage.log")
>>> logger.log("User used 100 tokens")
>>> # Message is written to usage.log with timestamp
log(message)[source]#

Write a message to the log file with timestamp.

Parameters:

message (str) – Message to log.

Module contents#

Verbose logging package for Sherpa AI.

This package provides various logging implementations for verbose output in different contexts. It includes loggers for Slack messaging, file logging, testing, and no-op scenarios.

Example

>>> from sherpa_ai.verbose_loggers import StorageVerboseLogger
>>> logger = StorageVerboseLogger()
>>> logger.log("Test message")
>>> print(logger.storage)
['Test message']
>>> from sherpa_ai.verbose_loggers import FileVerboseLogger
>>> file_logger = FileVerboseLogger("usage.log")
>>> file_logger.log("Usage data logged to file")
class sherpa_ai.verbose_loggers.DummyVerboseLogger[source]#

Bases: BaseVerboseLogger

No-op verbose logger.

This logger discards all messages without processing them. It’s useful when verbose logging is disabled but the logging interface is still needed.

Example

>>> logger = DummyVerboseLogger()
>>> logger.log("This message is ignored")  # Does nothing
log(message)[source]#

Discard a message without processing.

Parameters:

message (str) – Message to discard.

class sherpa_ai.verbose_loggers.FileVerboseLogger(file_path, append_mode=True)[source]#

Bases: BaseVerboseLogger

File-based verbose logger.

This logger writes messages to a local file with timestamps. It’s useful for persistent logging that can be reviewed later or used for debugging.

file_path#

Path to the log file.

Type:

str

append_mode#

Whether to append to existing file or overwrite.

Type:

bool

Example

>>> logger = FileVerboseLogger("usage.log")
>>> logger.log("User used 100 tokens")
>>> # Message is written to usage.log with timestamp
log(message)[source]#

Write a message to the log file with timestamp.

Parameters:

message (str) – Message to log.

class sherpa_ai.verbose_loggers.SlackVerboseLogger(logger, thread_ts)[source]#

Bases: BaseVerboseLogger

Verbose logger for Slack messaging.

This logger sends messages to a Slack channel or thread using the Bolt framework’s say utility function.

logger#

Bolt’s say function for sending messages.

Type:

Callable[[str], None]

thread_ts#

Timestamp of the Slack thread to post in.

Type:

str

Example

>>> def say_func(msg, thread_ts):
...     print(f"Slack({thread_ts}): {msg}")
>>> logger = SlackVerboseLogger(say_func, "1234567890")
>>> logger.log("Hello Slack!")
'Slack(1234567890): Hello Slack!'
logger: Callable[[str], None]#
thread_ts: str#
log(message)[source]#

Send a message to Slack.

Parameters:

message (str) – Message to send to Slack.

class sherpa_ai.verbose_loggers.StorageVerboseLogger[source]#

Bases: BaseVerboseLogger

In-memory storage verbose logger.

This logger stores all messages in a list for later inspection. It’s particularly useful for testing and debugging purposes.

storage#

List of stored messages.

Type:

List[str]

Example

>>> logger = StorageVerboseLogger()
>>> logger.log("First message")
>>> logger.log("Second message")
>>> print(logger.storage)
['First message', 'Second message']
storage: List[str]#
log(message)[source]#

Store a message in the internal list.

Parameters:

message (str) – Message to store.