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

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 模型的迁移,确保用户能够高性价比地使用高性能的大语言模型;

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

SpringCloud Alibaba--nacos简介和注册中心和登录

目录 一.理论基础 二.nacos 2.1 简介 2.2 安装 三.父项目 三.生产者 3.1 配置依赖 3.2 配置文件 3.3 启动类 3.4 控制类 四.消费者 4.1 配置依赖 4.2 配置文件 4.3 启动类 4.4 feign的接口 五.效果 六.负载均衡--权重算法 6.1重启nacos 6.2 设置权重 6.3 设…

【1431】java学习网站系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 java 学习网站系统是一套完善的java web信息管理系统&#xff0c;对理解JSP java编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。开发环境为TOMCAT7.0,Myeclipse8.5开发&#xff0c;数据库为Mysql5.0&…

【Django】django.core.exceptions.AppRegistryNotReady: Apps aren‘t loaded yet.

其中django后台manage.py入口程序报错&#xff0c;检索很多问题解决方案&#xff0c;这里记录下个人问题原因 1.django启动异常问题详情 django.core.exceptions.AppRegistryNotReady: Apps aren’t loaded yet. 2.问题原因 Python第三方包安装版本不一致或缺少依赖包&…

利用AI知识库,优化医保系统售后信息管理流程

在医疗行业中&#xff0c;传统知识库管理虽能整合医疗行业知识&#xff0c;但搜索和管理效率有限&#xff0c;导致医护人员难以高效利用。特别是面对医保系统等复杂系统时&#xff0c;他们常需依赖人工客服或繁琐的电子产品手册解决问题。而HelpLook AI知识库利用AI技术&#x…

拼多多面试题——力扣版测试用例纠错

最近我看到力扣上这个题目&#xff0c;用了三种方法&#xff0c;结果没有一种正确&#xff0c;我就纳闷儿了&#xff0c;为何总有一个测试用例过不了&#xff0c;结果我发现这个测试用例确实有问题啊。。。。。 题目&#xff1a; 表&#xff1a;Logs ----------------------…

Anon Network:基于 Ator Protocol 的 DePIN 匿名互联网

Anon Network正在以Ator Protocol为基础构建世界上最大的Web3隐私互联网生态&#xff0c;其旨在基于DePIN网络&#xff08;Ator protocol&#xff09;&#xff0c;通过激励体系构建一个自下而上、自我维持且可持续、不依赖于任何三方实体且完全匿名的完备互联体系。在该体系中&…

在html页面中使用Vue3和Element-Plus实现基金成本计算器

背景 周边朋友都说基金亏麻了&#xff0c;有些 “鸡” 到底部了&#xff0c;想要补个仓&#xff0c;但是又不知道要投入多少才能拉低到心里预期的成本&#xff0c;并且每只 “鸡” 都得自己输入计算&#xff0c;很麻烦&#xff0c;所以本着偷懒的原则&#xff0c;做了下面的这个…

机器学习中常见的数据分析,处理方式(以泰坦尼克号为例)

数据分析 读取数据查看数据各个参数信息查看有无空值如何填充空值一些特殊字段如何处理读取数据查看数据中的参数信息实操具体问题具体分析年龄问题 重新划分数据集如何删除含有空白值的行根据条件删除一些行查看特征和标签的相关性 读取数据 查看数据各个参数信息 查看有无空…

【Linux】实现一个进度条

我们之前也学了gcc/vim/make和makefile&#xff0c;那么我们就用它们实现一个进度条。 在实现这个进度条之前&#xff0c;我们要先简单了解一下缓冲区和回车和换行的区别 缓冲区其实就是一块内存空间&#xff0c;我们先看这样一段代码 它的现象是先立马打印&#xff0c;三秒后程…

Java Instrumentation插桩技术

Instrumentation基础 openrasp中用到了Instrumentation技术&#xff0c;它的最大作用&#xff0c;就是类的动态改变和操作。 使用Instrumentation实际上也可以可以开发一个代理来监视jvm的上运行的程序&#xff0c;可以动态的替换类的定义&#xff0c;就可以达到虚拟机级别的…

QA测试开发工程师面试题满分问答20: 软件的安全性应从哪几个方面去测试?

软件的安全性测试应从多个方面进行&#xff0c;并确保覆盖以下关键方面&#xff1a; 当回答问题时&#xff0c;可以根据自己的经验和知识&#xff0c;从上述要点中选择适合的方面进行详细说明。强调测试的综合性、全面性和持续性&#xff0c;并强调测试的重要性以及如何与开发团…

亚信安全深度参与撰写《金融行业云原生安全体系研究报告》引领云原生安全 !

近日&#xff0c;北京金融科技产业联盟正式发布《金融行业云原生安全体系研究报告》&#xff08;以下简称《报告》&#xff09;。报告由中国银联等单位牵头&#xff0c;亚信安全受邀作为联合牵头单位全程参与《报告》的讨论和撰写工作。亚信安全依托突出的云原生安全实践经验以…

windows安装nssm并将jar打包为服务

一、nssm 下载地址 二、安装nssm服务 将下载的压缩包复制到安装目录进行解压&#xff0c;解压后有两个版本 win32 和 win64&#xff0c;根据系统选择。打开系统 powershell 命令窗口&#xff0c;进入安装目录指定版本目录&#xff0c;就可以使用nssm服务了。 # 安装服务&…

揭开ChatGPT面纱(2):OpenAI主类源码概览

文章目录 〇、使用OpenAI的两个步骤一、初始化方法__init__()1.源码2.参数解析 二、提供的接口1.源码2.接口说明主要接口说明 OpenAI版本1.6.1 〇、使用OpenAI的两个步骤 在上一篇博客中&#xff0c;我实现并运行了一个OpenAI的demo&#xff0c;我们可以发现&#xff0c;想要使…

自定义mybatis插件实现读写分离

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 自定义mybatis插件实现读写分离 前言场景分析前置配置讲解数据源切换实现代码实现(插件)说明 注意实现效果 有时候我更想看到的是bug&#xff0c;比如做这个插件的时候 前言 在数据库的世界里&#x…

力扣HOT100 - 230. 二叉搜索树中第K小的元素

解题思路&#xff1a; class Solution {List<Integer> list new ArrayList<>();public int kthSmallest(TreeNode root, int k) {dfs(root);return list.get(k - 1);}public void dfs(TreeNode root) {if (root null) return;dfs(root.left);list.add(root.val)…

一个联合均值与方差模型的R包——dglm

目录 一、引言二、包的安装与载入三、模拟例子3.1 数据生成3.2 数据查看3.3 模型估计参数 一、引言 在 R 语言中&#xff0c;dglm 包是用于拟合双参数广义线性模型&#xff08;Double Generalized Linear Models&#xff0c;简称 DGLMs&#xff09;的一个工具。这类模型允许同…

使用STM32F103驱动读取MAX30102时的调试问题记录

1、数据FIFO寄存器&#xff0c;也就是地址为0x07的FIFO DATA寄存器&#xff0c;必须一次性将采样数据全部读出&#xff0c;也就是IIC起始信号发出后&#xff0c;必须连续读取FIFO中所有数据&#xff0c;如果一个字节一个字节读的话&#xff0c;实测FIFO的读写指针不会变化&…

YOLOv8改进项目汇总-超全改进-ultralyticsPro介绍:订阅了《芒果YOLOv8原创改进专栏》的读者免费赠送,包括很多稀有改进

&#x1f525;&#x1f525;&#x1f525;专注于YOLOv8改进&#xff0c;NEW - YOLOv8 &#x1f680; in PyTorch >, Support to improve Backbone, Neck, Head, Loss, IoU, LA, NMS and other modules&#x1f680; Makes YOLOv8 improvements easy again 芒果出品 YOLOv8…

HarmonyOS开发案例:【图片编辑】

介绍 本篇Codelab是基于ArkTS的声明式开发范式的样例&#xff0c;主要介绍了图片编辑实现过程。样例主要包含以下功能&#xff1a; 图片的解码。使用PixelMap进行图片编辑&#xff0c;如裁剪、旋转、亮度、透明度、饱和度等。图片的编码。 相关概念 [图片解码]&#xff1a;读…