代理 OpenAI 请求
OpenAI 提供了对最先进 AI 模型(如 GPT-3)的访问,适用于各种应用,包括自然语言处理、文本生成等。将 OpenAI 的 API 集成到你的应用程序中可以解锁强大的文本分析、内容生成和其他 AI 驱动的任务功能。
APISIX 提供了密钥管理、响应流、限流限速等功能,使其成为代理来自 OpenAI API 端点的请求的绝佳选择。
本指南将向你展示如何配置 APISIX 以与 OpenAI API 集成,使用 ai-proxy 插件代理用户请求和模型响应。
前置条件
获取 OpenAI API 密钥
在继续之前,请创建一个 OpenAI 帐户 和一个 API 密钥。你可以选择将密钥保存到环境变量,如下所示:
export OPENAI_API_KEY=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 # 替换为你的 API 密钥
创建到 OpenAI API 的路 由
创建一个带有 ai-proxy 插件的路由,如下所示:
- Admin API
- ADC
- Ingress Controller
curl "http://127.0.0.1:9180/apisix/admin/routes" -X PUT -d '{
"id": "openai-chat",
"uri": "/anything",
"plugins": {
"ai-proxy": {
"provider": "openai",
"auth": {
"header": {
"Authorization": "Bearer '"$OPENAI_API_KEY"'"
}
},
"options": {
"model": "gpt-3.5-turbo"
}
}
}
}'
❶ 将提供商设置为 openai,这将代理请求到 OpenAI 端点。
❷ 将 OpenAI API 密钥附加到 Authorization 请求头。
❸ 将模型设置为 gpt-3.5-turbo。
services:
- name: OpenAI Service
routes:
- uris:
- /anything
name: openai-chat
plugins:
ai-proxy:
provider: openai
auth:
header:
Authorization: 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
options:
model: "gpt-3.5-turbo"
❶ 将提供商设置为 openai,这将代理请求到 OpenAI 端点。
❷ 将 OpenAI API 密钥附加到 Authorization 请求头。
❸ 将模型设置为 gpt-3.5-turbo。
将配置同步到 APISIX:
adc sync -f adc.yaml
创建一个 Kubernetes 清单文件以配置路由:
- Gateway API
- APISIX CRD
apiVersion: apisix.apache.org/v1alpha1
kind: PluginConfig
metadata:
namespace: ingress-apisix
name: ai-proxy-plugin-config
spec:
plugins:
- name: ai-proxy
config:
provider: openai
auth:
header:
Authorization: "Bearer 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"
options:
model: "gpt-3.5-turbo"
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
namespace: ingress-apisix
name: openai-chat
spec:
parentRefs:
- name: apisix
rules:
- matches:
- path:
type: Exact
value: /anything
filters:
- type: ExtensionRef
extensionRef:
group: apisix.apache.org
kind: PluginConfig
name: ai-proxy-plugin-config
apiVersion: apisix.apache.org/v2
kind: ApisixRoute
metadata:
namespace: ingress-apisix
name: openai-route
spec:
ingressClassName: apisix
http:
- name: openai-route
match:
paths:
- /anything
plugins:
- name: ai-proxy
enable: true
config:
provider: openai
auth:
header:
Authorization: "Bearer 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"
options:
model: "gpt-3.5-turbo"
❶ 将提供商设置为 openai,这将代理请求到 OpenAI 端点。
❷ 将 OpenAI API 密钥附加到 Authorization 请求头。
❸ 将模型设置为 gpt-3.5-turbo。
将配置应用到你的集群:
kubectl apply -f openai-route.yaml
验证
向路由发送带有以下提示的请求:
curl "http://127.0.0.1:9080/anything" -X POST \
-H "Content-Type: application/json" \
-d '{
"messages": [
{
"role": "system",
"content": "You are a computer scientist."
},
{
"role": "user",
"content": "Explain in one sentence what a Turing machine is."
}
]
}'
你应该收到类似以下的响应:
{
...,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "A Turing machine is an abstract mathematical model that manipulates symbols on an infinite tape according to a set of rules, representing the concept of a general-purpose computer."
},
"logprobs": null,
"finish_reason": "stop"
}
],
...
}
有关如何编写请求的更多信息,请参阅 OpenAI 的 API 规范。
下一步
你现在已经学会了如何将 APISIX 与 OpenAI 集成。请参阅 OpenAI 的 API 参考 以了解有关 OpenAI 功能的更多信息。
如果你想与 OpenAI 的 流式 API 集成,你可以使用 proxy-buffering 插件来禁用 NGINX 的 proxy_buffering 指令,以避免缓冲服务器发送事件 (SSE)。