通过 bedrock,您可以访问一系列不同的大型语言模型(例如 claude、mistral、llama 和 amazon titan),并且随时都有新版本可用。
有选择固然很棒,但必须为每个模型编写不同的请求代码却很痛苦。
这就是为什么在比较不同基础模型的输出时,amazon bedrock converse api 将为您节省大量时间和精力!
一致性是关键!
converse api 是一个一致的接口,适用于所有支持消息/系统提示的模型。这意味着您只需编写一次代码,即可用它来试验不同的模型。
这是一个如何工作的示例,这个练习应该花费
配置模型访问
开始之前,请务必检查您想要使用的模型在您所在的地区是否可用,并且您已启用对它们的访问,这是我正在使用的模型,您可以选择这些模型或选择您自己的模型:
anthropic.claude-v2
anthropic.claude-3-俳句
克劳德 3.5 十四行诗
小米斯特拉尔
1) 我们可以使用 aws 控制台中的 cloudshell 完成所有操作。
2) 当 cloudshell 准备就绪时,安装 boto3,它是适用于 python 的 aws 开发工具包
pip 安装 boto3
3) 从 github 下载名为 converse_demo.py 的文件 您可以使用 wget 并提供文件的原始路径来执行此操作:
converse_demo.py
#first we import boto3 and json import boto3, json #create a boto3 session - stores config state and allows you to create service clients session = boto3.session() #create a bedrock runtime client instance - used to send api calls to ai models in bedrock bedrock = session.client(service_name='bedrock-runtime') #here's our prompt telling the model what we want it to do, we can change this later system_prompts = [{"text": "you are an app that creates reading lists for book groups."}] #define an empty message list - to be used to pass the messages to the model message_list = [] #here’s the message that i want to send to the model, we can change this later if we want initial_message = { "role": "user", "content": [{"text": "create a list of five novels suitable for a book group who are interested in classic novels."}], } #the message above is appended to the message_list message_list.append(initial_message) #make an api call to the bedrock converse api, we define the model to use, the message, and inference parameters to use as well response = bedrock.converse( modelid="anthropic.claude-v2", messages=message_list, system=system_prompts, inferenceconfig={ "maxtokens": 2048, "temperature": 0, "topp": 1 }, ) #invoke converse with all the parameters we provided above and after that, print the result response_message = response['output']['message'] print(json.dumps(response_message, indent=4))
4) 像这样运行python代码:
python converse_demo.py
它应该给你类似这样的输出:
5) 我们还可以使用不同的模型运行相同的代码,方法是替换代码中的模型 id,如下所示:
anthropic.claude-3-haiku-20240307-v1:0
比较第二个模型的输出,略有不同:
6) 我们可以用另一个版本再次测试:
anthropic.claude-3-5-sonnet-20240620-v1:0
当 claude 的新版本发布时,我们可以请求访问,然后只需在代码中替换模型的名称即可!
访问被拒绝错误
如果您看到与此类似的错误,则仅意味着您正在尝试使用您尚无权访问的模型。只需请求访问该模型,并在授予访问权限后重试。
7) 我还尝试使用不同的模型提供商,将模型 id 更改为:
mistral.mistral-small-2402-v1:0
因此,converse api 为您提供了一个简单、一致的 api,可与所有支持消息的 amazon bedrock 模型配合使用。这意味着您可以编写一次代码并将其与不同的模型一起使用来比较结果!
所以下次您与 bedrock 合作时,帮自己一个忙,尝试一下 converse api,稍后再感谢我!