44 lines
1.9 KiB
Python
44 lines
1.9 KiB
Python
import os
|
|
from typing import Optional
|
|
|
|
import dashscope
|
|
from dashscope.common.constants import (DEFAULT_DASHSCOPE_API_KEY_FILE_PATH,
|
|
DEFAULT_DASHSCOPE_CACHE_PATH)
|
|
from dashscope.common.error import AuthenticationError
|
|
|
|
|
|
def get_default_api_key():
|
|
if dashscope.api_key is not None:
|
|
# user set environment variable DASHSCOPE_API_KEY
|
|
return dashscope.api_key
|
|
elif dashscope.api_key_file_path:
|
|
# user set environment variable DASHSCOPE_API_KEY_FILE_PATH
|
|
with open(dashscope.api_key_file_path, 'rt',
|
|
encoding='utf-8') as f: # open with text mode.
|
|
return f.read().strip()
|
|
else: # Find the api key from default key file.
|
|
if os.path.exists(DEFAULT_DASHSCOPE_API_KEY_FILE_PATH):
|
|
with open(DEFAULT_DASHSCOPE_API_KEY_FILE_PATH,
|
|
'rt',
|
|
encoding='utf-8') as f:
|
|
return f.read().strip()
|
|
|
|
raise AuthenticationError(
|
|
'No api key provided. You can set by dashscope.api_key = your_api_key in code, ' # noqa: E501
|
|
'or you can set it via environment variable DASHSCOPE_API_KEY= your_api_key. ' # noqa: E501
|
|
'You can store your api key to a file, and use dashscope.api_key_file_path=api_key_file_path in code, ' # noqa: E501
|
|
'or you can set api key file path via environment variable DASHSCOPE_API_KEY_FILE_PATH, ' # noqa: E501
|
|
'You can call save_api_key to api_key_file_path or default path(~/.dashscope/api_key).' # noqa: E501
|
|
)
|
|
|
|
|
|
def save_api_key(api_key: str, api_key_file_path: Optional[str] = None):
|
|
if api_key_file_path is None:
|
|
os.makedirs(DEFAULT_DASHSCOPE_CACHE_PATH, exist_ok=True)
|
|
with open(DEFAULT_DASHSCOPE_API_KEY_FILE_PATH, 'w+') as f:
|
|
f.write(api_key)
|
|
else:
|
|
os.makedirs(os.path.dirname(api_key_file_path), exist_ok=True)
|
|
with open(api_key_file_path, 'w+') as f:
|
|
f.write(api_key)
|