Amazon Bedrock est un service entièrement géré qui offre un choix de modèles de base très performants provenant de grandes sociétés d'IA et un ensemble de fonctionnalités pour créer des applications d'IA génératives.
Cet exemple de référentiel fournit un exemple d'utilisation de l'appel de fonction à l'aide de l'API Converse avec Anthropic Claude 3 Sonnet, à l'aide de plusieurs outils. Ce référentiel est un exemple uniquement de code, qui montre comment utiliser l'appel de fonction comme outil pour qu'un modèle l'utilise pour récupérer les résultats à l'aide d'un code de fonction simple.
L'API Converse
fournit une interface cohérente qui fonctionne avec tous les modèles prenant en charge les messages. Cela vous permet d'écrire du code une seule fois et de l'utiliser avec différents modèles. Si un modèle possède des paramètres d'inférence uniques, vous pouvez également transmettre ces paramètres uniques au modèle.
L'appel de fonction (également appelé outils) est un moyen de fournir au modèle des conseils descriptifs pour une fonction disponible pour le modèle à utiliser pour répondre à l'entrée de l'utilisateur.
Dans cet exemple, nous demanderons à Claude 3 de répondre, qu'est-ce qu'une valeur boursière, et avec l'option de convertir la devise du symbole par défaut en n'importe quelle devise fournie dans la saisie de l'utilisateur.
Il y a 2 outils à la disposition des modèles :
Le modèle examinera à chaque tour l'invite donnée et décidera s'il peut répondre correctement à la question fournie dans l'entrée de l'utilisateur, chaque tour en fonction de la réponse de Bedrock end_turn
ou tool_use
. end_turn
signifie que la réponse finale a été fournie, et tool_use
analysera les données appropriées selon la description de l'outil qui sera utilisée pour exécuter la fonction de l'outil et reconstruira un résultat approprié pour le modèle.
Cet exemple de code a été testé à l'aide de pyenv avec python 3.12 et défini dans la version .python
Configuration AWS :
us-west-2
et est configurée dans Ask.pyAccès au substrat rocheux :
anthropic.claude-3-sonnet-20240229-v1:0
Autorisations IAM :
Assurez-vous que l'utilisateur IAM qui exécute ce projet dispose des autorisations nécessaires pour appeler les modèles Claude 3. Pour cet exemple, vous pouvez utiliser :
{
"Version" : " 2012-10-17 " ,
"Statement" : [
{
"Sid" : " LeastPrivilege4BRClient " ,
"Effect" : " Allow " ,
"Action" : [
" bedrock:InvokeModel "
],
"Resource" : " arn:aws:bedrock:us-west-2::foundation-model/* "
}]
}
Cela peut être plus restreint en utilisant les moindres privilèges avec l'identifiant de modèle spécifique.
Pour exécuter cet exemple de code, procédez comme suit :
pip install -r requirements.txt
python main.py
--input "new input here"
pour remplacer le texte de saisie utilisateur par défaut.Invite par défaut : « Quel est le cours actuel de l’action Amazon en livres ?
Par exemple, Anthropic Claude 3 Sonnet saura que le ticker Amazon est AMZN, utilisera l'outil pour obtenir la valeur du ticker, puis convertira la devise source du cours de l'action en devise de destination.
À chaque itération d'inférence, lorsqu'un tool_use
est renvoyé, les messages renvoyés seront ajoutés pour construire une conversation comme pour le modèle, en raison de la nature du LLM sans état.
L'invite finale, avant la réponse finale du Claude 3, ressemblera à ceci :
[
{
"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
}
}
]
}
}
]
}
]
Et la réponse finale devrait être similaire à celle-ci : So the current Amazon (AMZN) stock price of $200.00 USD converts to £158.02 GBP.
Remarque : les cours des actions et les taux de change sont très volatils et peuvent changer rapidement. L'exemple de sortie présenté dans ce README peut ne pas refléter les valeurs actuelles du marché. Lors de l'exécution du code, vous obtiendrez des données en temps réel qui peuvent différer des exemples fournis.
Voir CONTRIBUTION pour plus d'informations.
Voir CONTRIBUTION pour plus d'informations.
Ce projet est sous licence Apache-2.0.