image.png

1. LobeChat 介绍

LobeChat 是一款开源的 AI 对话应用,专为用户打造高效便捷的智能对话解决方案。通过与 Amazon Bedrock 的深度集成,LobeChat 可以无缝调用多种强大的大语言模型,包括 Amazon Titan、Anthropic Claude、AI21 Labs 等,充分利用 Bedrock 的灵活性和扩展能力,为用户提供优质的对话体验。

LobeChat 提供丰富的功能扩展,包括多轮对话、知识库问答和自定义 API 调用,特别适合企业在客户服务、业务咨询以及内部知识管理等多种场景中使用。对于企业内部知识库管理,LobeChat 能够高效整合分散的信息资源,构建统一的知识问答平台,帮助员工快速获取所需信息,大幅提升内部协作与效率。

借助 Amazon Bedrock 的无服务器架构,LobeChat 可灵活应对业务增长需求,实现高度可扩展的服务能力,同时确保高安全性与高可靠性。这使其成为零售、电商等企业在内部知识管理、智能问答和高效运营中不可或缺的智能化工具。LobeChat 为企业实现数字化转型提供了强大的支持,并助力打造高效、智能的工作流程。

2. 部署架构图

image.png

本架构展示了 LobeChat 与亚马逊云科技服务集成的整体流程,提供高效、灵活的 LLM 知识库解决方案:

  • 用户认证与访问加速:

    • 使用 Amazon Cognito 进行用户登录和身份验证,确保安全访问。
    • 通过 Amazon CloudFront 提供低延迟和高速的内容分发,优化全球访问速度,确保全球用户均能享受到快速稳定的服务,提升用户体验。
  • 系统部署与存储:

    • ECR (Elastic Container Registry):用于存储 LobeChat 镜像,通过 EC2 进行镜像构建和推送,并直接部署到 EC2 实例,实现镜像构建与部署的高效性。
    • Amazon S3:存储知识库的原始文件,为后续处理提供数据支持,支持大规模非结构化数据的管理。
    • Amazon RDS for PostgreSQL:用于存储知识库向量,支持高效的检索和管理。RDS 提供的数据库自动扩展和备份功能,确保了数据的高可用性和容灾能力。
  • 模型集成与嵌入:

    • 对接 Amazon Bedrock,支持 Claude 3.5 Sonnet v2Llama 等多种大语言模型,满足不同场景下的生成式 AI 需求,保证系统的强大处理能力。
    • 使用 Titan Embedding 作为知识库的嵌入模型,提供高质量的文本向量化能力。
  • 高效、安全的知识库管理:

    • 通过 RDSS3,LobeChat 能够高效存储和管理大规模的结构化与非结构化数据,优化了知识库的检索速度与准确性。
  • 灵活的 AI 模型支持:

    • 集成多种强大的 AI 模型(如 Claude 3.5 Sonnet v2 和 Llama)和 Titan Embedding,确保系统能够满足各种自然语言处理任务的需求。
    • Amazon Bedrock 的弹性和多模型支持让企业可以根据需求选择最合适的模型,并进行灵活的定制。

      3. 部署说明

3.1 确定 LobeChat 访问域名

对于 Amazon Cognito 和 LobeChat 来说,域名是必不可少的,因为它能够有效防止开放重定向攻击,确保回调请求来源的合法性,避免恶意攻击者通过伪造 IP 地址绕过安全验证。同时,域名支持 HTTPS 加密通信,确保敏感数据在传输过程中得到保护。使用域名还简化了跨多个环境(如开发、生产环境)的管理,增强了系统的可扩展性和灵活性。总之,必须使用域名,以确保遵循 OAuth2.0 等身份验证标准,从而保障系统的安全性、合规性和可靠性。

本方案中将使用 lobechat.xxx.com 作为示例,您在部署时请更改为您自己合适的域名。

3.2 创建 Amazon Cognito

Amazon Cognito 是一项由 AWS 提供的身份管理服务,旨在简化用户身份验证、授权和用户数据同步。它允许开发者轻松地在应用程序中实现用户注册、登录、身份验证和访问控制功能,同时保证安全性和可扩展性。Cognito 主要面向移动应用和 Web 应用开发者,提供了多种身份验证方式,支持单点登录(SSO)和社交登录。

  1. 创建 Cognito 用户池

image.png

  • 应用程序类型选择《传统的 Web 应用程序》
  • 命名您的应用程序修改为 LobeChat
  • 登录标识符的选项选择电子邮件
  • 点击创建
  1. 设置允许的 URL

image.png

在《编辑管理登录页面》设置允许回调 URL 和运行的注销 URL,分别为 https://lobechat.xxx.com/api/auth/callback/cognitohttps://lobechat.xxx.com

image.png

在《编辑管理登录页面》设置允许回调 URL 为 https://lobechat.xxx.com/api/auth/callback/cognito

  1. 记录应用程序的客户端 ID 和客户端密钥,后续会在 LobeChat 的环境文件中进行配置使用

image.png

本示例的客户端 ID 为:6r1gj6jvt6a61cagvtfbvv9b1t,客户端密钥为:ctooihnq68bjenrdkae2k5scdf03273l4enqusov7m67b8ge5s。

3.3 启动 EC2

  1. 登录亚马逊云科技管理控制台,导航到 EC2 控制面板

image.png

  1. “Amazon Machine Image (AMI)” 选择 “Amazon Linux 2023 AMI”,实例类型选择 m5.xlarge。
  2. 设置密钥对、网络、存储等其他设置。
  3. 点击下一步,启动 EC2。

3.4 创建 RDS 数据库

  1. 选择 PostgreSQL 引擎

image.png

  1. 数据库实例选择 db.m6gd.large

image.png

  1. 使用 SSH 连接到 EC2 实例
ssh -i "your-key-pair.pem" ec2-user@your-instance-public-dns

sudo yum update -y
sudo yum install -y docker
sudo systemctl start docker
sudo systemctl enable docker
sudo docker pull public.ecr.aws/p6j6k0r6/lobechat:v1.45.6

vim .env
  1. 修改以下红色参数
# lobechat 域名
APP_URL=https://lobechat.xxx.com

KEY_VAULTS_SECRET=Kix2wcUONd4CX51E/ZPAd36BqM4wzJgKjPtz2sGztqQ=
DATABASE_DRIVER=node
NEXT_PUBLIC_SERVICE_MODE=server

# RDS控制台中查找DATABASE连接字符串
DATABASE_URL=postgresql://postgres:xxx@lobe.xxxx.us-east-1.rds.amazonaws.com:5432/lobe?sslmode=verify-ca&sslrootcert=/app/migrations/global-bundle.pem

NEXT_AUTH_SECRET=NX2kaPE923dt6BL2U8e9oSre5RfoT7hg
NEXT_AUTH_SSO_PROVIDERS=cognito
NEXTAUTH_URL=https://lobechat.xxx.com/api/auth

# Cognito 控制台中查找以下参数
AUTH_COGNITO_ID=24uf3puaedui42l7bqo3a1pedb
AUTH_COGNITO_SECRET=metel8pebtoa0m2n84gjba1q9rcsikke1bm6j5vnoo7k4e15deh
AUTH_COGNITO_ISSUER=https://cognito-idp.us-east-1.amazonaws.com/us-east-1_eulDPpxHE

# 请设置S3的AK、SK以及S3桶路径
S3_ACCESS_KEY_ID=S3_ACCESS_KEY
S3_SECRET_ACCESS_KEY=S3_SECRET_ACCESS_KEY
S3_ENDPOINT=https://s3.amazonaws.com
S3_BUCKET=lobechat-ho0gviwonb
S3_PUBLIC_DOMAIN=https://s3.us-east-1.amazonaws.com
S3_SET_ACL=0
S3_ENABLE_PATH_STYLE=0

#以下参数可部署https://github.com/aws-samples/bedrock-access-gateway 方案获取
OPENAI_API_KEY=bedrock
OPENAI_PROXY_URL=http://bedroc-proxy-mwsd23mebajk-113420711.us-east-1.elb.amazonaws.com/api/v1
OPENAI_MODEL_LIST=text-embedding-3-small

ENABLED_AWS_BEDROCK=1

# 设置Bedrock的AK、SK
AWS_ACCESS_KEY_ID=BEDROCK_ACCESS_KEY
AWS_SECRET_ACCESS_KEY=BEDROCK_SECRET_ACCESS_KEY
AWS_REGION=us-east-1 
  1. 修改参数后,执行以下命令:
docker run -d --name lobe-chat -p 3210:3210 --env-file .env --restart always public.ecr.aws/p6j6k0r6/lobechat:v1.45.6

3.5 配置 CloudFront

  1. 创建 CloudFront 分配,设置自定义源为 EC2 地址,以及端口号

image.png

  1. 配置域名及证书

image.png

  1. 创建分配,待部署完成后,访问 https://lobechat.xxxx.com 进行 Lobechat 访问

3.6 访问 Lobechat

  1. 点击左上角进行登录,跳转到 Amazon Cognito 页面进行用户登录,如下:

image.png

  1. 登录成功后,进入首页,如下:

image.png

  1. 添加知识库,上传知识库文件,如下:

image.png

  1. 对上传的知识库进行 Chunking 向量存储,如下:

image.png

  1. 点击 Chunking 后,将调用 Embedding 模型进行自动向量化,如下:

image.png

  1. 使用知识库进行对话,点击对话框上的书架进行知识库的选择即可,如下:

image.png

  1. 对话框中提出问题后,LobeChat 将自动引用知识库进行回答,如下:

image.png

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

本篇作者

image.png

本期最新实验《多模一站通 —— Amazon Bedrock 上的基础模型初体验
✨ 精心设计,旨在引导您深入探索Amazon Bedrock的模型选择与调用、模型自动化评估以及安全围栏(Guardrail)等重要功能。无需管理基础设施,利用亚马逊技术与生态,快速集成与部署生成式AI模型能力。
⏩️[点击进入实验] 即刻开启 AI 开发之旅
构建无限, 探索启程!

亚马逊云开发者
2.9k 声望9.6k 粉丝

亚马逊云开发者社区是面向开发者交流与互动的平台。在这里,你可以分享和获取有关云计算、人工智能、IoT、区块链等相关技术和前沿知识,也可以与同行或爱好者们交流探讨,共同成长。