Amazon Bedrock ist ein vollständig verwalteter Dienst, der eine Auswahl leistungsstarker Basismodelle von führenden KI-Unternehmen und eine Reihe von Funktionen zum Erstellen generativer KI-Anwendungen bietet.
Dieses Beispiel-Repo bietet ein Beispiel für die Verwendung von Funktionsaufrufen mithilfe der Converse-API mit Anthropic Claude 3 Sonnet und unter Verwendung mehrerer Tools. Bei diesem Repo handelt es sich um einen reinen Beispielcode, der zeigt, wie Funktionsaufrufe als Werkzeuge für ein Modell zum Abrufen von Ergebnissen mithilfe von einfachem Funktionscode verwendet werden.
Die Converse
-API bietet eine konsistente Schnittstelle, die mit allen Modellen funktioniert, die Nachrichten unterstützen. Dadurch können Sie Code einmal schreiben und ihn mit verschiedenen Modellen verwenden. Sollte ein Modell über eindeutige Inferenzparameter verfügen, können Sie diese eindeutigen Parameter auch an das Modell übergeben.
Funktionsaufrufe (auch als Tools bezeichnet) sind eine Möglichkeit, dem Modell eine beschreibende Anleitung für eine Funktion bereitzustellen, die dem Modell zur Beantwortung der Benutzereingaben zur Verfügung steht.
In diesem Beispiel bitten wir einen Claude 3 um die Frage, was ein Börsentickerwert ist, und mit der Option, die Standardtickerwährung in eine beliebige Währung umzurechnen, die in der Benutzereingabe angegeben wurde.
Den Modellen stehen zwei Tools zur Verfügung:
Das Modell überprüft in jeder Runde die gegebene Eingabeaufforderung und entscheidet, ob es die in der Benutzereingabe bereitgestellte Frage richtig beantworten kann, und zwar in jeder Runde entsprechend der Antwort von Bedrock end_turn
oder tool_use
. end_turn
bedeutet, dass die endgültige Antwort bereitgestellt wurde, und tool_use
analysiert die entsprechenden Daten gemäß der Werkzeugbeschreibung, die zum Ausführen der Werkzeugfunktion verwendet werden, und erstellt ein korrektes Ergebnis zurück in das Modell.
Dieser Beispielcode wurde mit pyenv mit Python 3.12 getestet und in der .python-Version festgelegt
AWS-Konfiguration :
us-west-2
und muss in ask.py konfiguriert werdenZugang zum Grundgestein :
anthropic.claude-3-sonnet-20240229-v1:0
angezeigtIAM-Berechtigungen :
Stellen Sie sicher, dass der IAM-Benutzer, der dieses Projekt ausführt, über die Berechtigungen zum Aufrufen von Claude 3-Modellen verfügt. Für dieses Beispiel können Sie Folgendes verwenden:
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " LeastPrivilege4BRClient " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel "
],
"Resource" : " arn:aws:bedrock:us-west-2::foundation-model/* "
}]
}
Dies kann durch die Verwendung der geringsten Berechtigungen mit der spezifischen Modell-ID stärker eingeschränkt werden.
Um diesen Beispielcode auszuführen, führen Sie die folgenden Schritte aus:
pip install -r requirements.txt
auspython main.py
aus--input "new input here"
hinzufügen, um den standardmäßigen Benutzereingabetext zu überschreiben.Standard-Eingabeaufforderung : „Wie hoch ist der aktuelle Aktienkurs der Amazon-Aktie in Pfund?“
Beispielsweise erkennt Anthropic Claude 3 Sonnet, dass der Amazon-Ticker AMZN ist, ermittelt mithilfe des Tools den Tickerwert und rechnet dann die Quellwährung des Aktienkurses in die Zielwährung um.
Bei jeder Iteration der Inferenz werden, wenn ein tool_use
zurückgegeben wird, die zurückgegebenen Nachrichten angehängt, um eine Konversation wie für das Modell aufzubauen, da LLMs zustandslos sind.
Die letzte Eingabeaufforderung vor der endgültigen Antwort von Claude 3 sieht etwa so aus:
[
{
"role" : " user " ,
"content" : [
{
"text" : " What is the current stock price of amazon stock in pounds? "
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " Okay, let me get the current Amazon (AMZN) stock price and convert it to British pounds for you: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"name" : " get_stock_price " ,
"input" : {
"ticker" : " AMZN "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_7ofuIPr8T3uBsK2xy1GZBw " ,
"content" : [
{
"json" : {
"ticker" : " AMZN " ,
"price" : 200 ,
"currency" : " USD "
}
}
]
}
}
]
},
{
"role" : " assistant " ,
"content" : [
{
"text" : " The current Amazon stock price is $200.00 USD. To convert that to British pounds: "
},
{
"toolUse" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"name" : " convert_currency " ,
"input" : {
"amount" : 200 ,
"source_currency" : " USD " ,
"target_currency" : " GBP "
}
}
}
]
},
{
"role" : " user " ,
"content" : [
{
"toolResult" : {
"toolUseId" : " tooluse_lyTta3oMSfik5EhsCnnkGg " ,
"content" : [
{
"json" : {
"converted_currency" : 158.0185237159697
}
}
]
}
}
]
}
]
Und die endgültige Antwort sollte ähnlich sein: So the current Amazon (AMZN) stock price of $200.00 USD converts to £158.02 GBP.
Hinweis: Aktienkurse und Wechselkurse sind sehr volatil und können sich schnell ändern. Die in dieser README-Datei gezeigte Beispielausgabe spiegelt möglicherweise nicht die aktuellen Marktwerte wider. Wenn Sie den Code ausführen, erhalten Sie Echtzeitdaten, die von den bereitgestellten Beispielen abweichen können.
Weitere Informationen finden Sie unter BEITRAGEN.
Weitere Informationen finden Sie unter BEITRAGEN.
Dieses Projekt ist unter der Apache-2.0-Lizenz lizenziert.