Inglês | 中文
O Azure OpenAI Proxy é um proxy para a API do Azure Openai que pode converter uma solicitação OpenAI para uma solicitação do Azure OpenAI. Ele foi projetado para usar como back -end para vários projetos da web de chatgpt de código aberto. Ele também suporta ser usado como um simples proxy da API OpenAI para resolver o problema da API do OpenAI sendo restrita em algumas regiões.
Destaques:
A versão mais recente do serviço Azure OpenAi suporta atualmente as 3 APIs a seguir:
| Caminho | Status |
|---|---|
| /v1/bate -papo/conclusões | ✅ |
| /v1/conclusões | ✅ |
| /v1/incorporação | ✅ |
Outras APIs não suportadas pelo Azure serão devolvidas em um formato simulado (como solicitações de opções iniciadas pelos navegadores). Se você achar que seu projeto precisa de APIs adicionais apoiadas pelo OpenAi, sinta-se à vontade para enviar um PR.
/v1/models , corrigiu o problema de alguns projetos da Web, dependendo do erro da interface models .options suportadas, corrigiu o problema de erro de verificação de domínio cruzado de alguns projetos da Web. Variáveis de ambiente
| Parâmetros | Descrição | Valor padrão |
|---|---|---|
| Azure_openai_proxy_address | Endereço de escuta de serviço | 0.0.0.0:8080 |
| Azure_openai_proxy_mode | O modo proxy, pode ser "Azure" ou "OpenAI". | Azure |
| Azure_openai_endPoint | O Azure OpenAi endpoint, geralmente se parece com https: // {custom} .openai.azure.com. Obrigatório. | |
| Azure_openai_apiversion | Versão da API do Azure OpenAI. O padrão é 2023-03-15-prevista. | 2023-03-15 PREVISÃO |
| Azure_openai_model_mapper | Uma lista separada por vírgula de modelo = pares de implantação. Mapas Nomes de modelos para nomes de implantação. Por exemplo, gpt-3.5-turbo=gpt-35-turbo , gpt-3.5-turbo-0301=gpt-35-turbo-0301 . Se não houver correspondência, o proxy passará o modelo como nome de implantação diretamente (de fato, a maioria dos nomes dos modelos do Azure é o mesmo com o OpenAI). | gpt-3.5-turbo=gpt-35-turbogpt-3.5-turbo-0301=gpt-35-turbo-0301 |
| Azure_openai_token | Azure OpenAi API Token. Se essa variável de ambiente estiver definida, o token no cabeçalho da solicitação será ignorado. | "" |
Use na linha de comando
curl https://{your-custom-domain}/v1/chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer {your azure api key} "
-d ' {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
} 'Ao acessar a API do Azure OpenAI através do HTTP, ela pode ser usada diretamente como proxy, mas essa ferramenta não possui suporte HTTPS interno; portanto, você precisa de um proxy HTTPS, como o NGINX, para suportar o acesso à versão HTTPS do API OpenAI.
Supondo que o domínio proxy que você configurou seja https://{your-domain}.com , você pode executar os seguintes comandos no terminal para usar o proxy HTTPS:
export https_proxy=https://{your-domain}.com
curl https://api.openai.com/v1/chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer {your azure api key} "
-d ' {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
} 'Ou configure -o como um proxy HTTP em outros projetos de chatgpt de código aberto:
export HTTPS_PROXY=https://{your-domain}.com
Implantando através do Docker
docker pull ishadows/azure-openai-proxy:latest
docker run -d -p 8080:8080 --name=azure-openai-proxy
--env AZURE_OPENAI_ENDPOINT={your azure endpoint}
--env AZURE_OPENAI_MODEL_MAPPER={your custom model mapper ,like: gpt-3.5-turbo=gpt-35-turbo,gpt-3.5-turbo-0301=gpt-35-turbo-0301}
ishadows/azure-openai-proxy:latestChamando
curl https://localhost:8080/v1/chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer {your azure api key} "
-d ' {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}]
} ' Há uma série de regras para mapeamento de modelo predefinido em AZURE_OPENAI_MODEL_MAPPER , e a configuração padrão satisfaz basicamente o mapeamento de todos os modelos do Azure. As regras incluem:
gpt-3.5-turbo > gpt-35-turbogpt-3.5-turbo-0301 > gpt-35-turbo-0301Para modelos de ajuste fino personalizados, o nome do modelo pode ser passado diretamente. Para modelos com nomes de implantação diferentes dos nomes de modelos, os relacionamentos de mapeamento personalizados podem ser definidos, como:
| Nome do modelo | Nome da implantação |
|---|---|
| GPT-3.5-Turbo | GPT-35-Turbo-Upgrade |
| GPT-3.5-Turbo-0301 | GPT-35-TURBO-0301-FION Tuned |
Mit