中文
API RESTFul compatible Openai pour le substratum rocheux d'Amazon
Le code source est refactorisé avec la nouvelle API Converse par substraque qui fournit une prise en charge native avec les appels d'outils.
Si vous rencontrez des problèmes, veuillez soulever un problème.
Amazon Bedrock propose une large gamme de modèles de fondation (tels que Claude 3 Opus / Sonnet / Haiku, Llama 2/3, Mistral / Mixtral, etc.) et un large ensemble de capacités pour vous pour créer des applications génératrices d'IA. Consultez la page de destination du substratum rocheux d'Amazon pour plus d'informations.
Parfois, vous pourriez avoir des applications développées à l'aide d'API ou de SDK OpenAI, et vous souhaitez expérimenter avec Amazon Bedrock sans modifier votre base de code. Ou vous pouvez simplement souhaiter évaluer les capacités de ces modèles de fondation dans des outils comme Autogen, etc. Eh bien, ce référentiel vous permet d'accéder à Amazon Bedrock, les modèles de fonds via les API et SDK OpenAI, vous permettant de tester ces modèles sans modifications de code.
Si vous trouvez ce référentiel GitHub utile, veuillez envisager de lui donner une étoile gratuite pour montrer votre appréciation et votre soutien au projet.
Caractéristiques:
Veuillez consulter le guide d'utilisation pour plus de détails sur la façon d'utiliser les nouvelles API.
Remarque: L'API de réalisation du texte hérité n'est pas prise en charge, vous devez changer pour utiliser l'API de complétion de chat.
Famille de modèles de se subminement Amazon pris en charge:
Vous pouvez appeler l'API models pour obtenir la liste complète des ID de modèle pris en charge.
Remarque: Le modèle par défaut est défini sur
anthropic.claude-3-sonnet-20240229-v1:0qui peut être modifié via les variables d'environnement Lambda (DEFAULT_MODEL).
Veuillez vous assurer que vous vous êtes rencontré ci-dessous les conditions préalables:
Pour plus d'informations sur la façon de demander un accès au modèle, veuillez vous référer au guide de l'utilisateur du fondement d'Amazon (configurer> Accès du modèle)
Le diagramme suivant illustre l'architecture de référence. Notez qu'il comprend également un nouveau VPC avec deux sous-réseaux publics uniquement pour l'équilibreur de charge d'application (ALB).
Vous pouvez également choisir d'utiliser AWS Fargate derrière l'ALB au lieu d'AWS Lambda, la principale différence est la latence du premier octet pour la réponse en streaming (Fargate est inférieur).
Alternativement, vous pouvez utiliser l'URL de la fonction lambda pour remplacer ALB, voir l'exemple
Veuillez suivre les étapes ci-dessous pour déployer les API proxy du fondement dans votre compte AWS. Seule les régions où le fondement d'Amazon est disponible (comme us-west-2 ). Le déploiement prendra environ 3 à 5 minutes .
Étape 1: Créez votre propre clé API personnalisée (facultative)
Remarque: Cette étape consiste à utiliser n'importe quelle chaîne (sans espaces) que vous aimez créer une touche API personnalisée (identification) qui sera utilisée pour accéder à l'API proxy plus tard. Cette clé n'a pas à correspondre à votre clé OpenAI réelle, et vous n'avez pas besoin d'avoir une clé API OpenAI. Il est recommandé de faire cette étape et de vous assurer de garder la clé en sécurité et privée.
Étape 2: Déploiement de la pile CloudFormation
Alb + lambda

Alb + fargate

BedrockProxyAPIKey ). Si vous n'avez pas configuré de touche API, laissez ce champ vide. Cliquez sur "Suivant". C'est ça! ? Une fois déployé, cliquez sur l'onglet CloudFormation Stack et allez dans Tabs de sorties , vous pouvez trouver l'URL de base de l'API à partir APIBaseUrl , la valeur doit ressembler à http://xxxx.xxx.elb.amazonaws.com/api/v1 .
Tout ce dont vous avez besoin est la clé API et l'URL de base de l'API. Si vous n'avez pas configuré votre propre clé, la touche API par défaut ( bedrock ) sera utilisée.
Maintenant, vous pouvez essayer les API proxy. Disons que vous souhaitez tester le modèle Claude 3 Sonnet (ID du modèle: anthropic.claude-3-sonnet-20240229-v1:0 ) ...
Exemple d'utilisation de l'API
export OPENAI_API_KEY= < API key >
export OPENAI_BASE_URL= < API base url >
# For older versions
# https://github.com/openai/openai-python/issues/624
export OPENAI_API_BASE= < API base url > curl $OPENAI_BASE_URL /chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer $OPENAI_API_KEY "
-d ' {
"model": "anthropic.claude-3-sonnet-20240229-v1:0",
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
} 'Exemple d'utilisation du SDK
from openai import OpenAI
client = OpenAI ()
completion = client . chat . completions . create (
model = "anthropic.claude-3-sonnet-20240229-v1:0" ,
messages = [{ "role" : "user" , "content" : "Hello!" }],
)
print ( completion . choices [ 0 ]. message . content )Veuillez consulter le guide d'utilisation pour plus de détails sur la façon d'utiliser l'API d'intégration, l'API multimodale et l'appel d'outils.
L'inférence croisée prend en charge l'accès aux modèles de fondation dans toutes les régions, permettant aux utilisateurs d'invoquer des modèles hébergés dans différentes régions AWS pour l'inférence. Principaux avantages:
Veuillez vérifier l'inférence de la région croisée du sel
Limitation: Actuellement, le Bedrock Access Gateway ne prend en charge l'inférence de la région croisée pour les modèles suivants:
Prérequis:
Exemple d'utilisation de l'API:
us.anthropic.claude-3-5-sonnet-20240620-v1:0 curl $OPENAI_BASE_URL /chat/completions
-H " Content-Type: application/json "
-H " Authorization: Bearer $OPENAI_API_KEY "
-d ' {
"model": "us.anthropic.claude-3-5-sonnet-20240620-v1:0",
"max_tokens": 2048,
"messages": [
{
"role": "user",
"content": "Hello!"
}
]
} ' Vous trouverez ci-dessous une image de la configuration du modèle dans Autogen Studio.

Assurez-vous d'utiliser ChatOpenAI(...) au lieu d' OpenAI(...)
# pip install langchain-openai
import os
from langchain . chains import LLMChain
from langchain . prompts import PromptTemplate
from langchain_openai import ChatOpenAI
chat = ChatOpenAI (
model = "anthropic.claude-3-sonnet-20240229-v1:0" ,
temperature = 0 ,
openai_api_key = os . environ [ 'OPENAI_API_KEY' ],
openai_api_base = os . environ [ 'OPENAI_BASE_URL' ],
)
template = """Question: {question}
Answer: Let's think step by step."""
prompt = PromptTemplate . from_template ( template )
llm_chain = LLMChain ( prompt = prompt , llm = chat )
question = "What NFL team won the Super Bowl in the year Justin Beiber was born?"
response = llm_chain . invoke ( question )
print ( response )Cette application ne collecte aucune de vos données. En outre, il ne enregistre aucune demande ou réponse par défaut.
La réponse courte est qu'API Gateway ne prend pas en charge les événements de serveur (SSE) pour la réponse en streaming.
Cette solution ne prend en charge que les régions où le fondement d'Amazon est disponible, comme pour l'instant, ci-dessous la liste.
D'une manière générale, toutes les régions soutenues par le fondement d'Amazon seront également prises en charge, sinon, veuillez soulever un problème dans GitHub.
Notez que tous les modèles ne sont pas disponibles dans ces régions.
Oui, vous pouvez cloner le repo et construire l'image du conteneur par vous-même ( src/Dockerfile ), puis pousser vers votre récompense ECR. Vous pouvez utiliser scripts/push-to-ecr.sh
Remplacez l'URL Repo dans le modèle CloudFormation avant de déployer.
Oui, vous pouvez exécuter cela localement.
L'URL de base de l'API doit ressembler à http://localhost:8000/api/v1 .
En comparant avec l'appel SDK AWS, l'architecture référencée apportera une latence supplémentaire sur la réponse, vous pouvez essayer de tester cela en vous.
En outre, vous pouvez utiliser l'adaptateur Web Lambda + URL de fonction (voir exemple) pour remplacer Alb ou AWS Fargate pour remplacer Lambda pour obtenir de meilleures performances sur la réponse en streaming.
Actuellement, il n'est pas prévu de prendre en charge les modèles Sagemaker. Cela peut changer à condition qu'il y ait une demande des clients.
Les modèles et les modèles affinés avec débit provisionné ne sont actuellement pas pris en charge. Vous pouvez cloner le dépôt et faire la personnalisation si nécessaire.
Pour utiliser les dernières fonctionnalités, vous n'avez pas besoin de redéployer la pile Cloudformation. Vous devez simplement tirer la dernière image.
Pour ce faire, dépend de la version que vous avez déployée:
Deploy new image et cliquez sur Enregistrer.Tasks , sélectionnez la seule tâche qui s'exécute et cliquez simplement sur Stop selected . Une nouvelle tâche avec la dernière image commencera automatiquement. Voir contribuer pour plus d'informations.
Cette bibliothèque est autorisée sous la licence MIT-0. Voir le fichier de licence.