Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 0 additions & 5 deletions src/bespokelabs/curator/client.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,11 +47,6 @@ def session(self):
"""Get the session ID."""
return self._session

@property
def authenticated(self):
"""Check if the client is authenticated."""
return self._authenticated

@property
def hosted(self):
"""Check if the client is hosted."""
Expand Down
4 changes: 1 addition & 3 deletions src/bespokelabs/curator/code_executor/code_executor.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,14 +16,12 @@
from bespokelabs.curator.code_executor.code_formatter import CodeFormatter
from bespokelabs.curator.code_executor.db import CodeMetadataDB
from bespokelabs.curator.code_executor.types import CodeExecutionRequestParams
from bespokelabs.curator.constants import _CURATOR_DEFAULT_CACHE_DIR
from bespokelabs.curator.llm.llm import _convert_to_dataset, _get_function_hash, _get_function_source
from bespokelabs.curator.log import logger

if TYPE_CHECKING:
from datasets import Dataset

# Constants
_CURATOR_DEFAULT_CACHE_DIR = "~/.cache/curator"
T = TypeVar("T")
_DictOrBaseModel = Dict[str, Any] | BaseModel

Expand Down
5 changes: 1 addition & 4 deletions src/bespokelabs/curator/llm/llm.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
from datetime import datetime
from io import BytesIO
from pathlib import Path
from typing import TYPE_CHECKING, Any, Dict, Iterable, Optional, Type, TypeVar, Union
from typing import Any, Dict, Iterable, Optional, Type, TypeVar, Union

from datasets import Dataset
from pydantic import BaseModel
Expand All @@ -21,9 +21,6 @@
from bespokelabs.curator.request_processor.event_loop import run_in_event_loop
from bespokelabs.curator.types.curator_response import CuratorResponse

if TYPE_CHECKING:
from dataset import Dataset

T = TypeVar("T")
_DictOrBaseModel = Dict[str, Any] | BaseModel

Expand Down
50 changes: 0 additions & 50 deletions src/bespokelabs/curator/types/curator_response.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@

from bespokelabs.curator.log import logger
from bespokelabs.curator.status_tracker.offline_status_tracker import OfflineStatusTracker
from bespokelabs.curator.status_tracker.tqdm_constants.colors import COST, END, ERROR, HEADER, METRIC, MODEL, SUCCESS


@dataclass
Expand Down Expand Up @@ -368,52 +367,3 @@ def append(self, other: "CuratorResponse"):
self.request_stats.add(other.request_stats)
self.performance_stats.add(other.performance_stats)

def display_stats(self):
"""Display final statistics in plain text format.

This method prints a formatted summary of all statistics including
model information, request statistics, token usage, costs, and
performance metrics. The output is color-coded for better readability.
"""
elapsed_time = time.time() - self.start_time
elapsed_minutes = elapsed_time / 60
rpm = self.request_stats.num_tasks_succeeded / max(0.001, elapsed_minutes)
input_tpm = self.token_usage.prompt_tokens / max(0.001, elapsed_minutes)
output_tpm = self.token_usage.completion_tokens / max(0.001, elapsed_minutes)

stats = [
f"\n{HEADER}Final Statistics:{END}",
f"{HEADER}Model Information:{END}",
f" Model: {MODEL}{self.model_name}{END}",
f" Rate Limit (RPM): {METRIC}{self.max_requests_per_minute}{END}",
f" Rate Limit (TPM): {METRIC}{self.max_tokens_per_minute}{END}",
"",
f"{HEADER}Request Statistics:{END}",
f" Total Requests: {METRIC}{self.request_stats.total_requests}{END}",
f" Cached: {SUCCESS}{self.request_stats.num_tasks_already_completed}{END}",
f" Successful: {SUCCESS}{self.request_stats.num_tasks_succeeded}{END}",
f" Failed: {ERROR}{self.request_stats.num_tasks_failed}{END}",
"",
f"{HEADER}Token Statistics:{END}",
f" Total Tokens Used: {METRIC}{self.token_usage.total_tokens:,}{END}",
f" Total Input Tokens: {METRIC}{self.token_usage.prompt_tokens:,}{END}",
f" Total Output Tokens: {METRIC}{self.token_usage.completion_tokens:,}{END}",
f" Average Tokens per Request: {METRIC}{int(self.token_usage.total_tokens / max(1, self.request_stats.num_tasks_succeeded))}{END}",
f" Average Input Tokens: {METRIC}{int(self.token_usage.prompt_tokens / max(1, self.request_stats.num_tasks_succeeded))}{END}",
f" Average Output Tokens: {METRIC}{int(self.token_usage.completion_tokens / max(1, self.request_stats.num_tasks_succeeded))}{END}",
"",
f"{HEADER}Cost Statistics:{END}",
f" Total Cost: {COST}${self.cost_info.total_cost:.3f}{END}",
f" Average Cost per Request: {COST}${self.cost_info.total_cost / max(1, self.request_stats.num_tasks_succeeded):.3f}{END}",
f" Input Cost per 1M Tokens: {COST}${self.cost_info.input_cost_per_million:.3f}{END}",
f" Output Cost per 1M Tokens: {COST}${self.cost_info.output_cost_per_million:.3f}{END}",
"",
f"{HEADER}Performance Statistics:{END}",
f" Total Time: {METRIC}{elapsed_time:.2f}s{END}",
f" Average Time per Request: {METRIC}{elapsed_time / max(1, self.request_stats.num_tasks_succeeded):.2f}s{END}",
f" Requests per Minute: {METRIC}{rpm:.1f}{END}",
f" Max Concurrent Requests: {METRIC}{self.performance_stats.max_concurrent_requests}{END}",
f" Input Tokens per Minute: {METRIC}{input_tpm:.1f}{END}",
f" Output Tokens per Minute: {METRIC}{output_tpm:.1f}{END}",
]
logger.info("\n".join(stats))
Loading