Amazon Bedrock — это полностью управляемый сервис, предлагающий на выбор высокопроизводительные базовые модели (FM) от ведущих компаний в области искусственного интеллекта, таких как AI21 Labs, Anthropic, Cohere, Stability AI и Amazon, с единым API. С точки зрения эксплуатации, наличие единого унифицированного API обеспечивает скорость разработки и развертывания, поскольку такие аспекты, как безопасность, масштабируемость и мониторинг, стандартизированы.
Однако когда дело доходит до написания кода для взаимодействия с FM, разработчикам приходится вручную учитывать особенности API каждого FM. Это происходит потому, что схема каждого FM уникальна, и для выполнения запроса API необходимо предоставить правильную полезную нагрузку тела.
➡️ Например, рассмотрим следующую подсказку: When Christmas is celebrated?
Чтобы задать этот вопрос Amazon Bedrock с использованием AI21Labs Jurassic-2 Mid
FM, требуется следующий запрос 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}} "
}
Чтобы задать тот же вопрос Amazon Bedrock с использованием Anthropic Claude V2
FM, требуется другой запрос API:
{
"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 " } "
}
Чтобы уменьшить какофонию, в этом проекте представлена простая, но мощная реализация, позволяющая абстрагировать схемы от каждой FM. Это возможно благодаря использованию шаблона проектирования Builder, который отделяет построение сложного объекта от его представления. В данном случае сложным объектом является тело запроса, которое необходимо отправить в Amazon Bedrock. Чтобы разрешить использование разных FM, также использовался шаблон проектирования «Команда». У каждого FM своя реализация команды. Таким образом, каждый FM может обрабатывать свои уникальные параметры по-своему.
Если вы хотите научиться играть с этим кодом с помощью практического руководства, вы можете посмотреть видео на YouTube ниже.
Чтобы использовать реализацию BedrockRequestBody, просто вызовите статический метод builder()
из класса и начните предоставлять необходимые параметры, которыми являются modeId
и prompt
соответственно. Учитывая подсказку: When Christmas is celebrated?
вот как вы будете работать с AI21Labs Jurassic-2 Mid
:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "ai21.j2-mid-v1" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
Аналогично, если вы хотите использовать Anthropic Claude V2
FM, вы должны действовать следующим образом:
String bedrockBody = BedrockRequestBody . builder ()
. withModelId ( "anthropic.claude-v2" )
. withPrompt ( "When Christmas is celebrated?" )
. build ();
Гораздо проще, правда? ?
См. ВКЛАД для получения дополнительной информации.
Этот проект лицензируется по лицензии MIT-0. См. файл ЛИЦЕНЗИИ.