Skip to main content

Azure

azureopenai 提供者是通过 Azure 访问 OpenAI 的接口。它的行为与 OpenAI 提供者 相同。

设置

首先,设置 AZURE_OPENAI_API_KEY 环境变量。

接下来,编辑 promptfoo 配置文件以指向 Azure 提供者。

  • azureopenai:chat:<部署名称> - 使用给定的部署(适用于 gpt-35-turbo、gpt-4 等聊天端点)
  • azureopenai:completion:<部署名称> - 使用给定的部署(适用于 gpt-35-instruct 等完成端点)

同时设置 apiHost 值以指向您的端点:

providers:
- id: azureopenai:chat:deploymentNameHere
config:
apiHost: 'xxxxxxxx.openai.azure.com'

环境变量

Azure OpenAI 提供者使用以下环境变量:

变量描述必需
AZURE_OPENAI_API_KEY您的 Azure OpenAI API 密钥
AZURE_OPENAI_API_HOSTAPI 主机
AZURE_OPENAI_API_BASE_URLAPI 基础 URL
AZURE_OPENAI_BASE_URL替代 API 基础 URL

注意:您只需要设置 AZURE_OPENAI_API_HOSTAZURE_OPENAI_API_BASE_URLAZURE_OPENAI_BASE_URL 中的一个。如果设置了多个,提供者将按该顺序优先使用它们。

配置

YAML 配置可以覆盖环境变量并设置其他参数:

providers:
- id: azureopenai:chat:deploymentNameHere
config:
apiHost: 'xxxxxxxx.openai.azure.com'
temperature: 0.5
max_tokens: 1024
tip

所有其他 OpenAI 提供者 环境变量和配置属性都受支持。

使用客户端凭据

要使用客户端凭据进行 Azure 身份验证,首先安装对等依赖项:

npm i @azure/identity

然后设置以下配置变量:

providers:
- id: azureopenai:chat:deploymentNameHere
config:
apiHost: 'xxxxxxxx.openai.azure.com'
azureClientId: 'your-azure-client-id'
azureClientSecret: 'your-azure-client-secret'
azureTenantId: 'your-azure-tenant-id'
azureAuthorityHost: 'https://login.microsoftonline.com' # 可选
azureTokenScope: 'https://cognitiveservices.azure.com/.default' # 可选

这些凭据将用于获取 Azure OpenAI API 的访问令牌。

如果未指定,azureAuthorityHost 默认为 'https://login.microsoftonline.com'。`azureTokenScope` 默认为 'https://cognitiveservices.azure.com/.default',这是与 Azure 认知服务进行身份验证所需的权限范围。

您还必须安装来自 Azure 的对等依赖项:

npm i @azure/identity

模型评分测试

模型评分断言factualityllm-rubric 默认使用 OpenAI。如果您使用 Azure,则必须覆盖评分器以指向您的 Azure 部署。

为所有测试用例执行此操作的最简单方法是向配置中添加 defaultTest 属性:

defaultTest:
options:
provider:
id: azureopenai:chat:gpt-4-deployment-name
config:
apiHost: 'xxxxxxx.openai.azure.com'

但是,您也可以为单个断言执行此操作:

# ...
assert:
- type: llm-rubric
value: Do not mention that you are an AI or chat assistant
provider:
id: azureopenai:chat:xxxx
config:
apiHost: 'xxxxxxx.openai.azure.com'

或单个测试:

# ...
tests:
- vars:
# ...
options:
provider:
id: azureopenai:chat:xxxx
config:
apiHost: 'xxxxxxx.openai.azure.com'
assert:
- type: llm-rubric
value: Do not mention that you are an AI or chat assistant
note

实现中的 maybeEmitAzureOpenAiWarning 函数会在您使用 Azure 提供者进行模型评分断言而未指定覆盖时发出警告。

相似性

similar 断言类型需要一个嵌入模型,如 text-embedding-ada-002。在覆盖评分器时,请确保指定一个带有嵌入模型的部署,而不是聊天模型。

AI 服务

您还可以指定 deployment_iddataSources,用于与 Azure AI 搜索 API 集成。

providers:
- id: azureopenai:chat:deploymentNameHere
config:
apiHost: 'xxxxxxxx.openai.azure.com'
deployment_id: 'abc123'
dataSources:
- type: AzureCognitiveSearch
parameters:
endpoint: '...'
key: '...'
indexName: '...'

deployment_iddataSources 之间的命名约定不一致反映了 Azure API 中的实际命名情况。)

配置

这些属性可以在提供者的 config 键下设置:

通用配置

名称描述
apiHostAPI 主机。
apiBaseUrlAPI 的基础 URL(代替主机使用)。
apiKeyAPI 密钥。
apiVersionAPI 版本。

Azure 特定配置

名称描述
azureClientIdAzure 身份客户端 ID。
azureClientSecretAzure 身份客户端密钥。
azureTenantIdAzure 身份租户 ID。
azureAuthorityHostAzure 身份授权主机。
azureTokenScopeAzure 身份令牌范围。
deployment_idAzure 认知服务部署 ID。
dataSourcesAzure 认知服务用于指定数据源的参数。

OpenAI 配置:

名称描述
temperature控制输出的随机性。
top_p控制核采样。
frequency_penalty根据频率惩罚新令牌。
presence_penalty根据存在性惩罚新令牌。
best_of生成多个输出并选择最佳。
functions指定可用的函数。
function_call控制自动函数调用。
response_format指定响应的格式。
stop指定生成的停止序列。
passthroughpassthrough 下的任何内容都将作为顶级请求参数发送。

助手

要在 Azure 上评估 OpenAI 助手,首先为助手创建一个部署,并在 Azure 网页界面中创建一个助手。

然后本地安装对等依赖项:

npm i @azure/openai-assistants

接下来,记录助手 ID 并像这样设置您的提供者:

providers:
- id: azureopenai:assistant:asst_E4GyOBYKlnAzMi19SZF2Sn8I
config:
apiHost: yourdeploymentname.openai.azure.com

请确保替换助手 ID 和您的部署名称。

以下是一个简单的完整助手评估示例:

prompts:
- 'Write a tweet about {{topic}}'

providers:
- id: azureopenai:assistant:asst_E4GyOBYKlnAzMi19SZF2Sn8I
config:
apiHost: yourdeploymentname.openai.azure.com

tests:
- vars:
topic: bananas

有关如何比较不同模型、指令等的更多信息,请参阅如何评估 OpenAI 助手指南。