O Amazon Bedrock é um serviço totalmente gerenciado que oferece uma variedade de modelos básicos (FMs) de alto desempenho de empresas líderes de IA, como AI21 Labs, Anthropic, Cohere, Stability AI e Amazon, com uma única API. Do ponto de vista de operações, ter uma única API unificada proporciona velocidade de desenvolvimento e implantação, à medida que aspectos como segurança, escalabilidade e monitoramento são padronizados.
Porém, quando se trata de escrever código para interagir com os FMs, os desenvolvedores devem lidar manualmente com as peculiaridades da API de cada FM. Isso acontece porque o esquema de cada FM é único e, para realizar uma solicitação de API, o payload correto do corpo deve ser fornecido.
➡️ Por exemplo, considere a seguinte pergunta: When Christmas is celebrated?
Fazer esta pergunta ao Amazon Bedrock usando o AI21Labs Jurassic-2 Mid
FM requer esta solicitação 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}} "
}
Fazer exatamente a mesma pergunta ao Amazon Bedrock usando o Anthropic Claude V2
FM requer uma solicitação 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 reduzir a cacofonia, este projeto apresenta uma implementação simples, mas poderosa, para abstrair cada esquema de cada FM. Isso é possível graças ao uso do padrão de design Builder que separa a construção de um objeto complexo de sua representação. Nesse caso, o objeto complexo é o corpo da solicitação que deve ser enviado ao Amazon Bedrock. Para permitir a utilização de diferentes FMs, também foi utilizado o padrão de projeto Command. Cada FM tem sua implementação do comando. Dessa forma, cada FM pode lidar com seus parâmetros exclusivos à sua maneira.
Se quiser aprender como brincar com esse código com um tutorial prático, você pode assistir ao vídeo do YouTube abaixo.
Para usar a implementação BedrockRequestBody, basta invocar o método estático builder()
da classe e começar a fornecer os parâmetros necessários, que são o modeId
e o prompt
respectivamente. Considerando a pergunta When Christmas is celebrated?
é assim que você trabalharia com AI21Labs Jurassic-2 Mid
:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "ai21.j2-mid-v1" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
Da mesma forma, se você quiser usar o Anthropic Claude V2
FM, é assim que você trabalharia:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "anthropic.claude-v2" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
Muito mais simples, certo? ?
Consulte CONTRIBUINDO para obter mais informações.
Este projeto está licenciado sob a licença MIT-0. Veja o arquivo LICENÇA.