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_HOST | API 主机 | 否 |
AZURE_OPENAI_API_BASE_URL | API 基础 URL | 否 |
AZURE_OPENAI_BASE_URL | 替代 API 基础 URL | 否 |
注意:您只需要设置 AZURE_OPENAI_API_HOST
、AZURE_OPENAI_API_BASE_URL
或 AZURE_OPENAI_BASE_URL
中的一个。如果设置了多个,提供者将按该顺序优先使用它们。
配置
YAML 配置可以覆盖环境变量并设置其他参数:
providers:
- id: azureopenai:chat:deploymentNameHere
config:
apiHost: 'xxxxxxxx.openai.azure.com'
temperature: 0.5
max_tokens: 1024
所有其他 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
模型评分测试
模型评分断言 如 factuality
或 llm-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
实现中的 maybeEmitAzureOpenAiWarning
函数会在您使用 Azure 提供者进行模型评分断言而未指定覆盖时发出警告。
相似性
similar
断言类型需要一个嵌入模型,如 text-embedding-ada-002
。在覆盖评分器时,请确保指定一个带有嵌入模型的部署,而不是聊天模型。
AI 服务
您还可以指定 deployment_id
和 dataSources
,用于与 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_id
和 dataSources
之间的命名约定不一致反映了 Azure API 中的实际命名情况。)
配置
这些属性可以在提供者的 config
键下设置:
通用配置
名称 | 描述 |
---|---|
apiHost | API 主机。 |
apiBaseUrl | API 的基础 URL(代替主机使用)。 |
apiKey | API 密钥。 |
apiVersion | API 版本。 |
Azure 特定配置
名称 | 描述 |
---|---|
azureClientId | Azure 身份客户端 ID。 |
azureClientSecret | Azure 身份客户端密钥。 |
azureTenantId | Azure 身份租户 ID。 |
azureAuthorityHost | Azure 身份授权主机。 |
azureTokenScope | Azure 身份令牌范围。 |
deployment_id | Azure 认知服务部署 ID。 |
dataSources | Azure 认知服务用于指定数据源的参数。 |
OpenAI 配置:
名称 | 描述 |
---|---|
temperature | 控制输出的随机性。 |
top_p | 控制核采样。 |
frequency_penalty | 根据频率惩罚新令牌。 |
presence_penalty | 根据存在性惩罚新令牌。 |
best_of | 生成多个输出并选择最佳。 |
functions | 指定可用的函数。 |
function_call | 控制自动函数调用。 |
response_format | 指定响应的格式。 |
stop | 指定生成的停止序列。 |
passthrough | passthrough 下的任何内容都将作为顶级请求参数发送。 |
助手
要在 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 助手指南。