diff --git a/src/bespokelabs/curator/client.py b/src/bespokelabs/curator/client.py index 38955d89..fe78eb3d 100644 --- a/src/bespokelabs/curator/client.py +++ b/src/bespokelabs/curator/client.py @@ -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.""" diff --git a/src/bespokelabs/curator/code_executor/code_executor.py b/src/bespokelabs/curator/code_executor/code_executor.py index 3c8daa4b..fc996605 100644 --- a/src/bespokelabs/curator/code_executor/code_executor.py +++ b/src/bespokelabs/curator/code_executor/code_executor.py @@ -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 diff --git a/src/bespokelabs/curator/llm/llm.py b/src/bespokelabs/curator/llm/llm.py index 73025178..26fe117b 100644 --- a/src/bespokelabs/curator/llm/llm.py +++ b/src/bespokelabs/curator/llm/llm.py @@ -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 @@ -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 diff --git a/src/bespokelabs/curator/types/curator_response.py b/src/bespokelabs/curator/types/curator_response.py index 2235ed69..71897974 100644 --- a/src/bespokelabs/curator/types/curator_response.py +++ b/src/bespokelabs/curator/types/curator_response.py @@ -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 @@ -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))