Chino simplificado |
Características |
Importante
Habrá ajustes importantes en la configuración después de V0.7.0 y será incompatible con versiones anteriores. Es más conveniente configurar a través de la interfaz de usuario y proporciona opciones de configuración más potentes.
OpenAI-Forward es un servicio de reenvío eficiente para modelos de idiomas grandes. Sus funciones centrales incluyen el control de la tasa de solicitud del usuario, la limitación de la tasa de token, el almacenamiento en caché de predicción inteligente, la gestión de registros y la gestión de claves API, etc., con el objetivo de proporcionar servicios de reenvío de modelos eficientes y convenientes. Ya sea que se trate de un modelo de idioma local proxy o un modelo de lenguaje en la nube, como Localai o OpenAI, OpenAI puede implementarlo fácilmente. Gracias al apoyo de bibliotecas como Uvicorn, AIOHTTP y Asyncio, OpenAI-Forward logra un excelente rendimiento asíncrono.
La dirección de servicio del agente creada por este proyecto:
Dirección original de servicio Operai
https://api.openai-forward.com
https://render.openai-forward.com
La dirección de servicio que habilita la caché (el resultado de la solicitud del usuario se guardará por un período de tiempo)
https://smart.openai-forward.com
Implementar la documentación
Instalar
pip install openai-forward
# 或安装webui版本:
pip install openai-forward[webui]
Iniciar el servicio
aifd run
# 或启动带webui的服务
aifd run --webui
Si lee la configuración .env
de la ruta raíz, verá la siguiente información de inicio
❯ aifd run
╭────── ? openai-forward is ready to serve ! ───────╮
│ │
│ base url https://api.openai.com │
│ route prefix / │
│ api keys False │
│ forward keys False │
│ cache_backend MEMORY │
╰────────────────────────────────────────────────────╯
╭──────────── ⏱️ Rate Limit configuration ───────────╮
│ │
│ backend memory │
│ strategy moving-window │
│ global rate limit 100/minute (req) │
│ /v1/chat/completions 100/2minutes (req) │
│ /v1/completions 60/minute ; 600/hour (req) │
│ /v1/chat/completions 60/second (token) │
│ /v1/completions 60/second (token) │
╰────────────────────────────────────────────────────╯
INFO: Started server process [191471]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on http://0.0.0.0:8000 (Press CTRL+C to quit)
La opción predeterminada para aifd run
es proxy https://api.openai.com
El siguiente es un ejemplo de la dirección de servicio establecida https://api.openai-forward.com
Pitón
from openai import OpenAI # pip install openai>=1.0.0
client = OpenAI(
+ base_url="https://api.openai-forward.com/v1",
api_key="sk-******"
)
Escenarios aplicables: utilizado con LocalAi, API-for-Open-LLM y otros proyectos
Cómo hacer: Tome FORWARD_CONFIG=[{"base_url":"http://localhost:8080","route":"/localai","type":"openai"}]
como ejemplo. Luego puede usar localai visitando http: // localhost: 8000/localai.
(Más)
Configurar variables de entorno o archivos .env de la siguiente manera:
FORWARD_CONFIG = [{"base_url":"https://generativelanguage.googleapis.com","route":"/gemini","type":"general"}]
Nota: Después de comenzar aidf run
, puede usar Gemini Pro visitando http: // localhost: 8000/Gemini.
Escenario 1: Use el reenvío Universal para reenviar los servicios de cualquier fuente, y puede obtener el control de la tasa de solicitud y el control de tasa de token;
Escenario 2: Los formatos API de muchos modelos de nubes se pueden convertir en formato API de OpenAI a través de Litellm, y luego se reenvían utilizando estilo OpenAI
(Más)
Ejecutar aifd run --webui
para ingresar la página de configuración (dirección de servicio predeterminada http: // localhost: 8001)
Puede crear un archivo .env en el directorio ejecutivo del proyecto para personalizar varias configuraciones. El archivo .env.example en el directorio raíz se puede ver en la configuración de referencia.
Después de que el caché esté habilitado, el contenido de la ruta especificada se almacenará en caché, y los tipos general
reenvío son openai
y general
, respectivamente, y los comportamientos son ligeramente diferentes.
Al usar el reenvío de openai
, después de abrir el caché, puede usar el parámetro extra_body
de OpenAI para controlar el comportamiento de la memoria caché, como
Pitón
from openai import OpenAI
client = OpenAI(
+ base_url="https://smart.openai-forward.com/v1",
api_key="sk-******"
)
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Hello!"}
],
+ extra_body={"caching": True}
)
Rizo
curl https://smart.openai.com/v1/chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer sk-****** "
-d ' {
"model": "gpt-3.5-turbo",
"messages": [{"role": "user", "content": "Hello!"}],
"caching": true
} '
Ver archivo .env
Casos de uso:
import openai
+ openai.api_base = "https://api.openai-forward.com/v1"
- openai.api_key = "sk-******"
+ openai.api_key = "fk-******"
Consulte .env.example
para usar los casos de uso para servicios de reenvío con diferentes direcciones a diferentes rutas al mismo puerto.
La ruta Guardar está en Log/openai/chat/chat.log
en el directorio actual.
El formato de registro es
{'messages': [{'role': 'user', 'content': 'hi'}], 'model': 'gpt-3.5-turbo', 'stream': True, 'max_tokens': None, 'n': 1, 'temperature': 1, 'top_p': 1, 'logit_bias': None, 'frequency_penalty': 0, 'presence_penalty': 0, 'stop': None, 'user': None, 'ip': '127.0.0.1', 'uid': '2155fe1580e6aed626aa1ad74c1ce54e', 'datetime': '2023-10-17 15:27:12'}
{'assistant': 'Hello! How can I assist you today?', 'is_tool_calls': False, 'uid': '2155fe1580e6aed626aa1ad74c1ce54e'}
Convertir al formato json
:
aifd convert
Obtenga chat_openai.json
:
[
{
"datetime" : " 2023-10-17 15:27:12 " ,
"ip" : " 127.0.0.1 " ,
"model" : " gpt-3.5-turbo " ,
"temperature" : 1 ,
"messages" : [
{
"user" : " hi "
}
],
"tools" : null ,
"is_tool_calls" : false ,
"assistant" : " Hello! How can I assist you today? "
}
]
Contribuir a este proyecto es bienvenido enviando una solicitud de extracción o preguntas en el repositorio.
OpenAI-Forward utiliza una licencia MIT.