亚马逊AWS官方博客

认识 SwiftChat:一款跨平台、高性能的 AI 助手应用程序

SwiftChat 是一款以 Amazon Bedrock 为基础、大语言模型(Large Language Model,LLM)为核心驱动的多模态 AI 聊天应用程序,以其出色的性能、多平台支持和丰富功能集成而广受好评 [1]。本文将深入分析 SwiftChat 的架构设计、技术实现、用户体验特点及其在各种场景下的应用价值,特别是在教育、企业演示、开源定制和日常工作助手方面的优势。

应用背景

随着生成式 AI(Generative AI)技术逐渐被人们应用,个人助手类应用程序正成为日常工作与生活中不可或缺的工具。然而,当前开发者在构建基于生成式 AI 技术的个人助手应用时普遍存在以下显著问题。

  • 单一平台限制:大多数生成式 AI 应用仅支持特定平台,但用户需要在不同设备上使用。
  • 多模态能力:缺乏多模态支持,例如对图片/视频的理解,或者无法生成/编辑图片。
  • 多模型选择:一个模型往往不能适应所有场景,兼容多种模型提供商已经成为共识。
  • 隐私安全:用户数据安全和隐私保护不足。

在这种背景下,SwiftChat 应运而生,旨在通过一套完整的方案解决上述痛点,满足用户对高效、安全、跨平台 AI 助手的需求。

方案技术特色

1. 高效的前后端分离架构

SwiftChat 采用了先进的分层架构设计,实现了前后端分离与高效协作。架构示意如下图所示。

在这个架构中,前端基于 React Native 开发,实现真正的跨平台体验(iOS、Android、macOS)。后端采用 Python FastAPI 构建高性能服务器,支持两种部署模式。

  • Amazon App Runner 部署:提供高性能、可伸缩的生产环境。
  • Amazon Lambda 部署:通过 Function URL 提供更具成本效益的解决方案。

整个方案主要使用了以下亚马逊云科技的服务。

  • Amazon Bedrock:完全托管的生成式 AI 构建平台,已上架超过 100 个模型,通过单个 API 提供来自 Amazon、AI21 Labs、Anthropic 等公司的基础模型 [2]。
  • Amazon App Runner:用于部署和管理 SwiftChat, 提供高可用性和自动扩缩的容器化应用服务。
  • Amazon Lambda:可选的后端服务,用于处理和响应用户请求,提供无服务器架构的高可用性和自动扩缩的能力。

2. 广泛的多平台支持

SwiftChat 的多平台支持是其主要亮点之一,通过精心设计实现了高效的跨平台体验。

(1)统一代码基础:利用 React Native 的跨平台能力,共享超过 95% 的代码;使用 TypeScript 保证类型安全和代码可靠性。

(2)平台优化适配:针对 iOS/Android 采用原生组件渲染,并实现触感反馈;针对 MacOS,通过 Mac Catalyst 提供原生桌面体验;针对 iPad 和 Android 平板电脑优化了用户界面。

3. 丰富的用户体验

SwiftChat 提供了丰富的用户体验特性,能够满足不同场景的需求。

(1)全面的内容呈现

SwiftChat 支持完整的 Markdown 格式渲染,包括表格、代码块、LaTeX 数学公式等,如下图所示。同时,它支持多种编程语言,提供代码高亮显示,并且可以自动适应屏幕方向和设备尺寸。

(2)功能丰富的交互界面

用户能够自由定制系统提示词,包括添加、编辑、排序和删除自定义提示词,如下图所示。用户还可以灵活地选择多种模型,包括 Amazon Bedrock 上提供的模型(如 Amazon Nova [3]、Titan、Claude、Llama、DeepSeek 等)、Ollama 本地模型、OpenAI 模型(如 GPT-4o、GPT-4o mini 等),以及 OpenAI 兼容模型。

(3)多模态能力

用户能够输入文本、图像、视频等多种格式的内容,并方便地进行图像分析、文档解析(如下图所示)和视频分析(支持 30 秒直接录制或上传 1080p/4K 视频)。

SwiftChat 提供了一系列图像生成和处理功能,包括文本到图像生成、风格复制创作、背景移除、背景替换等,如下图所示。

blank
文本生图操作示意图 blank 背景移除操作示意图

4. 性能优化策略

SwiftChat 的出色性能源于在以下四个方面的优化。

  • 快速启动速度:React Native Hermes [4] 引擎采用了提前编译(Ahead-Of-Time,AOT)技术,并且采用了组件懒加载策略,延迟加载复杂组件,大大缩短启动时间,让应用能够在 1 秒内启动并处于用户输入状态。
  • 请求速度优化:内置文件预处理功能,如图像自动压缩与格式转换,以减少传输数据量,与 Amazon Bedrock 同区域部署以减少网络延迟,同时采用了高效的数据流协议。
  • 渲染性能:使用 useMemo 和自定义二级缓存机制,最大程度地减少了不必要的组件重复解析和渲染,同时使用原生 UI 组件,让应用体验更加顺畅。
  • 存储优化:使用 MMKV 存储(Memory-mapped Key-Value storage)技术 [5],比 React Native 传统方案 AsyncStorage 快 10 倍以上;优化会话内容和历史记录存储结构;同时对 API Key 进行本地 AES 加密存储,确保数据存储安全。

5. 安全与隐私保护

SwiftChat 将安全性和隐私保护视为核心设计原则,包括以下方面。

  • 数据保护:API 密钥使用加密存储。
  • 最小权限设计:仅请求必要的设备权限。
  • 本地存储策略:所有会话数据仅保存在本地设备。
  • 零追踪政策:不收集用户行为数据。
  • 零分析政策:不进行任何数据挖掘或分析。

应用场景分析

1. 教育应用场景

针对教育机构和个人的学习与研究需求,SwiftChat 提供以下能力。

  • 数学解题:通过 LaTeX 支持呈现复杂公式和步骤解析。
  • 定制化提示词:可针对不同学科创建特定的系统提示词。
  • 多模态学习:支持图表、图像和文本综合理解。
  • 开发扩展性:基于开源代码快速定制专属功能。

2. Amazon Bedrock 产品演示

SwiftChat 基于亚马逊云科技的资源构建,适合作为 Amazon Bedrock 开箱即用的演示方案。

  • 全功能展示:完整展示 Amazon Bedrock 支持的模型能力。
  • 快速部署:简化的设置过程,快速构建 PoC。
  • 多模态演示:直观展示文本、图像和视频分析能力。
  • 跨平台体验:在各种设备上提供体验一致的演示效果。

您可以观看视频 Build SwiftChat: A Lightning-Fast Gen AI Chat App,了解更多详细介绍。

3. 开源定制

SwiftChat 的开源特性为用户自主扩展功能提供了坚实的基础。

  • 代码透明度:完整掌握实现细节,消除黑盒顾虑。
  • 自由定制:根据特定需求修改和扩展功能。
  • 社区支持:持续改进与问题修复。
  • 成本效益:降低开发和维护成本。

4. 日常工作助手

SwiftChat 不断丰富和优化的功能,以及跨平台应用的能力,使其适合用做个人或团队的日常 AI 工具。

  • 创意图像生成:快速创建概念图和视觉素材。
  • 文稿撰写:辅助内容创作和编辑。
  • 数据分析:解读和可视化数据。
  • 多任务支持:单一应用满足多种工作需求。
  • 文图翻译:支持输入图文,以及超过 200 多种语言的翻译。
  • 团队共享:通过部署统一的后端,并共享 API 密钥的方式,使团队成员可在多种平台上共同使用云端资源,便于统一管理和权限控制。

方案成本

影响解决方案成本的主要因素包括:

  • SwiftChat 后端的 Amazon App Runner
  • 使用 Amazon Lambda 做 SwiftChat 的后端(可选的部署方式)
  • 模型的 input token 及 output token 的消耗

假设 5 人共同使用,每人每天使用 1 小时,方案后端部署在美国东部区域 us-east-1,SwiftChat 的使用成本估算如下表所示。

亚马逊云科技服务 规格 用量 日费用预估/美元 月费用预估/美元
AppRunner[6] CPU:0.5 vCPU
内存:1 GB
每日使用时长:5 小时
QPS:2
并发:10
0.33 9.9
Bedrock: Nova Pro[7] 按需 输入词元的数量:100 万个/月
输出词元的数量:50 万个/月
0.08 2.4
Bedrock: Nova Canvas[7] 按需 300 图片 x 0.04 USD = 12.00 最高 1024 x 1024 像素的标准图像 0.40 12

结论

在生成式 AI 应用日益普及的今天,SwiftChat 通过解决现有 AI 助手应用的痛点,为用户提供了一个快速、安全、功能丰富的跨平台解决方案。无论您是个人用户、开发团队还是教育工作者,SwiftChat 都能满足您对 AI 助手的高要求。

通过采用 React Native 和 Amazon Bedrock 技术,SwiftChat 不仅展示了构建高性能生成式 AI 应用的可能性,也为开发者提供了宝贵的学习资源。随着未来版本的迭代更新,SwiftChat 将持续优化用户体验,添加更多实用功能,为用户创造更大价值。

如果您正在寻找一款能够在多平台上提供一致体验、保护隐私安全、功能强大且响应迅速的 AI 助手应用,SwiftChat 无疑是一个值得尝试的优秀选择。


*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。

参考文献

[1] https://github.com/aws-samples/swift-chat.git

[2] https://docs.aws.amazon.com/bedrock/latest/APIReference/API_runtime_Converse.html

[3] https://docs.aws.amazon.com/nova/latest/userguide/getting-started-console.html

[4] https://reactnative.dev/docs/hermes

[5] https://github.com/Tencent/MMKV

[6] https://cloudwatch-portal.com/cn/apprunner/pricing

[7] https://cloudwatch-portal.com/bedrock/pricing

本篇作者

庄颖勤

亚马逊云科技解决方案架构师,负责基于亚马逊云科技的云计算方案架构设计、咨询、实施等工作。在 DevOps、CI/CD 和容器等领域拥有丰富的技术和支持经验,致力于帮助客户实现技术创新和业务发展。

祝小伟

亚马逊云科技解决方案架构师,在移动应用开发领域已有近 10 年的经验,尤其对 Android 及跨平台应用开发有着独到的见解和研究,同时在 GenAI 移动应用方面,持续探索更高效、更可靠的解决方案。