From f0f2a0c6a28f42b31af462bbe8febc6fd752f7be Mon Sep 17 00:00:00 2001 From: Bo-Yi Wu Date: Tue, 1 Apr 2025 10:39:04 +0800 Subject: [PATCH] docs: enhance README documentation with multilingual support - Add Traditional Chinese README file - Update README.md to include links to Traditional and Simplified Chinese versions - Remove redundant blank lines from README.md and README_CN.md Signed-off-by: Bo-Yi Wu --- README.md | 31 +++---- README_CN.md | 99 ++++++++++---------- README_TW.md | 251 +++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 315 insertions(+), 66 deletions(-) create mode 100644 README_TW.md diff --git a/README.md b/README.md index c82f70d2..44fe3f92 100644 --- a/README.md +++ b/README.md @@ -1,9 +1,9 @@ -[中文](./README_CN.md) - # Bedrock Access Gateway OpenAI-compatible RESTful APIs for Amazon Bedrock +[繁體中文](./README_TW.md) | [簡體中文](./README_CN.md) + ## What's New 🔥 This project supports reasoning for both **Claude 3.7 Sonnet** and **DeepSeek R1**, check [How to Use](./docs/Usage.md#reasoning) for more details. You need to first run the Models API to refresh the model list. @@ -30,7 +30,6 @@ If you find this GitHub repository useful, please consider giving it a free star Please check [Usage Guide](./docs/Usage.md) for more details about how to use the new APIs. - ## Get Started ### Prerequisites @@ -57,41 +56,44 @@ Please follow the steps below to deploy the Bedrock Proxy APIs into your AWS acc **Step 1: Create your own API key in Secrets Manager (MUST)** - > **Note:** This step is to use any string (without spaces) you like to create a custom API Key (credential) that will be used to access the proxy API later. This key does not have to match your actual OpenAI key, and you don't need to have an OpenAI API key. please keep the key safe and private. 1. Open the AWS Management Console and navigate to the AWS Secrets Manager service. -2. Click on "Store a new secret" button. +2. Click on "Store a new secret" button. 3. In the "Choose secret type" page, select: Secret type: Other type of secret Key/value pairs: + - Key: api_key - Value: Enter your API key value - + Click "Next" + 4. In the "Configure secret" page: Secret name: Enter a name (e.g., "BedrockProxyAPIKey") Description: (Optional) Add a description of your secret 5. Click "Next" and review all your settings and click "Store" -After creation, you'll see your secret in the Secrets Manager console. Make note of the secret ARN. - +After creation, you'll see your secret in the Secrets Manager console. Make note of the secret ARN. **Step 2: Deploy the CloudFormation stack** 1. Sign in to AWS Management Console, switch to the region to deploy the CloudFormation Stack to. 2. Click the following button to launch the CloudFormation Stack in that region. Choose one of the following: - [
 ALB + Lambda 1-Click Deploy 🚀 
](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxy.template&stackName=BedrockProxyAPI) + [
 ALB + Lambda 1-Click Deploy 🚀 
](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxy.template&stackName=BedrockProxyAPI) + + [
 ALB + Fargate 1-Click Deploy 🚀 
](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxyFargate.template&stackName=BedrockProxyAPI) - [
 ALB + Fargate 1-Click Deploy 🚀 
](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxyFargate.template&stackName=BedrockProxyAPI) 3. Click "Next". 4. On the "Specify stack details" page, provide the following information: - - Stack name: Change the stack name if needed. - - ApiKeySecretArn: Enter the secret ARN you used for storing the API key. - + + - Stack name: Change the stack name if needed. + - ApiKeySecretArn: Enter the secret ARN you used for storing the API key. + Click "Next". + 5. On the "Configure stack options" page, you can leave the default settings or customize them according to your needs. Click "Next". 6. On the "Review" page, review the details of the stack you're about to create. Check the "I acknowledge that AWS CloudFormation might create IAM resources" checkbox at the bottom. Click "Create stack". @@ -148,8 +150,6 @@ print(completion.choices[0].message.content) Please check [Usage Guide](./docs/Usage.md) for more details about how to use embedding API, multimodal API and tool call. - - ## Other Examples ### LangChain @@ -243,7 +243,6 @@ To do so, depends on which version you deployed: - **Lambda version**: Go to AWS Lambda console, find the Lambda function, then find and click the `Deploy new image` button and click save. - **Fargate version**: Go to ECS console, click the ECS cluster, go the `Tasks` tab, select the only task that is running and simply click `Stop selected` menu. A new task with latest image will start automatically. - ## Security See [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications) for more information. diff --git a/README_CN.md b/README_CN.md index 8afe1a80..e07635b0 100644 --- a/README_CN.md +++ b/README_CN.md @@ -1,21 +1,20 @@ -[English](./README.md) - # Bedrock Access Gateway -使用兼容OpenAI的API访问Amazon Bedrock +使用兼容 OpenAI 的 API 访问 Amazon Bedrock -## 新功能 🔥 +[English](./README.md) | [繁體中文](./README_TW.md) -本项目支持 **Claude 3.7 Sonnet** 和 **DeepSeek R1** 的推理(Reasoning)功能,查看[使用方法](./docs/Usage_CN.md#reasoning) 获取更多详情。首次使用你需要先运行下Models API 来刷新model列表。 +## 新功能 🔥 +本项目支持 **Claude 3.7 Sonnet** 和 **DeepSeek R1** 的推理(Reasoning)功能,查看[使用方法](./docs/Usage_CN.md#reasoning) 获取更多详情。首次使用你需要先运行下 Models API 来刷新 model 列表。 ## 概述 -Amazon Bedrock提供了广泛的基础模型(如Claude 3 Opus/Sonnet/Haiku、Llama 2/3、Mistral/Mixtral等),以及构建生成式AI应用程序的多种功能。更多详细信息,请查看[Amazon +Amazon Bedrock 提供了广泛的基础模型(如 Claude 3 Opus/Sonnet/Haiku、Llama 2/3、Mistral/Mixtral 等),以及构建生成式 AI 应用程序的多种功能。更多详细信息,请查看[Amazon Bedrock](https://aws.amazon.com/bedrock)。 -有时,您可能已经使用OpenAI的API或SDK构建了应用程序,并希望在不修改代码的情况下试用Amazon -Bedrock的模型。或者,您可能只是希望在AutoGen等工具中评估这些基础模型的功能。 好消息是, 这里提供了一种方便的途径,让您可以使用 +有时,您可能已经使用 OpenAI 的 API 或 SDK 构建了应用程序,并希望在不修改代码的情况下试用 Amazon +Bedrock 的模型。或者,您可能只是希望在 AutoGen 等工具中评估这些基础模型的功能。 好消息是, 这里提供了一种方便的途径,让您可以使用 OpenAI 的 API 或 SDK 无缝集成并试用 Amazon Bedrock 的模型,而无需对现有代码进行修改。 如果您觉得这个项目有用,请考虑给它点个一个免费的小星星 ⭐。 @@ -31,7 +30,7 @@ OpenAI 的 API 或 SDK 无缝集成并试用 Amazon Bedrock 的模型,而无需 - [x] 支持 Cross-Region Inference - [x] 支持 Reasoning Mode (**new**) -请查看[使用指南](./docs/Usage_CN.md)以获取有关如何使用新API的更多详细信息。 +请查看[使用指南](./docs/Usage_CN.md)以获取有关如何使用新 API 的更多详细信息。 ## 使用指南 @@ -39,7 +38,7 @@ OpenAI 的 API 或 SDK 无缝集成并试用 Amazon Bedrock 的模型,而无需 请确保您已满足以下先决条件: -- 可以访问Amazon Bedrock基础模型。 +- 可以访问 Amazon Bedrock 基础模型。 如果您还没有获得模型访问权限,请参考[配置](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)指南。 @@ -49,61 +48,63 @@ OpenAI 的 API 或 SDK 无缝集成并试用 Amazon Bedrock 的模型,而无需 ![Architecture](assets/arch.png) -您也可以选择在 ALB 后面接 [AWS Fargate](https://aws.amazon.com/fargate/) 而不是 [AWS Lambda](https://aws.amazon.com/lambda/),主要区别在于流响应的首字节延迟(Fargate更低)。 +您也可以选择在 ALB 后面接 [AWS Fargate](https://aws.amazon.com/fargate/) 而不是 [AWS Lambda](https://aws.amazon.com/lambda/),主要区别在于流响应的首字节延迟(Fargate 更低)。 或者,您可以使用 Lambda Function URL 来代替 ALB,请参阅[示例](https://github.com/awslabs/aws-lambda-web-adapter/tree/main/examples/fastapi-response-streaming) ### 部署 -请按以下步骤将Bedrock代理API部署到您的AWS账户中。仅支持Amazon Bedrock可用的区域(如us-west-2)。 部署预计用时**3-5分钟** 🕒。 +请按以下步骤将 Bedrock 代理 API 部署到您的 AWS 账户中。仅支持 Amazon Bedrock 可用的区域(如 us-west-2)。 部署预计用时**3-5 分钟** 🕒。 **第一步: 在 Secrets Manager 中创建您的 API 密钥(必须)** -> 注意:这一步是使用任意字符串(不带空格)创建一个自定义的API Key(凭证),将用于后续访问代理API。此API Key不必与您实际的OpenAI -> Key一致,您甚至无需拥有OpenAI API Key。请确保保管好此API Key。 +> 注意:这一步是使用任意字符串(不带空格)创建一个自定义的 API Key(凭证),将用于后续访问代理 API。此 API Key 不必与您实际的 OpenAI +> Key 一致,您甚至无需拥有 OpenAI API Key。请确保保管好此 API Key。 1. 打开 AWS 管理控制台并导航至 AWS Secrets Manager 服务。 2. 点击 "存储新密钥" 按钮。 3. 在 "选择密钥类型" 页面,选择: 密钥类型:其他类型的密钥 键/值对: - + - 键:api_key - 值:输入您的 API 密钥值 - 点击 "下一步" + 点击 "下一步" + 4. 在 "配置密钥" 页面: 密钥名称:输入一个名称(例如:"BedrockProxyAPIKey") 描述:(可选)添加密钥的描述 5. 点击 "下一步",检查所有设置后点击 "存储" 创建完成后,您将在 Secrets Manager 控制台中看到您的密钥。请记下密钥的 ARN。 -**第二步: 部署CloudFormation堆栈** +**第二步: 部署 CloudFormation 堆栈** + +1. 登录 AWS 管理控制台,切换到要部署 CloudFormation 堆栈的区域。 +2. 单击以下按钮在该区域启动 CloudFormation 堆栈,选择一种方式部署。 -1. 登录AWS管理控制台,切换到要部署CloudFormation堆栈的区域。 -2. 单击以下按钮在该区域启动CloudFormation堆栈,选择一种方式部署。 - **ALB + Lambda** - [![Launch Stack](assets/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home#/stacks/create/template?stackName=BedrockProxyAPI&templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxy.template) + [![Launch Stack](assets/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home#/stacks/create/template?stackName=BedrockProxyAPI&templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxy.template) - **ALB + Fargate** - [![Launch Stack](assets/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home#/stacks/create/template?stackName=BedrockProxyAPI&templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxyFargate.template) + [![Launch Stack](assets/launch-stack.png)](https://console.aws.amazon.com/cloudformation/home#/stacks/create/template?stackName=BedrockProxyAPI&templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxyFargate.template) + 3. 单击"下一步"。 4. 在"指定堆栈详细信息"页面,提供以下信息: - - 堆栈名称: 可以根据需要更改名称。 - - ApiKeySecretArn:输入您用于存储API 密钥的ARN。 - - 单击"下一步"。 + - 堆栈名称: 可以根据需要更改名称。 + - ApiKeySecretArn:输入您用于存储 API 密钥的 ARN。 + 单击"下一步"。 5. 在"配置堆栈选项"页面,您可以保留默认设置或根据需要进行自定义。 单击"下一步"。 6. 在"审核"页面,查看您即将创建的堆栈详细信息。勾选底部的"我确认,AWS CloudFormation 可能创建 IAM 资源。"复选框。 单击"创建堆栈"。 -仅此而已 🎉 。部署完成后,点击CloudFormation堆栈,进入"输出"选项卡,你可以从"APIBaseUrl" -中找到API Base URL,它应该类似于`http://xxxx.xxx.elb.amazonaws.com/api/v1` 这样的格式。 +仅此而已 🎉 。部署完成后,点击 CloudFormation 堆栈,进入"输出"选项卡,你可以从"APIBaseUrl" +中找到 API Base URL,它应该类似于`http://xxxx.xxx.elb.amazonaws.com/api/v1` 这样的格式。 -### SDK/API使用 +### SDK/API 使用 -你只需要API Key和API Base URL。如果你没有设置自己的密钥,那么默认将使用API Key `bedrock`。 +你只需要 API Key 和 API Base URL。如果你没有设置自己的密钥,那么默认将使用 API Key `bedrock`。 -现在,你可以尝试使用代理API了。假设你想测试Claude 3 Sonnet模型,那么使用"anthropic.claude-3-sonnet-20240229-v1:0"作为模型ID。 +现在,你可以尝试使用代理 API 了。假设你想测试 Claude 3 Sonnet 模型,那么使用"anthropic.claude-3-sonnet-20240229-v1:0"作为模型 ID。 - **API 使用示例** @@ -144,9 +145,7 @@ completion = client.chat.completions.create( print(completion.choices[0].message.content) ``` -请查看[使用指南](./docs/Usage_CN.md)以获取有关如何使用Embedding API、多模态API和Tool Call的更多详细信息。 - - +请查看[使用指南](./docs/Usage_CN.md)以获取有关如何使用 Embedding API、多模态 API 和 Tool Call 的更多详细信息。 ## 其他例子 @@ -188,25 +187,25 @@ print(response) 这个方案不会收集您的任何数据。而且,它默认情况下也不会记录任何请求或响应。 -### 为什么没有使用API Gateway 而是使用了Application Load Balancer? +### 为什么没有使用 API Gateway 而是使用了 Application Load Balancer? -简单的答案是API Gateway不支持 server-sent events (SSE) 用于流式响应。 +简单的答案是 API Gateway 不支持 server-sent events (SSE) 用于流式响应。 ### 支持哪些区域? -通常来说,所有Amazon Bedrock支持的区域都支持,如果不支持,请提个Github Issue。 +通常来说,所有 Amazon Bedrock 支持的区域都支持,如果不支持,请提个 Github Issue。 注意,并非所有模型都在上面区可用。 ### 支持哪些模型? -你可以通过[Model API](./docs/Usage_CN.md#models-api) 获取(或更新)当前区支持的模型列表。 +你可以通过[Model API](./docs/Usage_CN.md#models-api) 获取(或更新)当前区支持的模型列表。 -### 我可以构建并使用自己的ECR镜像吗? +### 我可以构建并使用自己的 ECR 镜像吗? -是的,你可以克隆repo并自行构建容器镜像(src/Dockerfile),然后推送到你自己的ECR仓库。 脚本可以参考`scripts/push-to-ecr.sh`。 +是的,你可以克隆 repo 并自行构建容器镜像(src/Dockerfile),然后推送到你自己的 ECR 仓库。 脚本可以参考`scripts/push-to-ecr.sh`。 -在部署之前,请在CloudFormation模板中替换镜像仓库URL。 +在部署之前,请在 CloudFormation 模板中替换镜像仓库 URL。 ### 我可以在本地运行吗? @@ -216,9 +215,9 @@ print(response) uvicorn api.app:app --host 0.0.0.0 --port 8000 ``` -那么API Base URL应该类似于`http://localhost:8000/api/v1` +那么 API Base URL 应该类似于`http://localhost:8000/api/v1` -### 使用代理API会有任何性能牺牲或延迟增加吗? +### 使用代理 API 会有任何性能牺牲或延迟增加吗? 与 AWS SDK 调用相比,本方案参考架构会在响应上会有额外的延迟,你可以自己部署并测试。 @@ -226,22 +225,22 @@ uvicorn api.app:app --host 0.0.0.0 --port 8000 参见 [示例](https://github.com/awslabs/aws-lambda-web-adapter/tree/main/examples/fastapi-response-streaming))来代替 ALB 或使用 AWS Fargate 来代替 Lambda,以获得更好的流响应性能。 -### 有计划支持SageMaker模型吗? +### 有计划支持 SageMaker 模型吗? -目前没有支持SageMaker模型的计划。这取决于是否有客户需求。 +目前没有支持 SageMaker 模型的计划。这取决于是否有客户需求。 -### 有计划支持Bedrock自定义模型吗? +### 有计划支持 Bedrock 自定义模型吗? -不支持微调模型和设置了已预配吞吐量的模型。如有需要,你可以克隆repo并进行自定义。 +不支持微调模型和设置了已预配吞吐量的模型。如有需要,你可以克隆 repo 并进行自定义。 ### 如何升级? -要使用最新功能,您无需重新部署CloudFormation堆栈。您只需拉取最新的镜像即可。 +要使用最新功能,您无需重新部署 CloudFormation 堆栈。您只需拉取最新的镜像即可。 具体操作方式取决于您部署的版本: -- **Lambda版本**: 进入AWS Lambda控制台,找到Lambda 函数,然后找到并单击`部署新映像`按钮,然后单击保存。 -- **Fargate版本**: 进入ECS控制台,单击ECS集群,转到`任务`选项卡,选择正在运行的唯一任务,然后点击`停止所选`菜单, ECS会自动启动新任务并且使用最新镜像。 +- **Lambda 版本**: 进入 AWS Lambda 控制台,找到 Lambda 函数,然后找到并单击`部署新映像`按钮,然后单击保存。 +- **Fargate 版本**: 进入 ECS 控制台,单击 ECS 集群,转到`任务`选项卡,选择正在运行的唯一任务,然后点击`停止所选`菜单, ECS 会自动启动新任务并且使用最新镜像。 ## 安全 @@ -249,4 +248,4 @@ uvicorn api.app:app --host 0.0.0.0 --port 8000 ## 许可证 -本项目根据MIT-0许可证获得许可。请参阅LICENSE文件。 +本项目根据 MIT-0 许可证获得许可。请参阅 LICENSE 文件。 diff --git a/README_TW.md b/README_TW.md new file mode 100644 index 00000000..c59f425d --- /dev/null +++ b/README_TW.md @@ -0,0 +1,251 @@ +# Bedrock Access Gateway + +OpenAI 兼容的 Amazon Bedrock RESTful API + +[English](./README.md) | [簡體中文](./README_CN.md) + +## 最新消息 🔥 + +此專案支援 **Claude 3.7 Sonnet** 和 **DeepSeek R1** 的推理功能,詳情請參閱 [使用方法](./docs/Usage.md#reasoning)。您需要先執行 Models API 以刷新模型列表。 + +## 概述 + +Amazon Bedrock 提供了多種基礎模型(如 Claude 3 Opus/Sonnet/Haiku、Llama 2/3、Mistral/Mixtral 等)以及廣泛的功能,讓您可以建立生成式 AI 應用程式。更多資訊請參閱 [Amazon Bedrock](https://aws.amazon.com/bedrock) 登陸頁面。 + +有時候,您可能已經使用 OpenAI API 或 SDK 開發了應用程式,並希望在不修改代碼庫的情況下試驗 Amazon Bedrock。或者您可能只是希望在 AutoGen 等工具中評估這些基礎模型的功能。這個倉庫允許您通過 OpenAI API 和 SDK 無縫訪問 Amazon Bedrock 模型,讓您可以在不更改代碼的情況下測試這些模型。 + +如果您覺得這個 GitHub 倉庫有用,請考慮給它一個免費的星星 ⭐ 以表示對專案的支持和感謝。 + +**功能:** + +- [x] 支援通過伺服器發送事件(SSE)進行流式回應 +- [x] 支援模型 API +- [x] 支援聊天完成 API +- [x] 支援工具調用 +- [x] 支援嵌入 API +- [x] 支援多模態 API +- [x] 支援跨區域推理 +- [x] 支援推理(**新功能**) + +更多詳情請參閱 [使用指南](./docs/Usage.md)。 + +## 快速入門 + +### 先決條件 + +請確保您已滿足以下先決條件: + +- 訪問 Amazon Bedrock 基礎模型。 + +> 有關如何請求模型訪問的更多資訊,請參閱 [Amazon Bedrock 使用者指南](https://docs.aws.amazon.com/bedrock/latest/userguide/model-access.html)(設置 > 模型訪問) + +### 架構 + +下圖展示了參考架構。請注意,它還包括一個新的 **VPC**,其中只有兩個公共子網用於應用程式負載均衡器(ALB)。 + +![架構](assets/arch.png) + +您也可以選擇在 ALB 後面使用 [AWS Fargate](https://aws.amazon.com/fargate/) 而不是 [AWS Lambda](https://aws.amazon.com/lambda/),主要區別在於流式回應的首字節延遲(Fargate 更低)。 + +或者,您可以使用 Lambda Function URL 替換 ALB,請參閱 [示例](https://github.com/awslabs/aws-lambda-web-adapter/tree/main/examples/fastapi-response-streaming)。 + +### 部署 + +請按照以下步驟將 Bedrock Proxy API 部署到您的 AWS 帳戶。僅支援 Amazon Bedrock 可用的區域(例如 `us-west-2`)。部署大約需要 **3-5 分鐘** 🕒。 + +**步驟 1:在 Secrets Manager 中創建自己的 API 密鑰(必須)** + +> **注意:** 此步驟是使用您喜歡的任何字符串(無空格)創建自定義 API 密鑰(憑證),稍後將用於訪問代理 API。此密鑰不必與您的實際 OpenAI 密鑰匹配,您也不需要擁有 OpenAI API 密鑰。請保持密鑰的安全和私密。 + +1. 打開 AWS 管理控制台並導航到 AWS Secrets Manager 服務。 +2. 點擊 "存儲新秘密" 按鈕。 +3. 在 "選擇秘密類型" 頁面,選擇: + + 秘密類型:其他類型的秘密 + 鍵/值對: + + - 鍵:api_key + - 值:輸入您的 API 密鑰值 + + 點擊 "下一步" + +4. 在 "配置秘密" 頁面: + 秘密名稱:輸入名稱(例如 "BedrockProxyAPIKey") + 描述:(可選)添加您的秘密描述 +5. 點擊 "下一步" 並檢查所有設置,然後點擊 "存儲" + +創建後,您將在 Secrets Manager 控制台中看到您的秘密。記下秘密 ARN。 + +**步驟 2:部署 CloudFormation 堆棧** + +1. 登錄 AWS 管理控制台,切換到要部署 CloudFormation 堆棧的區域。 +2. 點擊以下按鈕在該區域啟動 CloudFormation 堆棧。選擇以下之一: + + [
 ALB + Lambda 一鍵部署 🚀 
](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxy.template&stackName=BedrockProxyAPI) + + [
 ALB + Fargate 一鍵部署 🚀 
](https://console.aws.amazon.com/cloudformation/home?#/stacks/quickcreate?templateURL=https://aws-gcr-solutions.s3.amazonaws.com/bedrock-access-gateway/latest/BedrockProxyFargate.template&stackName=BedrockProxyAPI) + +3. 點擊 "下一步"。 +4. 在 "指定堆棧詳細信息" 頁面,提供以下信息: + + - 堆棧名稱:如有需要,修改堆棧名稱。 + - ApiKeySecretArn:輸入您用於存儲 API 密鑰的秘密 ARN。 + + 點擊 "下一步"。 + +5. 在 "配置堆棧選項" 頁面,您可以保留默認設置或根據需要自定義設置。點擊 "下一步"。 +6. 在 "審查" 頁面,審查您即將創建的堆棧詳細信息。勾選底部的 "我承認 AWS CloudFormation 可能會創建 IAM 資源" 复选框。點擊 "創建堆棧"。 + +就是這樣!🎉 部署完成後,點擊 CloudFormation 堆棧並轉到 **輸出** 標籤,您可以從 `APIBaseUrl` 中找到 API 基本 URL,值應該類似於 `http://xxxx.xxx.elb.amazonaws.com/api/v1`。 + +### 故障排除 + +如果遇到任何問題,請參閱 [故障排除指南](./docs/Troubleshooting.md) 以獲取更多詳細信息。 + +### SDK/API 使用 + +您只需要 API 密鑰和 API 基本 URL。如果您沒有設置自己的密鑰,則將使用默認 API 密鑰(`bedrock`)。 + +現在,您可以嘗試代理 API。假設您想測試 Claude 3 Sonnet 模型(模型 ID:`anthropic.claude-3-sonnet-20240229-v1:0`)... + +**API 使用示例** + +```bash +export OPENAI_API_KEY= +export OPENAI_BASE_URL= +# 對於舊版本 +# https://github.com/openai/openai-python/issues/624 +export OPENAI_API_BASE= +``` + +```bash +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!" + } + ] + }' +``` + +**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) +``` + +更多詳情請參閱 [使用指南](./docs/Usage.md) 以了解如何使用嵌入 API、多模態 API 和工具調用。 + +## 其他示例 + +### LangChain + +請確保使用 `ChatOpenAI(...)` 而不是 `OpenAI(...)` + +```python +# pip install langchain-openai +import os + +from langchain.chains import LLMChain +from langchain.prompts import PromptTemplate +from langchain_openai import ChatOpenAI + +chat = ChatOpenAI( + model="anthropic.claude-3-sonnet-20240229-v1:0", + temperature=0, + openai_api_key=os.environ['OPENAI_API_KEY'], + openai_api_base=os.environ['OPENAI_BASE_URL'], +) + +template = """問題:{question} + +答案:讓我們一步一步來思考。""" + +prompt = PromptTemplate.from_template(template) +llm_chain = LLMChain(prompt=prompt, llm=chat) + +question = "Justin Beiber 出生那年哪支 NFL 球隊贏得了超級碗?" +response = llm_chain.invoke(question) +print(response) + +``` + +## 常見問題 + +### 關於隱私 + +此應用程式不會收集您的任何數據。此外,默認情況下,它不會記錄任何請求或回應。 + +### 為什麼不使用 API Gateway 而是使用應用程式負載均衡器? + +簡短的回答是 API Gateway 不支援流式回應的伺服器發送事件(SSE)。 + +### 支援哪些區域? + +一般來說,Amazon Bedrock 支援的所有區域也將被支援,如果沒有,請在 Github 中提出問題。 + +請注意,並非所有模型都在這些區域中可用。 + +### 支援哪些模型? + +您可以使用 [Models API](./docs/Usage.md#models-api) 來獲取/刷新當前區域支援的模型列表。 + +### 我可以構建並使用自己的 ECR 映像嗎? + +是的,您可以克隆倉庫並自行構建容器映像(`src/Dockerfile`),然後推送到您的 ECR 倉庫。您可以使用 `scripts/push-to-ecr.sh` + +在部署之前替換 CloudFormation 模板中的倉庫 URL。 + +### 我可以在本地運行嗎? + +是的,您可以在本地運行,例如在 `src` 文件夾下運行以下命令: + +```bash +uvicorn api.app:app --host 0.0.0.0 --port 8000 +``` + +API 基本 URL 應類似於 `http://localhost:8000/api/v1`。 + +### 使用代理 API 是否會犧牲性能或增加延遲 + +與 AWS SDK 調用相比,參考架構將在回應上帶來額外的延遲,您可以自行嘗試和測試。 + +此外,您可以使用 Lambda Web Adapter + Function URL(請參閱 [示例](https://github.com/awslabs/aws-lambda-web-adapter/tree/main/examples/fastapi-response-streaming))替換 ALB 或使用 AWS Fargate 替換 Lambda 以獲得更好的流式回應性能。 + +### 有計劃支援 SageMaker 模型嗎? + +目前沒有計劃支援 SageMaker 模型。如果有客戶需求,這可能會改變。 + +### 有計劃支援 Bedrock 自定義模型嗎? + +目前不支援微調模型和具有預配置吞吐量的模型。如果需要,您可以克隆倉庫並進行自定義。 + +### 如何升級? + +要使用最新功能,您不需要重新部署 CloudFormation 堆棧。您只需拉取最新映像即可。 + +具體操作取決於您部署的版本: + +- **Lambda 版本**:進入 AWS Lambda 控制台,找到 Lambda 函數,然後找到並點擊 `部署新映像` 按鈕並點擊保存。 +- **Fargate 版本**:進入 ECS 控制台,點擊 ECS 集群,進入 `任務` 標籤,選擇唯一正在運行的任務並簡單點擊 `停止選定` 菜單。新的任務將自動啟動最新映像。 + +## 安全 + +更多信息請參閱 [CONTRIBUTING](CONTRIBUTING.md#security-issue-notifications)。 + +## 授權 + +此庫根據 MIT-0 授權許可。請參閱 LICENSE 文件。