oai.openai_utils
get_key
def get_key(config: Dict[str, Any]) -> str
获取配置的唯一标识符。
参数:
config
dict or list - 一个配置。
返回值:
tuple
- 一个唯一标识符,可用作字典的键。
is_valid_api_key
def is_valid_api_key(api_key: str
- `key_file_path` _str, 可选_ - 存放 API 密钥文件的目录路径。默认为当前目录。
- `openai_api_key_file` _str, 可选_ - 包含 OpenAI API 密钥的文件名。默认为 'key_openai.txt'。
- `aoai_api_key_file` _str, 可选_ - 包含 Azure OpenAI API 密钥的文件名。默认为 'key_aoai.txt'。
- `openai_api_base_file` _str, 可选_ - 包含 OpenAI API 基础 URL 的文件名。默认为 'base_openai.txt'。
- `aoai_api_base_file` _str, 可选_ - 包含 Azure OpenAI API 基础 URL 的文件名。默认为 'base_aoai.txt'。
- `exclude` _str, 可选_ - 要从配置列表中排除的 API 类型。可以是 'openai' 或 'aoai'。默认为 None。
**返回值**:
- `List[Dict]` - 一个包含配置字典的列表。每个字典包含 'api_key' 键,以及可选的 'base_url'、'api_type' 和 'api_version' 键。
**抛出异常**:
- `FileNotFoundError` - 如果找不到指定的密钥文件,并且相应的 API 密钥未在环境变量中设置。
**示例**:
# 生成排除 Azure OpenAI 的配置:
configs = config_list_openai_aoai(exclude='aoai')
文件示例:
- key_aoai.txt
```
aoai-12345abcdef67890ghijklmnopqr
aoai-09876zyxwvuts54321fedcba
```
- base_aoai.txt
```
https://api.azure.com/v1
https://api.azure2.com/v1
```
**备注**:
- 该函数会检查以下环境变量中的 API 密钥和基础 URL: 'OPENAI_API_KEY'、'AZURE_OPENAI_API_KEY'、'OPENAI_API_BASE' 和 'AZURE_OPENAI_API_BASE'。如果找不到这些变量,它会尝试从 'key_file_path' 目录中指定的文件中读取。
- Azure 配置的 API 版本默认设置为 DEFAULT_AZURE_API_VERSION。
- 如果 'exclude' 设置为 'openai',则只返回 Azure OpenAI 配置,反之亦然。
- 如果环境变量中的 API 密钥和基础 URL 有多个条目,函数假设它们之间用换行符分隔。
### config\_list\_from\_models
```python
def config_list_from_models(
key_file_path: Optional[str] = ".",
openai_api_key_file: Optional[str] = "key_openai.txt",
aoai_api_key_file: Optional[str] = "key_aoai.txt",
aoai_api_base_file: Optional[str] = "base_aoai.txt",
exclude: Optional[str] = None,
model_list: Optional[List[str]] = None) -> List[Dict[str, Any]]
获取在模型列表中指定的模型的 API 调用配置列表。
该函数通过允许为每个提供的模型克隆其输出来扩展了 config_list_openai_aoai
。每个配置都将有一个 'model' 键,其值为模型名称。当所有端点都具有相同的模型集时,这特别有用。
参数:
key_file_path
str, 可选 - 密钥文件的路径。openai_api_key_file
str, 可选 - OpenAI API 密钥的文件名。aoai_api_key_file
str, 可选 - Azure OpenAI API 密钥文件的文件名。aoai_api_base_file
str, 可选 - Azure OpenAI API 基础文件的文件名。exclude
str, 可选 - 要排除的 API 类型,"openai" 或 "aoai"。model_list
list, 可选 - 要包含在配置中的模型名称列表。
返回:
list
- OpenAI API 调用的配置列表,每个配置包含模型信息。
示例:
# 定义 API 密钥文件所在的路径
key_file_path = '/path/to/key/files'
# 定义 OpenAI 和 Azure OpenAI API 密钥和基础的文件名
openai_api_key_file = 'key_openai.txt'
aoai_api_key_file = 'key_aoai.txt'
aoai_api_base_file = 'base_aoai.txt'
# 定义要创建配置的模型列表
model_list = ['gpt-4', 'gpt-3.5-turbo']
# 调用函数以获取配置字典的列表
config_list = config_list_from_models(
key_file_path=key_file_path,
openai_api_key_file=openai_api_key_file,
aoai_api_key_file=aoai_api_key_file,
aoai_api_base_file=aoai_api_base_file,
model_list=model_list
)
# `config_list` 将包含指定模型的配置,例如:
# [
# {'api_key': '...', 'base_url': 'https://api.openai.com', 'model': 'gpt-4'},
# {'api_key': '...', 'base_url': 'https://api.openai.com', 'model': 'gpt-3.5-turbo'}
# ]
config_list_gpt4_gpt35
def config_list_gpt4_gpt35(
key_file_path: Optional[str] = ".",
openai_api_key_file: Optional[str] = "key_openai.txt",
aoai_api_key_file: Optional[str] = "key_aoai.txt",
aoai_api_base_file: Optional[str] = "base_aoai.txt",
exclude: Optional[str] = None) -> List[Dict[str, Any]]
获取 'gpt-4' 和 'gpt-3.5-turbo' API 调用的配置列表。
参数:
key_file_path
str, 可选 - 密钥文件的路径。openai_api_key_file
str, 可选 - openai api 密钥的文件名。aoai_api_key_file
str, 可选 - azure openai api 密钥的文件名。aoai_api_base_file
str, 可选 - azure openai api 基础的文件名。exclude
str, 可选 - 要排除的 api 类型,"openai" 或 "aoai"。
返回:
list
- openai api 调用的配置列表。
filter_config
def filter_config(config_list: List[Dict[str, Any]],
filter_dict: Optional[Dict[str, Union[List[Union[str, None]],
Set[Union[str,
None]]]]],
exclude: bool = False) -> List[Dict[str, Any]]
此函数通过检查每个配置字典与 filter_dict
中指定的条件进行过滤 config_list
。如果对于 filter_dict
中的每个键 ,配置字典都满足条件,则保留该配置字典,见下面的示例。
参数:
config_list
列表字典 - 一个要进行过滤的配置字典列表。filter_dict
字典 - 一个表示过滤条件的字典,其中每个键是要在配置字典中检查的字段名,相应的值是该字段可接受的值列表。 如果配置的字段值不是一个列表,则当它在可接受的值列表中找到时,匹配发生。如果配置的字段值是一个列表,则当与可接受的值存在非空交集时,匹配发生。exclude
布尔值 - 如果为 False(默认值),则匹配过滤条件的配置将包含在返回的列表中。如果为 True,则匹配过滤条件的配置将被排除在返回的列表中。
返回:
字典列表: 满足filter_dict
中所有条件的配置字典列表。
示例:
```python
# 含有不同模型和 API 类型的示例配置列表
configs = [
{'model': 'gpt-3.5-turbo'},
{'model': 'gpt-4'},
{'model': 'gpt-3.5-turbo', 'api_type': 'azure'},
{'model': 'gpt-3.5-turbo', 'tags': ['gpt35_turbo', 'gpt-35-turbo']},
]
# 定义过滤条件,选择使用 'gpt-3.5-turbo' 模型和 'azure' API 类型的配置
filter_criteria = {
'model': ['gpt-3.5-turbo'], # 仅接受 'gpt-3.5-turbo' 的配置
'api_type': ['azure'] # 仅接受 'azure' API 类型的配置
}
# 对配置列表应用过滤器
filtered_configs = filter_config(configs, filter_criteria)
# 得到的 `filtered_configs` 将是:
# [{'model': 'gpt-3.5-turbo', 'api_type': 'azure', ...}]
# 定义一个过滤器,选择给定的标签
filter_criteria = {
'tags': ['gpt35_turbo'],
}
# 对配置列表应用过滤器
filtered_configs = filter_config(configs, filter_criteria)
# 得到的 `filtered_configs` 将是:
# [{'model': 'gpt-3.5-turbo', 'tags': ['gpt35_turbo', 'gpt-35-turbo']}]
```
注意:
- 如果
filter_dict
为空或为 None,则不应用过滤器,返回config_list
本身。 - 如果
config_list
中的配置字典不包含filter_dict
中指定的键,则被视为不匹配,并从结果中排除。 - 如果
filter_dict
中一个键的可接受值列表包括 None,则不具有该键的配置字典也将被视为匹配。
config_list_from_json
def config_list_from_json(
env_or_file: str,
file_location: Optional[str] = "",
filter_dict: Optional[Dict[str, Union[List[Union[str, None]],
Set[Union[str, None]]]]] = None
) -> List[Dict[str, Any]]
从存储在环境变量或文件中的 JSON 中检索 API 配置的列表。
该函数尝试从给定的 env_or_file
参数解析 JSON 数据。如果 env_or_file
是包含 JSON 数据的环境变量,则直接使用它。否则,假设它是一个文件名,并且函数将尝试从指定的 file_location
读取文件。
filter_dict
参数允许根据指定的条件对配置进行过滤。filter_dict
中的每个键对应配置字典中的一个字段,关联的值是该字段的可接受值的列表或集合。如果配置中缺少一个字段,并且该字段的可接受值列表中包含 None
,则仍将认为该配置是匹配的。
参数:
env_or_file
str - 包含 JSON 数据的环境变量的名称、文件名或文件名的环境变量。file_location
str, 可选 - 如果env_or_file
是文件名,则指定文件所在的目录路径。filter_dict
dict, 可选 - 一个字典,指定配置的过滤条件,键表示字段名,值是这些字段的可接受值的列表或集合。
示例:
# 假设我们有一个名为 'CONFIG_JSON' 的环境变量,其内容如下:
# '[{"model": "gpt-3.5-turbo", "api_type": "azure"}, {"model": "gpt-4"}]'
# 我们可以像这样获取一个经过过滤的配置列表:
filter_criteria = {"model": ["gpt-3.5-turbo"]}
configs = config_list_from_json('CONFIG_JSON', filter_dict=filter_criteria)
# 现在,'configs' 变量将只包含与过滤条件匹配的配置。
返回值:
List[Dict]
- 与filter_dict
中指定的过滤条件匹配的配置字典列表。
抛出异常:
FileNotFoundError
- 如果env_or_file
既不是环境变量也不是文件
get_config
def get_config(api_key: Optional[str],
base_url: Optional[str] = None,
api_type: Optional[str] = None,
api_version: Optional[str] = None) -> Dict[str, Any]
使用提供的 API 配置构建一个单个模型的配置字典。
示例:
config = get_config(
api_key="sk-abcdef1234567890",
base_url="https://api.openai.com",
api_version="v1"
)
# 现在,'config' 变量将包含以下内容:
# {
# "api_key": "sk-abcdef1234567890",
# "base_url": "https://api.openai.com",
# "api_version": "v1"
# }
参数:
api_key
str - 用于身份验证 API 请求的 API 密钥。base_url
Optional[str] - API 的基本 URL。如果未提供,默认为 None。api_type
Optional[str] - API 的类型。如果未提供,默认为 None。api_version
Optional[str] - API 的版本。如果未提供,默认为 None。
返回值:
Dict
- 包含提供的 API 配置的字典。
config_list_from_dotenv
def config_list_from_dotenv(
dotenv_file_path: Optional[str] = None,
model_api_key_map: Optional[Dict[str, Any]] = None,
filter_dict: Optional[Dict[str, Union[List[Union[str, None]],
Set[Union[str, None]]]]] = None
) -> List[Dict[str, Union[str, Set[str]]]]
从指定的 .env 文件或环境变量中加载 API 配置,并构建配置列表。
该函数将会:
- 从提供的 .env 文件或现有的环境变量中加载 API 密钥。
- 使用 API 密钥和其他配置为每个模型创建一个配置字典。
- 根据提供的过滤器对配置进行过滤并返回。
如果未提供 model_api_key_map,则默认为 {"gpt-4": "OPENAI_API_KEY", "gpt-3.5-turbo": "OPENAI_API_KEY"}
。
参数:
dotenv_file_path
str, 可选 - .env 文件的路径。默认为 None。model_api_key_map
str/dict, 可选 - 将模型映射到其 API 密钥配置的字典。 如果提供的配置是字符串,则被视为存储 API 密钥的环境变量名称。 如果提供的是字典,则应至少包含 'api_key_env_var' 键,以及可选的其他 API 配置,如 'base_url'、'api_type' 和 'api_version'。 默认为一个基本映射,将 'gpt-4' 和 'gpt-3.5-turbo' 映射到 'OPENAI_API_KEY'。filter_dict
dict, 可选 - 包含要加载的模型的字典。 包含一个 'model' 键,将其映射到要加载的模型名称的集合。 默认为 None,加载所有找到的配置。
返回值:
List[Dict[str, Union[str, Set[str]]]]: 每个模型的配置字典列表。
抛出异常:
FileNotFoundError
- 如果指定的 .env 文件不存在。TypeError
- 如果在 model_api_key_map 中提供了不支持的配置类型。
retrieve_assistants_by_name
def retrieve_assistants_by_name(client: OpenAI, name: str) -> List[Assistant]
从 OAI 助手 API 中返回具有给定名称的助手。
detect_gpt_assistant_api_version
def detect_gpt_assistant_api_version() -> str
检测 OpenAI 助手 API 的版本。
create_gpt_vector_store
def create_gpt_vector_store(client: OpenAI, name: str,
fild_ids: List[str]) -> Any
为 GPT 助手创建一个 OpenAI 向量存储。
create_gpt_assistant
def create_gpt_assistant(client: OpenAI, name: str, instructions: str,
model: str, assistant_config: Dict[str,
Any]) -> Assistant
创建一个 OpenAI GPT 助手。
update_gpt_assistant
def update_gpt_assistant(client: OpenAI, assistant_id: str,
assistant_config: Dict[str, Any]) -> Assistant
def update_gpt_assistant(client: OpenAI, assistant_id: str,
assistant_config: Dict[str, Any]) -> Assistant
更新 GPT 助手的函数,接受 OpenAI 客户端、助手 ID 和助手配置作为参数,并返回助手对象。 更新 OpenAI GPT 助手
OpenAI GPT 助手是一种基于人工智能的语言模型,由 OpenAI 公司开发。它可以生成自然语言文本,回答用户的问题,并提供各种语言处理任务的解决方案。
最近,OpenAI 公司对 GPT 助手进行了更新,以提高其性能和功能。这 些更新包括改进的语言理解和生成能力,更准确的答案生成,以及更好的上下文理解。
通过更新 GPT 助手,OpenAI 希望提供更好的用户体验,并使其在各种应用场景中更加实用和可靠。
参考文献: [20] OpenAI. (2021). OpenAI GPT. https://openai.com/research/gpt