Amazon Bedrock 是一项完全托管的服务,通过单一 API 提供来自 AI21 Labs、Anthropic、Cohere、Stability AI 和 Amazon 等领先 AI 公司的高性能基础模型 (FM) 选择。从运维的角度来看,拥有一个统一的 API 可以提高开发和部署速度,因为安全性、可扩展性和监控等方面都是标准化的。
然而,在编写与 FM 交互的代码时,开发人员必须手动处理每个 FM 的 API 特性。发生这种情况是因为每个 FM 的架构都是唯一的,并且要执行 API 请求,必须提供正确的正文有效负载。
➡️ 例如,考虑以下提示: When Christmas is celebrated?
使用AI21Labs Jurassic-2 Mid
FM 向 Amazon Bedrock 询问此问题需要以下 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}} "
}
使用Anthropic Claude V2
FM 向 Amazon Bedrock 询问完全相同的问题需要不同的 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 许可证获得许可。请参阅许可证文件。