通过Bedrock Access Gateway解决方案快速访问Amazon Bedrock的多种大语言模型

news2024/11/29 12:52:56

Bedrock Access Gateway(BAG)解决方案提供了开箱即用、兼容 OpenAI 的代理功能,帮助用户轻松无缝地从 OpenAI 迁移到 Amazon Bedrock。

1. 概述

亚马逊云科技的 Amazon Bedrock 服务支持一系列领先的基础模型,为客户提供多种选择,满足不同业务场景的需求。其中,Anthropic 公司的 Claude3 是在 Amazon Bedrock 新上线的大型语言模型(Large Language Model,LLM)。与 OpenAI 的 GPT-4 等模型相比,Claude3 在保持高性能水平的同时,还能为客户带来更低的使用成本。

如果你已经在使用 OpenAI 的 API 或者 SDK 开发生成式 AI(Generative AI)应用,想快速体验或切换到 Amazon Bedrock 而不想更改你的应用代码,或者你想使用一些不直接支持 Amazon Bedrock 的开源项目或工具,又不想修改其代码,那么可以使用亚马逊云科技发布的 Bedrock Access Gateway(BAG)解决方案。它提供了兼容 OpenAI API 的代理,使你不需要修改任何代码,就可以把 OpenAI API 的调用转发到 Amazon Bedrock,从而获得包括 Claude3 在内的多种 LLM 的优秀能力。

2. 整体架构

Bedrock Access Gateway 解决方案的架构非常简洁,如图 1 所示。

图 1 Bedrock Access Gateway 解决方案架构图

BAG 采用无服务器 (Serverless)架构,通过 Application Load Balancer(ALB)对外提供访问,由 Amazon Lambda 处理 API 请求,用户不需要登录或管理后台服务器。用户也可以根据需要修改此架构,例如私有化部署,不把 ALB 暴露在公网,或者通过 Amazon Fargate 服务以容器替换 Amazon Lambda 来处理 API 请求,从而实现更低的延迟。

截至 2024 年 4 月,Amazon Bedrock 支持以下模型:

  • anthropic.claude-instant-v1
  • anthropic.claude-v2:1
  • anthropic.claude-v2
  • anthropic.claude-3-sonnet-20240229-v1:0 (默认)
  • anthropic.claude-3-haiku-20240307-v1:0
  • meta.llama2-13b-chat-v1
  • meta.llama2-70b-chat-v1
  • mistral.mistral-7b-instruct-v0:2
  • mistral.mixtral-8x7b-instruct-v0:1
  • mistral.mistral-large-2402-v1:0
  • cohere.embed-multilingual-v3 (embedding)
  • cohere.embed-english-v3 (embedding)

在实际应用中,为方便用户在迁移时不用改造任何现有代码,当请求中模型名(model 参数的值)是以 gpt 开始时,例如 gpt-3.5-turbo,BAG 会直接调用默认模型,如 anthropic.claude-3-sonnet-20240229-v1:0。用户可以在部署完成后通过修改 Lambda 的环境变量 DEFAULT_MODEL 来指定默认模型。

Parameter Store 服务存储 API Key 参数,该参数的值用于 API 访问的认证。

BAG 目前支持的 API 与功能包括:

  • 通过 Server-Sent Events(SSE)技术提供流式响应
  • Model API
  • Chat Completion API
  • Embedding API
  • Function Call/Tool Call
  • Multimodal API

亚马逊云科技会根据客户的需要继续增加和更新 API 功能,你可以关注 GitHub 仓库来了解更新情况。有关解决方案的升级操作,请参考 BAG 的部署说明。

完整原文传送门:通过 Bedrock Access Gateway解决方案快速访问Amazon Bedrock的多种大语言模型-国外VPS网站

3. 解决方案部署

3.1 前提条件

BAG 在运行时会调用 Amazon Bedrock 中的模型,所以需要先在 Amazon Bedrock 中启用相关模型的访问权限。有关具体方法,可以参考《Amazon Bedrock 用户指南》中的“模型访问权限”部分。启用权限成功后,Amazon Bedrock 控制台的页面如图 2 所示。

图 2 在 Amazon Bedrock 中启用模型访问权限

3.2 部署步骤

BAG 支持快速部署、开箱即用。整个部署和应用过程包括三个步骤:创建自定义 API Key、部署堆栈、配置环境变量。你只需要大约 5 分钟就可以在你的亚马逊云科技账户里搭建起一套兼容 OpenAI API 的代理。

第一步:创建自定义 API Key

API Key 用于 API 访问的认证。登录你的亚马逊云科技控制台,访问 Systems Manager 服务,进入 Parameter Store,单击“创建参数”按钮。如图 3 所示,在创建参数页面,填写并记下用于存储 API Key 的参数的名字,如 my-api-key,参数类型选择“Secure String”,参数值就是未来用于认证的 API Key,可使用任何不带空格的字符串,建议复杂一些,以保证 API Key 的安全性。需要注意的是,目前版本暂不支持含有“/”的表示层次结构的参数名,如/my/api/key。

图 3 创建自定义 API Key 参数

第二步:部署 Amazon CloudFormation 堆栈

在浏览器中打开一个新的空白页面,访问 BAG 的 Amazon CloudFormation 堆栈模板启动链接。登录亚马逊云科技的控制台后,跳转到 Amazon CloudFormation 创建堆栈页面,如图 4 所示。

图 4 部署:设定 Amazon CloudFormation 模板

单击“下一步”按钮,在 ApiKeyParam 参数文本框里填上在第一步创建的参数的名称(如 my-api-key),如图 5 所示。

图 5 部署:填写 API Key 参数

单击“下一步”按钮,直到最后的提交页面,勾选“我确认,AWS CloudFormation 可能创建 IAM 资源”,如图 6 所示。

图 6 部署:勾选确认项

单击“提交”按钮。部署过程需要大约 3 分钟。在部署完成后,到 CloudFormation 堆栈的“输出”选项卡找到并记下 API Base URL,如图 7 所示。该 URL 将用于后续配置环境变量。

图 7 部署:从输出结果获得 API Base URL

上述部署采用 Lambda 函数处理 API 请求,也可以采用 Amazon Fargate 服务通过容器处理 API 请求,以获得更快的响应。请访问 BAG 的部署说明启动相关的 Amazon CloudFormation 堆栈模板,其他部署步骤都相同。

4 测试与应用

4.1 配置环境变量

在用户或应用程序一侧,要通过 BAG 的代理功能访问 Amazon Bedrock 服务,需要配置环境变量,以确保原先针对 GPT 的 API 请求被发送给 BAG 提供的 URL,并通过 API Key 认证。

在部署完成后,为快速进行 API 测试或 SDK 测试以确认 BAG 代理功能有效,配置环境变量的代码如下:

export OPENAI_API_KEY=<API Key参数的值> 
export OPENAI_BASE_URL=<API Base URL>

如果使用 Windows CMD 环境,代码如下:

set OPENAI_API_KEY=<API Key参数的值> 
set OPENAI_BASE_URL=<API Base URL>

4.2 API 测试

配置好环境变量后,可以通过如下的 curl 命令快速验证 API 有效性。

curl $OPENAI_BASE_URL/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
    "model": "anthropic.claude-3-sonnet-20240229-v1:0",
    "messages": [
      {
        "role": "user",
        "content": "Hello!"
      }
    ]
  }'

如果使用 Windows CMD 环境,测试命令如下:

curl "%OPENAI_BASE_URL%/chat/completions" ^
  -H "Content-Type: application/json" ^
  -H "Authorization: Bearer %OPENAI_API_KEY%" ^
  -d "{\"model\":\"anthropic.claude-3-sonnet-20240229-v1:0\", \"messages\": [{\"role\":\"user\",\"content\":\"Hello!\"}]}"

API 工作正常时,将返回类似如下 json 格式的响应信息:

{"id":"msg_01H4wAGhcJQ1ruQu2ifYN38J","created":1712540374,"model":"anthropic.claude-3-sonnet-20240229-v1:0","system_fingerprint":"fp","choices":[{"index":0, "finish_reason":"stop","message":{"role":"assistant","content":"Hello! How can I assist you today?"}}],"object":"chat.completion","usage":{"prompt_tokens":9, "completion_tokens":12,"total_tokens":21}}

4.3 SDK 测试

类似地,在配置好环境变量后,可以通过如下 Python 代码测试代理是否有效。

from openai import OpenAI

client = OpenAI()
completion = client.chat.completions.create(
    model="anthropic.claude-3-sonnet-20240229-v1:0",
    messages=[{"role": "user", "content": "Hello!"}],
)

print(completion.choices[0].message.content)

4.4 在 NextChat 应用程序中使用

NextChat(ChatGPT Next Web)是社区中热度较高的 ChatGPT 前端应用程序,但是目前版本不支持访问 Claude3 模型。部署 BAG 后,经过简单配置就可以使用 NextChat 轻松访问 Claude3 以及其他 Amazon Bedrock 上支持的大语言模型。

启动 NextChat 应用后,单击左下角的六边形图标,进入设置页面,如图 8 所示。勾选“自定义接口”复选框,在下面出现“接口地址”和“API Key”文本框,分别填入 BAG 的 API Base URL 和 API Key 参数的值。需要注意的是,接口地址文本框中的字符串最后不包含“/v1”,形式类似 http://xxxxxx.yyyyyy.elb.amazonaws.com/api。

图 8 NextChat 的设置页面

设置完成后,单击左下方的“新的聊天”按钮,就可以与 BAG 配置的默认模型对话了。如图 9 所示,对话中显示人工智能助手“由 Anthropic 公司开发”,说明后台的模型已经切换为 Amazon Bedrock 上的 anthropic.claude-3-sonnet-20240229-v1:0模型(BAG 的默认模型)。

图 9 使用 Claude3 模型后的响应信息

对于其他使用 OpenAI API 的应用,如 AutoGen,也可以采用类似的配置操作,就可以顺利访问 Amazon Bedrock 上的模型。有关更多应用示例,请参考 BAG 的部署说明。你也可以通过 Amazon Bedrock Claude3 Workshop(中文版) 更全面地了解 BAG 和 Amazon Bedrock 的高级使用。

5 安全与其他注意事项

安全与隐私:部署和使用 BAG 十分安全。在默认情况下,它不会记录任何用户的请求和 Amazon Bedrock 的响应,也不会访问用户自己的 OpenAI 密钥。

使用成本:BAG 使用了 ALB、Amazon Lambda、Amazon Fargate、Amazon Bedrock 等亚马逊云服务,在使用期间会产生费用,具体金额与使用量、部署区域等因素有关。请访问亚马逊云科技各服务的官方定价页面或 Pricing Calculator 查看详细信息。

响应延迟:与直接使用亚马逊云科技的官方 SDK 访问 Amazon Bedrock 相比,使用 BAG 会有额外的延迟。对于生产环境的应用,建议在部署后进行测试。如果对于延迟敏感,可以考虑使用 Amazon Fargate 版本,或者咨询你的亚马逊云科技业务经理。

多种部署方式:你不仅可以在所有亚马逊云科技提供 Amazon Bedrock 服务的区域云上部署 BAG,也可以在本地部署 Python 代码,构建本地代理服务,然后调用你的亚马逊云科技账户中的 Amazon Bedrock 服务。

6 总结

Bedrock Access Gateway(BAG)解决方案提供了开箱即用、兼容 OpenAI 的代理功能,帮助用户轻松无缝地从 OpenAI 迁移到 Amazon Bedrock,主要具有以下优点:

(1) 非侵入式集成:不需要修改应用代码即可实现无缝迁移。

(2) 开箱即用:提供一键部署的Amazon CloudFormation模版,部署时间约 3 分钟。

(3) 多种模型快速切换:支持 Amazon Bedrock 上多种主流模型,包括 Claude、Llama2、Mistral/Mixtral 系列模型等,除了调整 DEFAULT_MODEL,也可以直接在 API 请求的 model 参数中指定。

(4) 兼容 OpenAI:支持 OpenAI 的 API 和 SDK,支持 Server-Sent Events(SSE)流式响应。

(5) 开源:项目开源,客户可以根据需要进行客制化(例如私有化部署、在 EKS 上运行等)。

LLM 应用的效果由多方面因素决定,包括基础模型、提示词工程、知识库质量等。BAG 从 API 适配的角度解决了由 GPT 模型向 Claude3 模型的迁移,确保用户能够高性价比地使用高性能的大语言模型;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1603202.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【函数式接口使用✈️✈️】通过具体的例子实现函数结合策略模式的使用

目录 前言 一、核心函数式接口 1. Consumer 2. Supplier 3. Function,> 二、场景模拟 1.面向对象设计 2. 策略接口实现&#xff08;以 Function 接口作为策略&#xff09; 三、对比 前言 在 Java 8 中引入了Stream API 新特性&#xff0c;这使得函数式编程风格进…

全国产化无风扇嵌入式车载电脑在救护车远端诊断的行业应用

救护车远端诊断的行业应用 背景介绍 更加快速的为急症病人在第一时间开始进行诊断和治疗,是提高病人救助成功率的关键。因此&#xff0c;先进的救护系统正在思考&#xff0c;如何在病人进入救护车之后&#xff0c;立刻能够将救护车中各种检查仪器的信息快速的传回医院&#xf…

学习大数据的第一天

今天学习如何安装hapood安装 1.安装hapood安装 2.需要的资料 3.开始安装 1.创建目录 mkdir -p /export/server 2.进入目录下 cd /export/server/ 3.安装 安装需要的依赖 yum install gcc gcc-c make autoconf automake libtool curl lzo-devel zlib-devel openssl opens…

Redux极客园项目初始化搭建

基本结构搭建 实现步骤 在 Login/index.js 中创建登录页面基本结构在 Login 目录中创建 index.scss 文件&#xff0c;指定组件样式将 logo.png 和 login.png 拷贝到 assets 目录中 代码实现 pages/Login/index.js import ./index.scss import { Card, Form, Input, Button }…

CSS3 新特性 box-shadow 阴影效果、圆角border-radius

圆角 使用CSS3 border-radius属性&#xff0c;你可以给任何元素制作"圆角"&#xff0c;border-radius属性&#xff0c;可以使用以下规则&#xff1a; &#xff08;1&#xff09;四个值&#xff1a;第一个值为左上角&#xff0c;第二个值为右上角&#xff0c;第三个值…

CST电磁仿真物体表面的Sheet结构和生成3D Model【基础教程】

由Sheet结构生成3D Model 使用Shell Solid and Thicken Sheet&#xff01; Modeling > Tools > Shape Tools > Shell Solid or Thicken Sheet Shell Solidor ThickenSheet会根据不同类型的模型提供两种完全不同的功能。 如033.由3D Model生成Cavity 所述&#xff…

04-15 周一 GitHub仓库CI服务器actions-runner和workflow yaml配置文档解析

04-15 周一 GitHub仓库CI服务器配置过程文档 时间版本修改人描述2024年4月15日10:35:52V0.1宋全恒新建文档2024年4月17日10:33:20v1.0宋全恒完成github actions CI的配置和工作流配置文件解读文档的撰写 简介 一些基础概念 前提知识 仓库介绍 地址镜像介绍https://github.…

Mac电脑上有什么好玩的格斗游戏 《真人快打1》可以在苹果电脑上玩吗

你是不是喜欢玩格斗游戏&#xff1f;你是不是想在你的Mac电脑上体验一些刺激和激烈的对战&#xff1f;在这篇文章中&#xff0c;我们将介绍Mac电脑上有什么好玩的格斗游戏&#xff0c;以及《真人快打1》可以在苹果电脑上玩吗。 一、Mac电脑上有什么好玩的格斗游戏 格斗游戏是…

使用prompt_toolkit构建交互式命令行工具

prompt_toolkit是一个python库&#xff0c;用于构建命令行工具和终端应用。其官网介绍如下&#xff0c; prompt_toolkit is a library for building powerful interactive command line and terminal applications in Python. 安装命令如下&#xff0c; pip install prompt_to…

2024Guitar Pro 8.1 Mac 最新下载、安装、激活、换机图文教程

吉他爱好者必备神器&#xff1a;Guitar Pro v8.1.1 Build 17深度解析 随着数字音乐制作和学习的日益普及&#xff0c;越来越多的吉他爱好者开始寻找能够帮助他们提升技能、创作音乐的专业工具。在众多吉他制作软件中&#xff0c;Guitar Pro因其强大的功能和易用的界面备受推崇…

03-JAVA设计模式-中介者模式

中介者模式 什么是中介者模式 中介者模式&#xff08;Mediator Pattern&#xff09;是一种行为设计模式&#xff0c;用于减少对象之间的直接依赖关系&#xff0c;降低它们之间的耦合度&#xff0c;并使得一个对象改变时&#xff0c;所有依赖于它的对象都得到通知并自动更新。…

【QT学习】7.事件,把文本显示在页面中(文本可变),鼠标指针切换,鼠标左键右键按下,qt设置背景样式

0.创建项目&#xff0c;事件的创建 1.事件的位置 2.这就是多态&#xff0c;子类重写父类函数&#xff0c;子类调用子类函数&#xff0c;也可以调用父类函数。但同函数名 1.要求&#xff1a;文本显示在页面中&#xff08;文本可变&#xff09; 1.文本显示在页面的核心代码 主要步…

链表OJ - 5(合并两个有序链表)

题目描述&#xff08;来源&#xff09; 将两个升序链表合并为一个新的 升序 链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。 思路 需创建一个头结点&#xff0c;然后从两个链表的表头开始依次比较传入的两个链表的结点的大小&#xff0c;并将两个链表中较小的…

Docker构建Golang项目常见问题

Docker构建Golang项目常见问题 1 dockerfile报错&#xff1a;failed to read expected number of bytes: unexpected EOF2 go mod tidy: go.mod file indicates go 1.21, but maximum supported version is 1.17 1 dockerfile报错&#xff1a;failed to read expected number o…

Linux编辑器gcc/g++的使用以及Makefile的用法

gcc如何完成 格式 gcc [选项] 要编译的文件 [选项] [目标文件] gcc对code.c编译形成可执行文件mybin&#xff0c;十分推荐直接这样写&#xff0c;下面会有拆分写法&#xff08;不推荐&#xff09; gcc与我们使用过的编辑器无二&#xff0c;都需要经过 1. 预处理&#xff08;…

QAnything部署Mac m1环境

本次安装时Qanything已经更新到了v1.3.3&#xff0c;支持纯python安装。安装过程比较简单&#xff0c;如下&#xff1a; QAnything/README_zh.md at qanything-python-v1.3.1 netease-youdao/QAnything GitHub 首先需要用Anaconda3创建隔离环境&#xff0c;简要说明下Anaco…

Word分节后,页码不连续、转PDF每节后多出空白页解决办法

1. 问题图例 废话少说&#xff0c;先上图&#xff1a; 2. 问题分析 问题分析&#xff1a;出现以上问题的原因可能有&#xff0c; 未链接到上一节页面布局中节的起始位置设置为[奇数页] 3. 解决问题 若为【1. 未链接到上一节】导致该问题出现&#xff0c;则我们需要选中页脚…

PACNet CellNet(代码开源)|bulk数据作细胞分类,评估细胞命运性能的一大利器

文章目录 1.前言2.CellNet2.1CellNet简介2.2CellNet结果 3.PACNet3.1安装R包与加载R包3.2加载数据3.3开始训练和分类3.4可视化分类过程3.5可视化分类结果 4.细胞命运分类和免疫浸润比较 1.前言 今天冲浪看到一个细胞分类性能评估的R包——PACNet&#xff0c;它与转录组分析方法…

Easy GIS .NET GMap.Net

Easy GIS .NET & GMap.Net .NET 环境下非常简单的GIS地图开发库。 Easy GIS .NET 一个简单的GIS 桌面应用程序&#xff0c;实现了地图瓦片加载、shapefile文件和csv文件加载渲染、地图坐标系统设置及转换等等基本功能&#xff0c;非常简单易用。 Easy GIS .NET is an o…

论文浅尝 | QA-GNN:结合语言模型与知识图谱进行问答推理

笔记整理&#xff1a;项卓怡&#xff0c;浙江大学硕士&#xff0c;研究方向为生化大模型。 链接&#xff1a;https://arxiv.org/abs/2104.06378 Code&#xff1a;https://github.com/michiyasunaga/qagnn Citation: Yasunaga M, Ren H, Bosselut A, et al. QA-GNN: Reasoning w…