利用 Amazon Bedrock Claude3 打造个性化 AI Character 应用
从智能客服到虚拟助手,再到创意内容生成,GenAI 正在改变我们与计算机交互的方式。本教程将介绍如何使用 Amazon Bedrock 上的 Claude3 打造专属的 AI Character 应用,助力快速开启 GenAI 应用开发之旅。




Amazon Bedrock
Amazon Bedrock 是一个托管的云服务,通过统一的 API 提供来自领先 AI 公司和亚马逊的基础模型 (Foundation Models) 的访问,如 Anthropic Claude、Meta Llama、Mistral 模型等。用户可以从各种基础模型中进行选择,找到适合自身业务场景的模型。Amazon Bedrock 还提供了围绕生成式 AI 广泛的功能,可以在安全、隐私和负责任的 AI 原则下构建生成式 AI 应用。使用 Amazon Bedrock,您可以轻松地试验和评估适用于您的使用场景的基础模型,使用微调 (fine-tuning) 和检索增强生成 (Retrieval Augmented Generation,RAG) 等技术利用企业数据进行定制, 并支持构建使用企业系统和数据源执行任务的代理 (Agent)。
Claude3
Claude3 是 Anthropic 公司最新发布的大型语言模型系列,包含 Haiku,Sonnet,Opus 三个模型,从智能度、推理速度及性价比等方面为用户提供多样化的选择。它在保留了 Claude2 出色对话能力的同时,引入了更强的推理能力和更丰富的知识覆盖。Claude3 由来自 Anthropic 的 Constitutional AI 技术训练而成,在安全性和价值对齐方面表现突出。此外,它还支持多种编程语言,可以用于构建功能强大的 AI 编程助手。
方案介绍
利用 Amazon Bedrock Claude3 的多模态能力模型、以及 SillyTavern 和 AI Character Editor,我们可以高效地创建个性化的 AI Character 角色应用。使用 SillyTavern 部署一个开箱即用的聊天环境, 其内置的角色库允许我们快速试用各种预设角色。如果我们希望创建自定义的 AI 角色,可以使用 AI Character Editor 直观地编写角色卡,定义角色的背景、性格和行为风格。AI Character Editor 定义完成的角色,将自定义角色导入 SillyTavern 聊天环境,我们就可以与富有魅力的 AI 角色进行沟通和互动了。
技术架构

我们将 SillyTavern 和 Character-editor 部署在一台 Amazon EC2 (t3.medium),用户可以访问暴露在 8080 端口的 Character-editor,以及 8000 端口的 SillyTavern,并配置 SillyTavern 使用 Bedrock Claude3 Sonnet 作为后端大模型。
1. Bedrock 配置
在使用 Bedrock 的模型之前,需要申请模型的访问权限。在模型访问申请页面中,首先点击右上方的“Manage model access”。

然后在“Anthropic”提供商提供的“Claude3 Sonnet”模型前打勾。

勾选 Claude3 Sonnet 并填写使用用例后,滚动到页面底部,点击“Save changes”,完成模型访问的申请。 然后创建用访问 Bedrock 的 IAM user 以及 Access key,过程可以参考该链接(管理 IAM 用户的访问密钥)。
2. 安装 SillyTavern
SillyTavern 是一款开源的角色扮演聊天前端界面,通过它您能够方便地加载角色,连接后端大语言模型,快速开始聊天。
创建 EC2
在 EC2 控制台中,点击侧边栏的“Instances”,进入实例页面,点击右上方的橙色按钮“Launch instances”创建新实例。 点击 Ubuntu,在 Amazon Machine Image 中选择”Ubuntu Server 22.04 LTS (HVM)”, Instance type 则在下拉选单中选择“t3.medium”类型。

配置磁盘大小为 30GB

在 Inbound Security Group Rules 中,需要配置三条规则:
- ssh 规则端口为 22,便于我们登录到服务器做相关配置
- HTTP 规则,Port “8000”,访问 SillyTavern
- HTTP 规则,Port “8080”,访问 Character-editor
配置好 Inbound Security Group Rules 的页面应与下图类似:

接下来,您将在 EC2 中安装 SillyTavern。
连接到实例
在连接实例之前,您需要先在 EC2 实例页面确认实例已完全启动,Status check 显示为绿色。

连接 EC2 实例的方式有很多,您可以选择任何一种您习惯的方式连接,并进行后续的配置。
配置 Node.js 运行环境
需要 Node 20.x 以上的版本作为 SillyTavern 运行时环境。
安装 Node.js 环境:
# 更新包列表
sudo apt update
# 添加 Node.js 20.x 版本的仓库到你的系统中
curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -
# 将安装 Node.js 20.x 的最新版本, 以及 NPM(Node Package Manager)
sudo apt install nodejs -y
安装完成后,您可以通过以下命令检查 Node.js 和 npm 的版本,以验证是否安装成功:
node --version
npm --version
如果安装正确,这些命令会输出相应的版本号,类似于下图所示:

部署 SillyTavern
Clone SillyTavern 代码到本地:
cd ~
git clone https://github.com/Chen188/SillyTavern.git -b bedrock
配置 SillyTavern 访问设置:
在 SillyTavern 目录下,打开 config.yaml 文件,修改以下参数以实现安全的远程访问:
- listen: true
- whitelistMode: false
- basicAuthMode: true
- basicAuthUser 设定的远程登录 sillytavern 的用户名和密码
- username 输用户名,password 输密码,默认为 user/password
修改完成后,保存配置文件并退出,启动 SillyTavern 服务。如果启动成功,在终端中您应该能看到类似的提示:

3. 配置 SillyTavern 使用 Claude3 模型
在浏览器中,输入 http://<您的ec2 public ip>:8000。在弹出的用户名密码对话框中输入在 config.yaml 配置文件中填写的用户名密码,进入 SillyTavern 欢迎页面。在首页提示框中,可以输入您的用户名,也可以使用默认值“User”。

点击顶部的插头图标,选择 API 为 Chat Completion,并在 Chat Completion Source 处配置后端为 Amazon Bedrock。

在 AWS AKSK 处,填写在创建资源步骤中新建的 IAM User 的 access key,点击 Connect 连接到 Bedrock。如果您期望通过 IAM Role 分配访问权限,则可以先创建一个带有 Amazon Bedrock 访问权限的 IAM Role,然后绑定到 EC2 服务器上,您可以参考文档来执行此操作,之后将 SillyTavern 中的 AKSK 留空。
注意:IAM User 的 Access Key/Secret Key 用于进行身份验证和访问控制。Access Key/Secret Key 必须保密,不应该与其他人共享,防止泄露导致的账户盗用。

至此,SillyTavern 配置完成,您可以点击顶端标签卡中的最后一个“角色卡片”来打开聊天页面,开始聊天。

4. 使用 AI Character Editor 角色管理器
除了和 SillyTavern 预置的角色聊天外,还可以通过 AI Character Editor 来创造自己的角色卡。
配置 AI Character Editor
登录到 EC2,从 GitHub 拉取 AI Character Editor 的代码:
git clone https://github.com/ZoltanAI/character-editor.git
安装 HTTP 服务器并启动 AI Character Editor:
cd character-editor# 安装 http-server
sudo npm install -g http-server
# 使用 http-server 启动应用:
http-server
启动成功后看到如下提示:

此时,AI Character Editor 已在 8080 端口启动。
打开角色管理器界面
在浏览器中输入 http://<您的ec2 public ip>:8080 打开角色管理器界面。
填写完成后,点击 Export 中的”Download as Character JSON”下载角色卡图片。

导入角色到 SillyTavern
打开 SillyTavern,点击右上角的”Import character”按钮。SillyTavern 会自动从图片中读取 JSON 数据并导入角色。之后角色就会出现在列表中。

与角色对话
导入完成后,您将在页面看到提示框,提示导入成功,你可以和自己创造的角色聊天啦。

总结
本文介绍了如何使用 Amazon Bedrock Claude 3、SillyTavern 和 AI Character Editor 快速构建一个 AI Character 应用。通过利用 Bedrock 的强大基础设施和 Claude3 的先进对话能力,并结合 SillyTavern 和 AI Character Editor 提供的便捷工具,我们可以显著降低 AI 角色应用的开发门槛,加速创意的实现,为 AI Character 应用开辟了一片充满想象力的新天地。
参考链接
https://github.com/Chen188/SillyTavern.git