生成连接到 Azure OpenAI 的应用时,通常只有一部分应用与 Azure OpenAI API 交互。 在处理不需要 Azure OpenAI API 实际答复的应用部分时,可以使用开发代理模拟响应。 使用模拟响应可以避免产生不必要的成本。 它使用 OpenAIMockResponsePlugin
计算机上运行的本地语言模型来模拟来自 Azure OpenAI API 的响应。
开始之前
要使用开发代理模拟 Azure OpenAI API 响应,您需要在计算机上安装 受支持的语言模型客户端 。
默认情况下,Dev Proxy 使用在 Ollama 上运行的 llama3.2 语言模型。 要使用其他客户端或模型,请更新 Dev Proxy 配置文件中的 语言模型设置 。
配置开发代理以模拟 Azure OpenAI API 响应
提示
本教程中所述的步骤在现成的开发代理预设中提供。 若要使用预设,请在命令行中运行 devproxy preset get simulate-azure-openai
并按照说明进行操作。
若要使用开发代理模拟 Azure OpenAI API 响应,需要启用 OpenAIMockResponsePlugin
该文件 devproxyrc.json
。
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
"plugins": [
{
"name": "OpenAIMockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
}
]
}
接下来,将开发代理配置为截获对 Azure OpenAI API 的请求。 为简单起见,请使用通配符截获所有部署的请求。
{
// [...] trimmed for brevity
"urlsToWatch": [
"https://*.openai.azure.com/openai/deployments/*/completions*"
]
}
最后,将开发代理配置为使用本地语言模型。
{
// [...] trimmed for brevity
"languageModel": {
"enabled": true
}
}
完整的配置文件如下所示。
{
"$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v0.29.2/rc.schema.json",
"plugins": [
{
"name": "OpenAIMockResponsePlugin",
"enabled": true,
"pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
}
],
"urlsToWatch": [
"https://*.openai.azure.com/openai/deployments/*/completions*"
],
"languageModel": {
"enabled": true
}
}
模拟 Azure OpenAI API 响应
假设默认配置,使用 llama3.2 语言模型启动 Ollama。 在命令行中,运行 ollama run llama3.2
。
接下来,启动开发代理。 如果使用预设,请运行 devproxy -c "~appFolder/presets/simulate-azure-openai/simulate-azure-openai.json
。 如果使用名为的 devproxyrc.json
自定义配置文件(存储在当前工作目录中),请运行 devproxy
。 Dev Proxy 检查它是否可以访问 Ollama 上的语言模型,并确认它已准备好模拟 Azure OpenAI API 响应。
info OpenAIMockResponsePlugin: Checking language model availability...
info Listening on 127.0.0.1:8000...
Hotkeys: issue (w)eb request, (r)ecord, (s)top recording, (c)lear screen
Press CTRL+C to stop Dev Proxy
运行应用程序并向 Azure OpenAI API 发出请求。 开发代理使用本地语言模型截获请求并模拟响应。
下一步
详细了解 OpenAIMockResponsePlugin。
示例
另请参阅相关的开发代理示例: