中文
OpenAI-kompatible Rastful-APIs für Amazon-Grundgestein
Der Quellcode wird mit der neuen Converse -API von Bedrock neu gestaltet, die native Unterstützung mit Tool -Aufrufen bietet.
Wenn Sie Probleme haben, stellen Sie bitte ein Problem an.
Amazon Bedrock bietet eine breite Palette von Fundamentmodellen (wie Claude 3 Opus/Sonnet/Haiku, Lama 2/3, Mistral/Mixtral usw.) und eine breite Anzahl von Funktionen, damit Sie generative KI -Anwendungen erstellen können. Weitere Informationen finden Sie auf der Amazon -Landing -Landing -Seite.
Manchmal haben Sie möglicherweise Anwendungen mit OpenAI -APIs oder SDKs entwickelt, und Sie möchten mit Amazon Bedrock experimentieren, ohne Ihre Codebasis zu ändern. Oder Sie möchten einfach die Funktionen dieser Fundamentmodelle in Tools wie Autogen usw. bewerten. Nun, dieses Repository ermöglicht es Ihnen, über OpenAI -APIs und SDKs nahtlos auf Amazon -Grundgesteinsmodelle zuzugreifen, sodass Sie diese Modelle ohne Codeänderung testen können.
Wenn Sie dieses Github -Repository nützlich finden, sollten Sie ihm einen kostenlosen Star geben, um Ihre Wertschätzung und Unterstützung für das Projekt zu zeigen.
Merkmale:
Bitte überprüfen Sie den Verwendungshandbuch für weitere Informationen zur Verwendung der neuen APIs.
HINWEIS: Die API der Legacy -Textabschluss wird nicht unterstützt. Sie sollten sich ändern, um die Chat -Abschluss -API zu verwenden.
Unterstützte Amazon -Grundgesteinsmodelle Familie:
Sie können die models
API anrufen, um die vollständige Liste der unterstützten Modell -IDs zu erhalten.
Hinweis: Das Standardmodell ist auf
anthropic.claude-3-sonnet-20240229-v1:0
, was über Lambda-Umgebungsvariablen (DEFAULT_MODEL
) geändert werden kann.
Bitte stellen Sie sicher, dass Sie unten die Voraussetzungen getroffen haben:
Weitere Informationen zum Anfordern von Modellzugriff finden Sie in der Amazon -Bedrock -Benutzerhandbuch (Einrichten> Modellzugriff).
Das folgende Diagramm zeigt die Referenzarchitektur. Beachten Sie, dass es auch ein neues VPC mit zwei öffentlichen Subnetzen nur für den Anwendungslastausgleich (ALB) enthält.
Sie können auch AWS Fargate hinter dem ALB anstelle von AWS Lambda verwenden. Der Hauptunterschied ist die Latenz des ersten Byte für die Streaming -Reaktion (Fargate ist niedriger).
Alternativ können Sie die Lambda -Funktions -URL verwenden, um ALB zu ersetzen, siehe Beispiel
Befolgen Sie die folgenden Schritte, um die Grundgestein -Proxy -APIs in Ihrem AWS -Konto einzusetzen. Unterstützt nur Regionen, in denen das Amazon-Grundgestein verfügbar ist (z. B. us-west-2
). Der Einsatz dauert ungefähr 3-5 Minuten .
Schritt 1: Erstellen Sie Ihren eigenen benutzerdefinierten API -Schlüssel (optional)
Hinweis: Dieser Schritt besteht darin, eine Zeichenfolge (ohne Leerzeichen) zu verwenden, die Sie einen benutzerdefinierten API -Schlüssel (Anmeldeinformationen) erstellen möchten, mit dem später auf die Proxy -API zugreifen wird. Dieser Schlüssel muss nicht mit Ihrem tatsächlichen OpenAI -Schlüssel übereinstimmen, und Sie müssen keinen OpenAI -API -Schlüssel haben. Es wird empfohlen, diesen Schritt zu tun und sicherzustellen, dass Sie den Schlüssel sicher und privat aufbewahren.
Schritt 2: Stellen Sie den CloudFormation -Stapel bereit
ALB + Lambda
ALB + Fargate
BedrockProxyAPIKey
) verwendet haben. Wenn Sie keine API -Taste eingerichtet haben, lassen Sie dieses Feld leer. Klicken Sie auf "Weiter". Das ist es! ? Nach der Bereitstellung klicken Sie auf den CloudFormation -Stapel und gehen Sie auf die Registerkarte Ausgaben . Sie finden die API -Basis -URL von APIBaseUrl
. Der Wert sollte wie http://xxxx.xxx.elb.amazonaws.com/api/v1
aussehen.
Alles, was Sie brauchen, ist der API -Schlüssel und die URL der API -Basis. Wenn Sie Ihre eigene Schlüssel nicht eingerichtet haben, wird die Standard -API -Taste ( bedrock
) verwendet.
Jetzt können Sie die Proxy -APIs ausprobieren. Angenommen, Sie möchten das Claude 3-Sonnet-Modell testen (Modell ID: anthropic.claude-3-sonnet-20240229-v1:0
) ...
Beispiel API -Verwendung
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!"
}
]
} '
Beispiel SDK -Verwendung
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 )
Bitte überprüfen Sie die Verwendungshandbuch, um weitere Informationen zur Einbettung von API, multimodaler API und Tool -Anruf zu verwenden.
Cross-Region-Inferenz unterstützt den Zugriff auf Grundmodelle in allen Regionen, sodass Benutzer Modelle aufrufen können, die in verschiedenen AWS-Regionen für Inferenz gehostet werden. Hauptvorteile:
Bitte überprüfen Sie die Grundlage für Grundgesteinskreuzungen
Begrenzung: Derzeit unterstützt das Grundgestein Access Gateway nur die Cross-Region-Inferenz für die folgenden Modelle:
Voraussetzungen:
Beispiel API -Verwendung:
us.anthropic.claude-3-5-sonnet-20240620-v1:0
angeben. 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!"
}
]
} '
Unten finden Sie ein Bild des Einrichtens des Modells in Autogen Studio.
Stellen Sie sicher, dass Sie ChatOpenAI(...)
anstelle von OpenAI(...)
verwenden
# 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 )
Diese Anwendung sammelt keine Ihrer Daten. Darüber hinaus protokolliert es standardmäßig keine Anforderungen oder Antworten.
Kurze Antwort ist, dass API Gateway keine Server-Sent-Ereignisse (SSE) für die Streaming-Antwort unterstützt.
Diese Lösung unterstützt nur die Regionen, in denen das Amazon -Grundgestein verfügbar ist, da unten die Liste.
Im Allgemeinen werden alle Regionen, die Amazon -Grundgestein unterstützt, auch unterstützt, wenn nicht, bitte ein Problem in GitHub anwerfen.
Beachten Sie, dass nicht alle Modelle in diesen Regionen verfügbar sind.
Ja, Sie können das Repo klonen und das Containerbild selbst ( src/Dockerfile
) erstellen und dann auf Ihr ECR -Repo schieben. Sie können scripts/push-to-ecr.sh
verwenden
Ersetzen Sie die Repo -URL in der CloudFormation -Vorlage, bevor Sie bereitstellen.
Ja, Sie können das vor Ort ausführen.
Die URL der API -Basis sollte wie http://localhost:8000/api/v1
aussehen.
Im Vergleich zum AWS -SDK -Aufruf wird die referenzierte Architektur zusätzliche Latenz für die Antwort bringen. Sie können versuchen, dies auf Sie zu testen.
Außerdem können Sie Lambda Web Adapter + Function URL (siehe Beispiel) verwenden, um ALB oder AWS Fargate zu ersetzen, um Lambda zu ersetzen, um eine bessere Leistung bei der Streaming -Reaktion zu erzielen.
Derzeit gibt es keinen Plan, Sagemaker -Modelle zu unterstützen. Dies kann sich ändern, vorausgesetzt, es gibt eine Nachfrage von Kunden.
Feinabstimmige Modelle und Modelle mit vorgesehenem Durchsatz werden derzeit nicht unterstützt. Sie können das Repo klonen und bei Bedarf die Anpassung vornehmen.
Um die neuesten Funktionen zu verwenden, müssen Sie den CloudFormation -Stack nicht neu einsetzen. Sie müssen einfach das neueste Bild ziehen.
Zu diesem Zweck hängt davon ab, welche Version Sie bereitgestellt haben:
Deploy new image
und klicken Sie auf Speichern.Tasks
tab, select the only task that is running and simply click Stop selected
menu. Eine neue Aufgabe mit dem neuesten Bild beginnt automatisch. Weitere Informationen finden Sie unter Beitrag.
Diese Bibliothek ist im Rahmen der MIT-0-Lizenz lizenziert. Siehe die Lizenzdatei.