Chinois simplifié |
Caractéristiques | Guide de déploiement |
Important
Il y aura des ajustements majeurs en configuration après V0.7.0 et sera incompatible avec les versions précédentes. Il est plus pratique à configurer via l'interface utilisateur et offre des options de configuration plus puissantes.
Openai-Forward est un service de transfert efficace pour les modèles de grande langue. Ses fonctions principales incluent le contrôle du taux de demande de l'utilisateur, la limitation des taux de jetons, la mise en cache de prédiction intelligente, la gestion des journaux et la gestion des clés de l'API, etc., visant à fournir des services de transfert de modèles efficaces et pratiques. Qu'il s'agisse d'un modèle de langue locale proxy ou d'un modèle de langue du cloud, tel que localai ou openai, il peut être facilement mis en œuvre par Openai en avant. Grâce au soutien de bibliothèques telles que Uvicorn, Aiohttp et Asyncio, OpenAI-Forward réalise une excellente performance asynchrone.
L'adresse de service de l'agent construite par ce projet:
Adresse de service OpenAI d'origine
https://api.openai-forward.com
https://render.openai-forward.com
L'adresse de service qui permet le cache (le résultat de la demande de l'utilisateur sera enregistré pendant une période)
https://smart.openai-forward.com
Déployer la documentation
Installer
pip install openai-forward
# 或安装webui版本:
pip install openai-forward[webui]
Démarrer le service
aifd run
# 或启动带webui的服务
aifd run --webui
Si vous lisez la configuration .env
du chemin racine, vous verrez les informations de démarrage suivantes
❯ 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)
L'option par défaut pour aifd run
est proxy https://api.openai.com
Ce qui suit est un exemple de l'adresse de service établie https://api.openai-forward.com
Python
from openai import OpenAI # pip install openai>=1.0.0
client = OpenAI(
+ base_url="https://api.openai-forward.com/v1",
api_key="sk-******"
)
Scénarios applicables: utilisé avec localai, API-for-open-llm et d'autres projets
Comment faire: Prenez un exemple FORWARD_CONFIG=[{"base_url":"http://localhost:8080","route":"/localai","type":"openai"}]
. Vous pouvez ensuite utiliser localai en visitant http: // localhost: 8000 / localai.
(Plus)
Configurer les variables d'environnement ou les fichiers .env comme suit:
FORWARD_CONFIG = [{"base_url":"https://generativelanguage.googleapis.com","route":"/gemini","type":"general"}]
Remarque: après le démarrage aidf run
, vous pouvez utiliser Gemini Pro en visitant http: // localhost: 8000 / gemini.
Scénario 1: Utilisez un transfert universel pour transmettre les services à partir de toute source, et vous pouvez obtenir le contrôle du taux de demande et le contrôle des taux de jetons; mais le transfert universel ne prend pas en charge les clés personnalisées.
Scénario 2: Les formats API de nombreux modèles cloud peuvent être convertis au format API d'OpenAI via Litellm, puis transmis à l'aide d'Openai Style
(Plus)
Exécuter aifd run --webui
pour entrer la page de configuration (adresse de service par défaut http: // localhost: 8001)
Vous pouvez créer un fichier .env dans le répertoire exécuté du projet pour personnaliser diverses configurations. Le fichier .env.example dans le répertoire racine peut être vu dans la configuration de référence.
Une fois le cache activé, le contenu de l'itinéraire spécifié sera mis en cache et les types general
transfert sont respectivement openai
et general
, et les comportements sont légèrement différents.
Lorsque vous utilisez un transfert openai
, après avoir ouvert le cache, vous pouvez utiliser le paramètre extra_body
d'Openai pour contrôler le comportement du cache, tel que
Python
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}
)
Boucle
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
} '
Voir le fichier .env
Cas d'utilisation:
import openai
+ openai.api_base = "https://api.openai-forward.com/v1"
- openai.api_key = "sk-******"
+ openai.api_key = "fk-******"
Voir .env.example
pour utiliser les cas d'utilisation pour transmettre des services avec différentes adresses vers différentes itinéraires vers le même port.
Le chemin de sauvegarde est dans Log/openai/chat/chat.log
dans le répertoire actuel.
Le format d'enregistrement est
{'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 au format json
:
aifd convert
Obtenez 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? "
}
]
Contribuer à ce projet est la bienvenue en soumettant une demande de traction ou en soulevant des questions dans le référentiel.
Openai-Forward utilise une licence MIT.