快乐的时间总是短暂的,Claude 3 在亚马逊云科技上限时体验仅剩4小时,上次分享了入门级操作教程,本期给大家带来AWS Lambda + Amazon Bedrock一起构建可以便捷使用的Claude 3接口
AWS Lambda
AWS Lambda 是一项计算服务,可以运行您的代码以响应事件并自动管理计算资源,这使其成为将想法转化为现代生产无服务器应用程序的最快方式。
用我们大众可理解的解释来讲,就是我们专注于代码层面,不考虑底层运行逻辑,类似的友商产品例如函数计算、云函数等
Amazon Bedrock
Amazon Bedrock 是一项完全托管的服务,通过单个 API 提供来自 AI21 Labs、Anthropic、Cohere、Meta、Stability AI 和 Amazon 等领先人工智能公司的高性能基础模型(FM),以及通过安全性、隐私性和负责任的 AI 构建生成式人工智能应用程序所需的一系列广泛功能。使用 Amazon Bedrock,您可以轻松试验和评估适合您的使用案例的热门 FM,通过微调和检索增强生成(RAG)等技术利用您的数据对其进行私人定制,并构建使用您的企业系统和数据来源执行任务的代理。由于 Amazon Bedrock 是无服务器的,因此您无需管理任何基础设施,并且可以使用已经熟悉的 AWS 服务将生成式人工智能功能安全地集成和部署到您的应用程序中。
本次咱们的实验就会用到Amazon Bedrock服务,通过在lambda上面使用Amazon Bedrock调用Claude 3的api,最终以URL的形式对外暴露
动手实践
Amazon Bedrock设置
首先我们要确保咱们自己的账户能够成功启用Amazon Bedrock服务,请检查是否有满足以下条件之一
- 亚马逊云科技全球账户的billing账单地址设置是否是海外,因为在中国大陆是无法使用Claude 3模型的
https://us-east-1.console.aws.amazon.com/billing/home?region=us-east-1#/paymentpreferences
- 可以设置Tax信息地址
https://us-east-1.console.aws.amazon.com/billing/home?region=us-east-1#/tax-settings
确保能够满足以上条件后,按照之前文章的操作流程或者亚马逊云科技给出《限时使用Claude3》的教程进行Claude 3模型启用
https://us-east-1.console.aws.amazon.com/bedrock/home?region=us-east-1#/modelaccess
创建IAM 角色
分别添加如下权限
- AmazonBedrockFullAccess
- AWSLambdaBasicExecutionRole
https://us-east-1.console.aws.amazon.com/iam/home?region=us-east-1#/roles
编写AWS Lambda函数
https://us-east-1.console.aws.amazon.com/lambda/home?region=us-east-1#/functions
代码填充
参考:
https://docs.aws.amazon.com/zh_cn/bedrock/latest/userguide/model-parameters-anthropic-claude-messages.html
import boto3
import json
import base64
bedrock = boto3.client("bedrock-runtime")
def lambda_handler(event, context):
user_message = base64.b64decode(event['body']).decode()
body = json.dumps({
"max_tokens": 1000,
"messages": [{"role": "user", "content": user_message}],
"anthropic_version": "bedrock-2023-05-31"
})
#Call the claude3 on the Amazon Bedrock
response = bedrock.invoke_model(
body=body,
modelId="anthropic.claude-3-sonnet-20240229-v1:0"
)
#Extract the response content in the json
response_body = json.loads(response.get("body").read())
resp_to_user = response_body.get("content")[0]['text']
return {
'statusCode': 200,
'body': resp_to_user
}
修改函数超时以及创建函数URL
根据自身需求是否设置身份验证
本地测试代码
import requests
url = '你的AWS lambda函数URL'
payload = input("User:")
while True:
resp = requests.request("POST", url, data=payload)
print(resp.text)
payload = input("User:")
if payload == "q":
break
当然还有很多玩法,例如我们可以使用boto3包中的”invoke_model_with_response_stream”,同样可以实现对话功能,我们也可以通过调用接口,将多式联运消息中的图像和提示文本传递给AnthropicClaude 3 Sonnet模型
从这样一个小的实验,我们可以向后延申,例如
- 构建一个前端页面,直接给用户页面,对接对应的接口,使用起来更优雅
- 联合更多的服务一起使用,例如结合Amazon API Gateway、AWS Lambda、Amazon Bedrock、Amazon Dynamo等一起构建一个带有记录的Claude3模型工作流
更多精彩内容还是需要广大同学们一起去探索和发现,欢迎大家通过亚马逊云科技Amazon Bedrock访问包括Claude3在内的多种领先模型,以及学习上述所提到的服务,在构建工作流的时候实现全线Serverless化,降低运维成本!
好课推荐
AWS Lambda Foundations (Simplified Chinese)(中文配音版)
https://explore.skillbuilder.aws/learn/course/internal/view/elearning/1604/aws-lambda-foundations-simplified-chinesezhong-wen-pei-yin-ban?trk=7f7b63dd-733b-4a1e-9ad6-11c2b57b54ce&sc_channel=el
Amazon API Gateway for Serverless Applications (Simplified Chinese)(中文配音版)
https://explore.skillbuilder.aws/learn/course/internal/view/elearning/1459/amazon-api-gateway-for-serverless-applications-simplified-chinesezhong-wen-pei-yin-ban?trk=7f7b63dd-733b-4a1e-9ad6-11c2b57b54ce&sc_channel=el
Amazon DynamoDB for Serverless Architectures (Simplified Chinese)(中文配音版)
https://explore.skillbuilder.aws/learn/course/internal/view/elearning/1299/amazon-dynamodb-for-serverless-architectures-simplified-chinesezhong-wen-pei-yin-ban?trk=7f7b63dd-733b-4a1e-9ad6-11c2b57b54ce&sc_channel=el
版权声明:本文为博主作者:指剑原创文章,版权归属原作者,如果侵权,请联系我们删除!
原文链接:https://blog.csdn.net/fly1574/article/details/136607845