Skip to main content

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