Simular a API do OpenAI do Azure

Visão geral
Objetivo: Simular o Azure OpenAI usando LLM local
Tempo: 15 minutos
Plugins:OpenAIMockResponsePlugin
Pré-requisitos:Configurar o Proxy de Desenvolvimento, modelo de idioma local

Quando você cria aplicativos conectados ao Azure OpenAI, muitas vezes, apenas uma parte do aplicativo interage com a API do Azure OpenAI. Ao trabalhar nas partes do aplicativo que não exigem respostas reais da API OpenAI do Azure, você pode simular as respostas usando o Dev Proxy. Usar respostas simuladas permite evitar custos desnecessários. O OpenAIMockResponsePlugin usa um modelo de linguagem local em execução na sua máquina para simular respostas da API Azure OpenAI.

Antes de começar

Para simular respostas da API do OpenAI do Azure usando o Dev Proxy, você precisa de um cliente de modelo de linguagem compatível instalado no computador.

Por padrão, o Dev Proxy usa o modelo de linguagem llama3.2 em execução no Ollama. Para usar um cliente ou modelo diferente, atualize as configurações do modelo de linguagem no arquivo de configuração do Dev Proxy.

Configurar o Dev Proxy para simular as respostas da API do Azure OpenAI

Dica

As etapas descritas neste tutorial estão disponíveis em uma predefinição pronta para uso do Dev Proxy. Para usar a predefinição, na linha de comando, execute devproxy config get simulate-azure-openaie siga as instruções.

Para simular respostas da API do Azure OpenAI usando o Dev Proxy, você precisa habilitar o OpenAIMockResponsePlugin no arquivo devproxyrc.json.

Arquivo:devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/rc.schema.json",
  "plugins": [
    {
      "name": "OpenAIMockResponsePlugin",
      "enabled": true,
      "pluginPath": "~appFolder/plugins/DevProxy.Plugins.dll"
    }
  ]
}

Em seguida, configure o Dev Proxy para interceptar solicitações para a Azure OpenAI API. Para simplificar, use caracteres curinga para interceptar solicitações para todas as implantações.

Arquivo: devproxyrc.json

{
  // [...] trimmed for brevity
  "urlsToWatch": [
    "https://*.openai.azure.com/openai/deployments/*/completions*"
  ]
}

Por fim, configure o Dev Proxy para usar um modelo de linguagem local.

Arquivo: devproxyrc.json

{
  // [...] trimmed for brevity
  "languageModel": {
    "enabled": true
  }
}

O arquivo de configuração completo tem esta aparência.

Arquivo: devproxyrc.json

{
  "$schema": "https://raw.githubusercontent.com/dotnet/dev-proxy/main/schemas/v4.0.0/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
  }
}

Simular respostas da API do Azure OpenAI

Considerando a configuração padrão, inicie o Ollama com o modelo de linguagem llama3.2. Na linha de comando, execute ollama run llama3.2.

Em seguida, inicie o Dev Proxy. Se você usar a predefinição, execute devproxy --config-file "~dataFolder/configs/simulate-azure-openai/.devproxy/devproxyrc.json". Se você usar um arquivo de configuração personalizado chamado devproxyrc.json, armazenado no diretório de trabalho atual, execute devproxy. O Proxy de Desenvolvimento verifica se ele pode acessar o modelo de linguagem no Ollama e confirma que está pronto para simular as respostas da API OpenAI do Azure.

 info    OpenAIMockResponsePlugin: Checking language model availability...
 info    Dev Proxy (Kestrel engine) 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

Execute seu aplicativo e faça solicitações para a API OpenAI do Azure. O Dev Proxy intercepta as solicitações e simula as respostas usando o modelo de idioma local.

Captura de tela de um prompt de comando com o Dev Proxy simulando a resposta de uma solicitação para a API do Azure OpenAI.

Próxima etapa

Saiba mais sobre o OpenAIMockResponsePlugin.

Amostras

Confira também os exemplos relacionados do Dev Proxy: