Amazon Bedrock es un servicio totalmente administrado que ofrece una selección de modelos básicos (FM) de alto rendimiento de empresas líderes en inteligencia artificial como AI21 Labs, Anthropic, Cohere, Stability AI y Amazon con una única API. Desde la perspectiva de Operaciones, tener una única API unificada proporciona velocidad de desarrollo e implementación, ya que aspectos como la seguridad, la escalabilidad y el monitoreo están estandarizados.
Sin embargo, cuando se trata de escribir código para interactuar con los FM, los desarrolladores deben manejar manualmente las peculiaridades de la API de cada FM. Esto sucede porque el esquema de cada FM es único y, para realizar una solicitud de API, se debe proporcionar la carga útil del cuerpo correcto.
➡️ Por ejemplo, considere el siguiente mensaje: When Christmas is celebrated?
Hacer esta pregunta a Amazon Bedrock utilizando AI21Labs Jurassic-2 Mid
FM requiere esta solicitud de 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}} "
}
Hacer exactamente la misma pregunta a Amazon Bedrock utilizando Anthropic Claude V2
FM requiere una solicitud de API diferente:
{
"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 " } "
}
Para reducir la cacofonía, este proyecto presenta una implementación simple pero poderosa para abstraer cada esquema de cada FM. Esto es posible gracias al uso del patrón de diseño Builder que separa la construcción de un objeto complejo de su representación. En este caso, el objeto complejo es el cuerpo de la solicitud que debe enviarse a Amazon Bedrock. Para permitir el uso de diferentes FM, también se utilizó el patrón de diseño Command. Cada FM tiene su implementación del comando. De esta manera, cada FM puede manejar sus parámetros únicos a su manera.
Si quieres aprender a jugar con este código con un tutorial práctico, puedes ver el vídeo de YouTube a continuación.
Para utilizar la implementación de BedrockRequestBody, simplemente invoque el método estático builder()
de la clase y comience a proporcionar los parámetros requeridos, que son modeId
y el prompt
respectivamente. Teniendo en cuenta el mensaje When Christmas is celebrated?
así es como trabajarías con AI21Labs Jurassic-2 Mid
:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "ai21.j2-mid-v1" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
De manera similar, si desea utilizar Anthropic Claude V2
FM, así es como funcionaría:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "anthropic.claude-v2" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
Mucho más sencillo, ¿verdad? ?
Consulte CONTRIBUCIÓN para obtener más información.
Este proyecto tiene la licencia MIT-0. Ver el archivo de LICENCIA.