Skip to content

Do not show the stack trace when user as no API key #46

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 11, 2023
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
6 changes: 4 additions & 2 deletions src/together/complete.py
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,8 @@ def create(
response = create_post_request(
url=together.api_base_complete, json=parameter_payload
)

if not response:
return {}
try:
response_json = dict(response.json())

Expand Down Expand Up @@ -85,7 +86,8 @@ def create_streaming(
response = create_post_request(
url=together.api_base_complete, json=parameter_payload, stream=True
)

if not response:
return {}
output = ""
client = sse_client(response)
for event in client.events():
Expand Down
8 changes: 4 additions & 4 deletions src/together/files.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,8 @@ class Files:
def list(self) -> Dict[str, List[Dict[str, Union[str, int]]]]:
# send request
response = create_get_request(together.api_base_files)

if not response:
return {}
return response_to_dict(response)

@classmethod
Expand Down Expand Up @@ -165,11 +166,10 @@ def delete(self, file_id: str) -> Dict[str, str]:
@classmethod
def retrieve(self, file_id: str) -> Dict[str, Union[str, int]]:
retrieve_url = urllib.parse.urljoin(together.api_base_files, file_id)

logger.info(f"Retrieve URL: {retrieve_url}")

response = create_get_request(retrieve_url)

if not response:
return {}
return response_to_dict(response)

@classmethod
Expand Down
12 changes: 10 additions & 2 deletions src/together/finetune.py
Original file line number Diff line number Diff line change
Expand Up @@ -173,35 +173,43 @@ def create(
response = create_post_request(
together.api_base_finetune, json=parameter_payload
)

if not response:
return {}
return response_to_dict(response)

@classmethod
def list(self) -> Dict[Any, Any]:
# send request
response = create_get_request(together.api_base_finetune)
if not response:
return {}
return response_to_dict(response)

@classmethod
def retrieve(self, fine_tune_id: str) -> Dict[Any, Any]:
retrieve_url = urllib.parse.urljoin(together.api_base_finetune, fine_tune_id)
response = create_get_request(retrieve_url)
if not response:
return {}
return response_to_dict(response)

@classmethod
def cancel(self, fine_tune_id: str) -> Dict[Any, Any]:
relative_path = posixpath.join(fine_tune_id, "cancel")
retrieve_url = urllib.parse.urljoin(together.api_base_finetune, relative_path)
response = create_post_request(retrieve_url)
if not response:
return {}
return response_to_dict(response)

@classmethod
def list_events(self, fine_tune_id: str) -> Dict[Any, Any]:
# TODO enable stream
relative_path = posixpath.join(fine_tune_id, "events")
retrieve_url = urllib.parse.urljoin(together.api_base_finetune, relative_path)

response = create_get_request(retrieve_url)
if not response:
return {}
return response_to_dict(response)

@classmethod
Expand Down
3 changes: 2 additions & 1 deletion src/together/image.py
Original file line number Diff line number Diff line change
Expand Up @@ -39,5 +39,6 @@ def create(
response = create_post_request(
together.api_base_complete, json=parameter_payload
)

if not response:
return {}
return response_to_dict(response)
15 changes: 11 additions & 4 deletions src/together/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,12 @@ class Models:
def list(self) -> List[Any]:
model_url = urllib.parse.urljoin(together.api_base, "models/info?=")
response = create_get_request(model_url)

if not response:
return []
try:
response_list = list(response.json())
except Exception as e:
raise together.ResponseError(e, http_status=response.status_code)

return response_list

@classmethod
Expand All @@ -38,14 +38,16 @@ def info(self, model: str, hidden_keys: List[str] = []) -> Dict[str, Any]:
info_dict.pop(key, None)
else:
raise ValueError(
f"Model {model} does not exist. Use together.Models.list() to list available models."
f"Unable to access {model}. Check your TOGETHER_API_KEY and use together.Models.list() to list available models."
)

return dict(info_dict)

@classmethod
def instances(self) -> Dict[str, bool]:
response = create_get_request(together.api_base_instances)
if not response:
return {}
return response_to_dict(response)

@classmethod
Expand All @@ -54,6 +56,8 @@ def start(self, model: str) -> Dict[str, str]:
together.api_base_instances, f"start?model={model}"
)
response = create_post_request(model_url)
if not response:
return {}
return response_to_dict(response)

@classmethod
Expand All @@ -62,13 +66,16 @@ def stop(self, model: str) -> Dict[str, str]:
together.api_base_instances, f"stop?model={model}"
)
response = create_post_request(model_url)
if not response:
return {}
return response_to_dict(response)

@classmethod
def ready(self, model: str) -> List[Any]:
ready_url = urllib.parse.urljoin(together.api_base, "models/info?name=" + model)
response = create_get_request(ready_url)

if not response:
return []
try:
response_list = list(response.json())
except Exception as e:
Expand Down
24 changes: 16 additions & 8 deletions src/together/utils.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import logging
import sys
from datetime import datetime
from typing import Any, Dict, Optional
from typing import Any, Dict, Optional, Union

import requests
import sseclient # type: ignore
Expand Down Expand Up @@ -53,13 +53,19 @@ def get_logger(
return logger


def verify_api_key(logger: Optional[logging.Logger] = None) -> None:
def verify_api_key(logger: Optional[logging.Logger] = None) -> bool:
if logger is None:
logger = get_logger(str(__name__), log_level=together.log_level)
if together.api_key is None:
raise together.AuthenticationError(
"TOGETHER_API_KEY not found. Please set it as an environment variable or set it with together.api_key"
msg = (
"TOGETHER_API_KEY not found \n"
"Please set it as an environment variable or set it as together.api_key \n"
"Find your TOGETHER_API_KEY at https://api.together.xyz/settings/api-keys"
)
print(msg)
return False
else:
return True


def extract_time(json_obj: Dict[str, Any]) -> int:
Expand All @@ -85,9 +91,10 @@ def create_post_request(
json: Optional[dict[Any, Any]] = None,
stream: Optional[bool] = False,
check_auth: Optional[bool] = True,
) -> requests.Response:
) -> Union[requests.Response, None]:
if check_auth:
verify_api_key()
if not verify_api_key():
return None

if not headers:
headers = {
Expand Down Expand Up @@ -121,9 +128,10 @@ def create_get_request(
json: Optional[dict[Any, Any]] = None,
stream: Optional[bool] = False,
check_auth: Optional[bool] = True,
) -> requests.Response:
) -> Union[requests.Response, None]:
if check_auth:
verify_api_key()
if not verify_api_key():
return None

if not headers:
headers = {
Expand Down