Amazon Bedrock,一个来自亚马逊云科技的一项全面、安全和灵活的服务,用于构建生成式 AI 应用程序和代理。Amazon Bedrock 支持连接到领先的基础模型 (FM)、用于部署和运行代理的服务、用于微调、保护和优化模型的工具,以及用于将应用程序连接到最新数据的知识库,从而使我们开发者拥有从实验快速过渡到实际部署所需的一切。Amazon Bedrock 提供了广泛的基础模型(如Claude 3 Opus/Sonnet/Haiku、Llama 2/3、Mistral/Mixtral等),以及构建生成式AI应用程序的多种功能。
在这里,我们也可以使用 OpenAI 的 API 或 SDK 无缝集成并试用 Amazon Bedrock 的模型,无需对现有代码进行修改,这样更为方便。在这里,Bedrock Access Gateway (BAG)是官方开发的一个Proxy小工具,可以通过利用CloudFormation快速部署。实现兼容 OpenAI API 的代理,使我们不需要修改任何代码,就可以把 OpenAI API 的调用转发到 Amazon Bedrock,从而获得包括 Claude3 在内的多种 LLM 的优秀功能。
现在开始Bedrock Access Gateway整个方案的配置。
我们开始部署这个过程且做记录。在这里,我们也需要提到的,如果我们现在新注册亚马逊云科技账号,可以免费得到最高200美元体验金,用于体验平台中的超过200个的云服务,包括Amazon Bedrock 。
亚马逊云官网申请:点击这里申请地址(注册立享200+免费云产品)
Bedrock Access Gateway 需要我们创建API KEY密钥来验证,我们注册且登录AWS控制台,如下图搜索System Manager。
我们可以在System Manager控制台上。
如上图找到左侧的 Parameter Store,然后去创建参数。
设定参数的名称选择标准。
然后在类型中选择 SecureString 类型,KMS密钥源选择"我的当前账户"。
值自定义设置。用大小写和数字组合,不要用字符。且自己保存。
保存创建后,我们看到这里的名称。
然后我们搜索 CloudFormation ,去实现部署Bedrock Access Gateway。
访问官方提供的Amazon CloudFormation 堆栈模板启动链接。登录亚马逊云科技的控制台后,跳转到 Amazon CloudFormation 创建堆栈页面。
都是默认,然后下一步。
KEY 参数文本框里填上在第一步创建的参数的名称一致。然后一步步完成创建。
部署过程需要大约几分钟,而后在部署完成后,我们再到 CloudFormation 堆栈的输出选项卡找到并记下 API Base URL,,如上图,这里的 URL 将用于后续配置环境变量。
最后,我们再去设置和调试实现功能。推荐通过环境变量设置密钥和访问接口地址。
以如下一段调用OpenAI ChatGPT的代码为例。
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是什么模型?"}
]
)
print(completion.choices[0].message)
现在更换其中的model为Bedrock上Claude3的model。
from openai import OpenAI
client = OpenAI()
completion = client.chat.completions.create(
model="anthropic.claude-3-sonnet-20240229-v1:0",
messages=[
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你是什么模型?"}
]
)
print(completion.choices[0].message)
设置环境变量如下:
export OPENAI_API_KEY=1qazxsw23edcvfr4
export OPENAI_BASE_URL=http://Bedroc-Proxy-xYrsBbLZWYcw-751203243.us-west-2.elb.amazonaws.com/api/v1
最后我们可以测试,通过运行代码,是否可以看到代码链接的是Bedrock上的Claude,也输出了对应的内容,这样我们就可以确认Bedrock Access Gateway能正常工作。
如果我们通过使用 Bedrock Access Gateway 这种方案提供了开箱即用、兼容 OpenAI 的代理功能,很好的帮助用户无缝地从 OpenAI 迁移到 Amazon Bedrock,不需要修改应用代码即可实现无缝迁移。
文章参考文献:
1、https://aws.amazon.com/cn/blogs/china/quickly-access-multiple-llms-with-the-bedrock-access-gateway-solution/
2、https://blog.bitipcman.com/bedrock-access-gateway-openai-migrate-to-bedrock-anthropic-claude/
3、https://github.com/aws-samples/bedrock-access-gateway/blob/main/README_CN.md