Skip to main content

Version: 3.10.x

a7-plugin-ai-proxy

Overview

The ai-proxy plugin turns API7 Enterprise Edition (API7 EE) into an AI gateway. It proxies requests in OpenAI-compatible format to LLM providers, handling authentication, endpoint routing, and response streaming. Clients send a standard chat-completion request; the plugin translates and forwards it to the configured provider.

When to Use

  • Proxy chat-completion or embedding requests to any supported LLM provider
  • Centralize API keys at the gateway instead of distributing to clients
  • Add observability (token counts, latency) to LLM calls
  • Combine with ai-prompt-template, ai-prompt-decorator, or content moderation plugins for a full AI gateway pipeline
  • Apply consistent AI proxy configurations directly on services or routes

Supported Providers

ProviderValueDefault Endpoint
OpenAIopenaihttps://api.openai.com/v1/chat/completions
DeepSeekdeepseekhttps://api.deepseek.com/chat/completions
Azure OpenAIazure-openaiCustom via override.endpoint
Anthropicanthropichttps://api.anthropic.com/v1/chat/completions
AIMLAPIaimlapihttps://api.aimlapi.com/v1/chat/completions
OpenRouteropenrouterhttps://openrouter.ai/api/v1/chat/completions
Geminigeminihttps://generativelanguage.googleapis.com/v1beta/openai/chat/completions
Vertex AIvertex-aihttps://aiplatform.googleapis.com
OpenAI-Compatibleopenai-compatibleCustom via override.endpoint

Plugin Configuration Reference

FieldTypeRequiredDefaultDescription
providerstringYesOne of the 9 supported providers
authobjectYesAuthentication config (see below)
optionsobjectNoModel and generation parameters
options.modelstringNoModel name (provider-specific)
options.temperaturenumberNoSampling temperature
options.top_pnumberNoNucleus sampling
options.max_tokensintegerNoMaximum tokens to generate
options.streambooleanNofalseEnable SSE streaming
overrideobjectNoOverride default endpoint
override.endpointstringNoFull URL for the provider API
provider_confobjectNoProvider-specific config (Vertex AI)
provider_conf.project_idstringNoGCP project ID (Vertex AI)
provider_conf.regionstringNoGCP region (Vertex AI)
loggingobjectNoLogging options
logging.summariesbooleanNofalseLog model, duration, tokens
logging.payloadsbooleanNofalseLog request/response bodies
timeoutintegerNo30000Request timeout (ms)
keepalivebooleanNotrueKeep connection alive
keepalive_timeoutintegerNo60000Keepalive timeout (ms)
keepalive_poolintegerNo30Keepalive pool size
ssl_verifybooleanNotrueVerify SSL certificate

Authentication by Provider

OpenAI / DeepSeek / Anthropic / AIMLAPI / OpenRouter

{
"auth": {
"header": {
"Authorization": "Bearer sk-your-api-key"
}
}
}

Azure OpenAI

{
"auth": {
"header": {
"api-key": "your-azure-key"
}
},
"override": {
"endpoint": "https://YOUR-RESOURCE.openai.azure.com/openai/deployments/gpt-4/chat/completions?api-version=2024-02-15-preview"
}
}

Vertex AI (GCP Service Account)

{
"auth": {
"gcp": {
"service_account_json": "{ ... }",
"max_ttl": 3600,
"expire_early_secs": 60
}
},
"provider_conf": {
"project_id": "your-project-id",
"region": "us-central1"
}
}

Step-by-Step: Route to OpenAI

1. Create a route with ai-proxy

All runtime resources like routes must be scoped to a gateway group using --gateway-group or -g.

a7 route create -g default -f - <<'EOF'
{
"id": "openai-chat",
"uri": "/v1/chat/completions",
"methods": ["POST"],
"plugins": {
"ai-proxy": {
"provider": "openai",
"auth": {
"header": {
"Authorization": "Bearer sk-your-openai-key"
}
},
"options": {
"model": "gpt-4",
"temperature": 0.7,
"max_tokens": 1024
}
}
}
}
EOF

2. Send a request

curl http://127.0.0.1:9080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "What is 1+1?"}
]
}'

Using Services

In API7 EE, configure ai-proxy directly on a service or route. Services are the preferred place for reusable upstream and plugin configuration.

a7 service create -g default -f - <<'EOF'
{
"id": "standard-ai-proxy",
"name": "Standard AI Proxy",
"plugins": {
"ai-proxy": {
"provider": "openai",
"auth": {
"header": {
"Authorization": "Bearer sk-global-key"
}
},
"options": {
"model": "gpt-4"
}
}
}
}
EOF

Common Patterns

Streaming responses

{
"plugins": {
"ai-proxy": {
"provider": "openai",
"auth": {
"header": {
"Authorization": "Bearer sk-your-key"
}
},
"options": {
"model": "gpt-4",
"stream": true
}
}
}
}

Model Routing with Multiple Routes

The plugin does not natively route by model. Use separate routes with vars matching on request body fields:

# Route requests for gpt-4 to OpenAI
a7 route create -g default -f - <<'EOF'
{
"id": "openai-gpt4",
"uri": "/v1/chat/completions",
"methods": ["POST"],
"vars": [["post_arg.model", "==", "gpt-4"]],
"plugins": {
"ai-proxy": {
"provider": "openai",
"auth": { "header": { "Authorization": "Bearer sk-openai-key" } },
"options": { "model": "gpt-4" }
}
}
}
EOF

Access Log Variables

VariableDescription
$request_typetraditional_http, ai_chat, or ai_stream
$llm_time_to_first_tokenTime to first token (ms)
$llm_modelActual model used by provider
$request_llm_modelModel requested by client
$llm_prompt_tokensPrompt token count
$llm_completion_tokensCompletion token count

Config Sync Example

Config sync is scoped by gateway group:

a7 config sync -f config.yaml --gateway-group default
version: "1"
routes:
- id: openai-chat
uri: /v1/chat/completions
methods:
- POST
plugins:
ai-proxy:
provider: openai
auth:
header:
Authorization: Bearer sk-your-openai-key
options:
model: gpt-4
max_tokens: 1024
temperature: 0.7

Troubleshooting

SymptomCauseFix
502 Bad GatewayWrong endpoint or provider valueVerify provider matches; check override.endpoint
401 from upstreamInvalid API keyCheck auth.header value
404 Not FoundMissing --gateway-groupEnsure all runtime commands include -g <group>
Azure 404Missing api-version in URLInclude ?api-version=YYYY-MM-DD-preview in override.endpoint

This page is generated from a7-plugin-ai-proxy/SKILL.md in the api7/a7 repository. Browse all skills on the AI Agent Skills page.

API7.ai Logo

The digital world is connected by APIs,
API7.ai exists to make APIs more efficient, reliable, and secure.

Sign up for API7 newsletter

Product

API7 Gateway

SOC2 Type IIISO 27001HIPAAGDPRRed Herring

Copyright © APISEVEN PTE. LTD 2019 – 2026. Apache, Apache APISIX, APISIX, and associated open source project names are trademarks of the Apache Software Foundation