Amazon Bedrock est un service entièrement géré qui offre un choix de modèles de base (FM) hautes performances provenant de grandes sociétés d'IA telles que AI21 Labs, Anthropic, Cohere, Stability AI et Amazon avec une seule API. Du point de vue des opérations, disposer d’une seule API unifiée permet d’accélérer le développement et le déploiement, car des aspects tels que la sécurité, l’évolutivité et la surveillance sont standardisés.
Cependant, lorsqu'il s'agit d'écrire du code pour interagir avec les FM, les développeurs doivent gérer manuellement les particularités API de chaque FM. Cela se produit parce que le schéma de chaque FM est unique et que pour effectuer une requête API, la charge utile du corps correcte doit être fournie.
➡️ Par exemple, considérons la question suivante : When Christmas is celebrated?
Poser cette question à Amazon Bedrock à l'aide de l' AI21Labs Jurassic-2 Mid
FM nécessite cette requête API :
{
"modelId" : " ai21.j2-mid-v1 " ,
"contentType" : " application/json " ,
"accept" : " */* " ,
"body" : " { " prompt " : " When Christmas is celebrated? " , " maxTokens " :200, " temperature " :0.7, " topP " :1, " stopSequences " :[], " countPenalty " :{ " scale " :0}, " presencePenalty " :{ " scale " :0}, " frequencyPenalty " :{ " scale " :0}} "
}
Poser exactement la même question à Amazon Bedrock à l'aide d' Anthropic Claude V2
FM nécessite une requête API différente :
{
"modelId" : " anthropic.claude-v2 " ,
"contentType" : " application/json " ,
"accept" : " */* " ,
"body" : " { " prompt " : " Human: \ n \ nHuman: When Christmas is celebrated? \ n \ nAssistant: " , " max_tokens_to_sample " :300, " temperature " :1, " top_k " :250, " top_p " :0.999, " stop_sequences " :[ "\ n \ nHuman: " ], " anthropic_version " : " bedrock-2023-05-31 " } "
}
Pour réduire la cacophonie, ce projet introduit une implémentation simple mais puissante pour extraire chacun des schémas de chaque FM. Ceci est possible grâce à l'utilisation du modèle de conception Builder qui sépare la construction d'un objet complexe de sa représentation. Dans ce cas, l'objet complexe est le corps de la requête qui doit être envoyé à Amazon Bedrock. Pour permettre l'utilisation de différents FM, le modèle de conception Command a également été utilisé. Chaque FM a sa propre implémentation de la commande. De cette façon, chaque FM peut gérer ses paramètres uniques à sa manière.
Si vous souhaitez apprendre à jouer avec ce code avec un didacticiel pratique, vous pouvez regarder la vidéo YouTube ci-dessous.
Pour utiliser l'implémentation BedrockRequestBody, invoquez simplement la méthode statique builder()
à partir de la classe et commencez à fournir les paramètres requis, qui sont respectivement le modeId
et l' prompt
. Considérant la question When Christmas is celebrated?
voici comment vous travailleriez avec AI21Labs Jurassic-2 Mid
:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "ai21.j2-mid-v1" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
De même, si vous souhaitez utiliser l' Anthropic Claude V2
FM, voici comment procéder :
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "anthropic.claude-v2" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
Beaucoup plus simple, non ? ?
Voir CONTRIBUTION pour plus d'informations.
Ce projet est sous licence MIT-0. Voir le fichier LICENCE.