0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)
小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了,如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原生基础设施,让终端用户通过云平台访问到部署的开源AI大语言模型。下面就是小李哥做的一个简单Meta Llama 7B问答聊天机器人界面。

这是小李哥的AWS生成式AI云计算架构介绍第二篇文章,在这个系列里我会带大家介绍所有的方案技术讲解、具体的操作细节和分享项目的代码,目的就是为了帮助大家0基础即可上手国际最热门的云计算平台亚马逊云科技AWS。也欢迎大家关注小李哥,以免错过本系列中其他的优质GenAI解决方案。
首先我们看架构图:
方案架构图:

涉及到的亚马逊云科技云计算服务:
本云原生方案包含了多个热门的云原生、全托管的亚马逊云科技服务,涉及网络、开发、计算和存储。全部的服务列表如下:
1. 网络CDN加速:Amazon CloudFront
Amazon CloudFront 是一种内容分发网络 (CDN) 服务,能够快速将数据、视频、应用程序和API安全地传递给全球客户。其优势在于通过分布在全球的边缘位置提供低延迟和高传输速度,同时具备与AWS服务的无缝集成,确保安全和高性能的内容交付。
2. 前端页面托管服务器: Amazon S3
Amazon S3(Simple Storage Service)是一个高度可扩展的对象存储服务,适用于存储和检索任何数量的数据。其优势在于提供11个9的数据持久性和冗余存储,确保前端页面的高可用性和快速访问,并且支持静态网站托管,简化了网站的部署和管理。
3. API对外网关节点:Amazon API Gateway
Amazon API Gateway 是一种完全托管的服务,使开发者能够轻松创建、发布、维护、监控和保护API。其优势在于可以处理成千上万的并发API调用,确保API的高可用性和低延迟,并且与AWS Lambda无缝集成,实现真正的无服务器架构。
4. 云原生Serverless代码托管服务: AWS Lambda
AWS Lambda 是一种无服务器计算服务,允许用户运行代码而无需预置或管理服务器。其优势在于自动扩展并仅在代码运行时计费,降低了运营成本。Lambda与其他AWS服务深度集成,简化了事件驱动架构的实现,提升了应用程序的灵活性和响应能力。
搭建云原生Serverless应用的具体步骤:
1. 首先我们打开AWS控制台,进入Lambda,点击我们的Lambda函数“endpoint_test_function”

2. 接着我们进入Lambda配置页面,配置Lambda函数

3. 点击“Edit”修改Lambda函数的基础配置

4.修改Timeout时间到1分钟。Lambda的timeout配置是函数处理请求的超时时间限额,Lamda可配置的最长超时时间为15分钟,默认时间是3秒,我们需要根据我们的代码运行时间进行对应修改。

5. 接下来,我们为lamda函数中的代码配置环境变量,点击“Edit”

6. 我们将前一篇文章中,最后一步获取的AI大语言模型API节点URL复制到Value部分。

7.接下来我们进入Lambda中查看调用AI大语言模型的Python代码。小李哥将代码分享给大家,方便大家动手实践。
# Import necessary libraries
import json
import boto3
import os
import re
import logging# Set up logging
logger = logging.getLogger()
logger.setLevel(logging.INFO)# Create a SageMaker client
sagemaker_client = boto3.client("sagemaker-runtime")# Define Lambda function
def lambda_handler(event, context):# Log the incoming event in JSON formatlogger.info('Event: %s', json.dumps(event))# Clean the body of the event: remove excess spaces and newline characterscleaned_body = re.sub(r'\s+', ' ', event['body']).replace('\n', '')# Log the cleaned bodylogger.info('Cleaned body: %s', cleaned_body)# Invoke the SageMaker endpoint with the cleaned body as payload and content type as JSONresponse = sagemaker_client.invoke_endpoint(EndpointName=os.environ["ENDPOINT_NAME"], ContentType="application/json", Body=cleaned_body)# Load the response body and decode itresult = json.loads(response["Body"].read().decode())# Return the result with status code 200 and the necessary headersreturn {'statusCode': 200,'headers': {'Access-Control-Allow-Headers': 'Content-Type','Access-Control-Allow-Origin': '*','Access-Control-Allow-Methods': 'OPTIONS,POST'},'body': json.dumps(result)}
代码解释:
第26行到第34行之间的代码
这段代码使用请求体调用SageMaker端点,然后保存响应。
第33行到第45行之间的代码
这段代码解码接收到的响应,并以结构化的JSON格式返回。
提供了状态码200以及必要的头信息(主要用于CORS)。
8. 接下来我们进入S3存储桶查看前端代码。
前端代码如下:
<!DOCTYPE html>
<html>
<head><title>Introduction to Generative AI</title><style>body {font-family: Amazon Ember, sans-serif;margin: 0;padding: 0;background: #f4f4f4;}.container {width: 80%;margin: auto;overflow: hidden;}#apiForm, #response {background: #fff;margin: 20px 0;padding: 20px;border: 1px solid #ddd;border-radius: 5px;}#apiForm label, #response label {display: block;margin-bottom: 5px;}#apiForm input[type="text"], #apiForm textarea, #response textarea {width: 100%;padding: 10px;margin-bottom: 20px;border-radius: 5px;border: 1px solid #ddd;box-sizing: border-box;}#apiForm button {padding: 10px 20px;background: #009578;color: #fff;border: none;border-radius: 5px;cursor: pointer;}h2, h5 {text-align: center;}</style>
</head>
<body><div class="container"><h2>Introduction to Generative AI</h2><div id="apiForm"><label for="apiGatewayUrl">API Gateway URL:</label><input type="text" id="apiGatewayUrl"><label for="content">Prompt:</label><textarea id="content" rows="10"></textarea><button onclick="callApi()">Generate</button></div><div id="response"><label for="output">Output:</label><textarea id="output" rows="10" readonly></textarea></div><h5><i>Please note: As with all AI-powered applications, outputs should be reviewed for accuracy and appropriateness.</i></h5></div><script>function callApi() {var apiGatewayUrl = document.getElementById('apiGatewayUrl').value;var content = document.getElementById('content').value;fetch(apiGatewayUrl, {method: 'POST',headers: {'Content-Type': 'application/json'},body: JSON.stringify({ inputs: content, parameters: { 'max_new_tokens': 400} })}).then(response => {if (!response.ok) {throw new Error(`HTTP error! status: ${response.status}`);}return response.json();}).then(data => {if(data && data[0] && data[0].generated_text){document.getElementById('output').value = data[0].generated_text;} else {throw new Error('Response is not in the expected format');}}).catch((error) => {console.error('Error:', error);alert('An error occurred: ' + error.message);});}</script>
</body>
</html>
9. 下面我们在AWS CDN Cloudfront中获取问答机器人UI的URL
10. 将URL复制到浏览器中,打开后出现问答机器人的UI。这里需要我们获取一个API Gateway的URL。

11. 我们进入到API Gateway中,获取Invoke URL

12. 最后如下图所示,填入Invoke URL和大家想问的问题,就可以得到Llama 7B的模型回复了。

相关文章:
0基础学会在亚马逊云科技AWS上搭建生成式AI云原生Serverless问答QA机器人(含代码和步骤)
小李哥今天带大家继续学习在国际主流云计算平台亚马逊云科技AWS上开发生成式AI软件应用方案。上一篇文章我们为大家介绍了,如何在亚马逊云科技上利用Amazon SageMaker搭建、部署和测试开源模型Llama 7B。下面我将会带大家探索如何搭建高扩展性、高可用的完全托管云原…...
[PaddlePaddle飞桨] PaddleOCR图像小模型部署
PaddleOCR的GitHub项目地址 推荐环境: PaddlePaddle > 2.1.2 Python > 3.7 CUDA > 10.1 CUDNN > 7.6pip下载指令: python -m pip install paddlepaddle-gpu2.5.1 -i https://pypi.tuna.tsinghua.edu.cn/simple pip install paddleocr2.7…...
C语言 | Leetcode C语言题解之第227题基本计算题II
题目: 题解: int calculate(char* s) {int n strlen(s);int stk[n], top 0;char preSign ;int num 0;for (int i 0; i < n; i) {if (isdigit(s[i])) {num num * 10 (int)(s[i] - 0);}if (!isdigit(s[i]) && s[i] ! || i n - 1) {s…...
kafka.common.KafkaException: Socket server failed to bind to xx:9092
部署分布式集群的时候遇到的错误。 解决方案: 修改config下的server.properties,添加 listenersPLAINTEXT://:9092 advertised.listenersPLAINTEXT://自己的服务器ip:9092 然后重新启动,检查进程是否存在ps -aux | grep kafka。 成功启动。...
【JS+H5+CSS实现烟花特效】
话不多说直接上代码 注意:背景图路径是picture/star.jpg,自己在同级目录先创键picture目录再下载一张图片命名为star.jpg HTML: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"vi…...
uniapp小程序使用webview 嵌套 vue 项目
uniapp小程序使用webview 嵌套 vue 项目 小程序中发送 <web-view :src"urlSrc" message"handleMessage"></web-view>export default {data() {return {urlSrc: "",};},onLoad(options) {// 我需要的参数比较多 所以比较臃肿// 获取…...
命令模式在金融业务中的应用及其框架实现
引言 命令模式(Command Pattern)是一种行为设计模式,它将一个请求封装为一个对象,从而使你可以用不同的请求对客户进行参数化,并且支持请求的排队和撤销操作。在金融业务中,命令模式可以用于实现交易请求、撤销操作等功能。本文将介绍命令模式在金融业务中的使用,并探讨…...
WordPress的性能优化有哪些方法?
WordPress的性能优化方法主要包括以下几个方面: 1. 使用缓存插件:缓存插件可以降低服务器负载,提高网站加载速度。常用的缓存插件有WP Rocket、WP Fastest Cache和Cache Enabler等。 2. 代码压缩和整合:通过压缩JavaScript、CSS…...
【Python基础】代码如何打包成exe可执行文件
本文收录于 《一起学Python趣味编程》专栏,从零基础开始,分享一些Python编程知识,欢迎关注,谢谢! 文章目录 一、前言二、安装PyInstaller三、使用PyInstaller打包四、验证打包是否成功五、总结 一、前言 本文介绍如何…...
Golang | Leetcode Golang题解之第227题基本计算器II
题目: 题解: func calculate(s string) (ans int) {stack : []int{}preSign : num : 0for i, ch : range s {isDigit : 0 < ch && ch < 9if isDigit {num num*10 int(ch-0)}if !isDigit && ch ! || i len(s)-1 {switch preS…...
云端美味:iCloud中食谱与餐饮计划的智能存储方案
云端美味:iCloud中食谱与餐饮计划的智能存储方案 在数字化生活管理中,我们的食谱和餐饮计划是日常饮食健康与乐趣的重要部分。iCloud提供了一个无缝的解决方案,让我们可以在所有设备上存储、同步和访问这些珍贵的信息。本文将详细介绍如何在…...
leetcode:1332. 删除回文子序列(python3解法)
难度:简单 给你一个字符串 s,它仅由字母 a 和 b 组成。每一次删除操作都可以从 s 中删除一个回文 子序列。 返回删除给定字符串中所有字符(字符串为空)的最小删除次数。 「子序列」定义:如果一个字符串可以通过删除原字…...
智慧交通的神经中枢:Transformer模型在智能交通系统中的应用
智慧交通的神经中枢:Transformer模型在智能交通系统中的应用 随着城市化进程的加快,交通拥堵、事故频发、环境污染等问题日益严重。智能交通系统(ITS)作为解决这些问题的关键技术之一,受到了广泛关注。Transformer模型…...
PCIe驱动开发(1)— 开发环境搭建
PCIe驱动开发(1)— 开发环境搭建 一、前言 二、Ubuntu安装 参考: VMware下Ubuntu18.04虚拟机的安装 三、QEMU安装 参考文章:QEMU搭建X86_64 Ubuntu虚拟系统环境 四、安装Ubuntu 下载地址:https://old-releases.ubuntu.com…...
YOLOv10改进 | Conv篇 | CVPR2024最新DynamicConv替换下采样(解决低FLOPs陷阱)
一、本文介绍 本文给大家带来的改进机制是CVPR2024的最新改进机制DynamicConv其是CVPR2024的最新改进机制,这个论文中介绍了一个名为ParameterNet的新型设计原则,它旨在在大规模视觉预训练模型中增加参数数量,同时尽量不增加浮点运算&#x…...
变革设计领域:Transformer模型在智能辅助设计中的革命性应用
变革设计领域:Transformer模型在智能辅助设计中的革命性应用 在人工智能技术的推动下,智能辅助设计(Intelligent Assisted Design, IAD)正逐渐成为现实。Transformer模型,以其卓越的处理序列数据的能力,为…...
Spring——配置说明
1. 别名 别名:如果添加了别名,也可以使用别名获取这个对象 <alias name"user" alias"user2"/> 2. Bean的配置 id:bean 的唯一标识符,也就是相当于我们学的对象名class:bean 对象所对应的…...
禁用华为小米?微软中国免费送iPhone15
微软中国将禁用华为和小米手机,要求员工必须使用iPhone。如果还没有iPhone,公司直接免费送你全新的iPhone 15! 、 这几天在微软热度最高的话题就是这个免费发iPhone,很多员工,收到公司的通知。因为,登录公司…...
nginx初理解
没有ngix时,有两台服务器,供访问 1. 现在有两台服务器上同样的路径下都放了一个, 都能通过ip加端口访问到页面 后端项目 (查看tomcat中的配置中的 server.xml,能找到项目路径) tomacat 也都有 两个…...
FreeCAD源码分析:属性系统
按照面向对象设计(Object-Oriented Design, OOD)的信条,OOD大体上包括两方面的内涵:一方面,需要将业务数据抽象成(树状/层状)数据对象,这就是所谓的数据对象模型(Data Object Model);另一方面就是职责的分摊与聚合&…...
机器学习在非洲公共卫生疾病预测中的实战应用与技术解析
1. 项目概述:当AI遇见非洲公共卫生在非洲大陆,公共卫生系统长期面临着资源不均、基础设施薄弱和疾病负担沉重的多重挑战。传统的疾病监测依赖于被动报告和人工数据分析,往往存在滞后性,当疫情警报拉响时,病毒可能已经悄…...
Java版Dify SDK:简化LLM应用开发,提升Java生态集成效率
1. 项目概述:为什么我们需要一个Java版的Dify SDK?如果你正在用Java构建一个需要集成大语言模型能力的应用,比如一个智能客服系统、一个文档分析工具,或者一个创意写作助手,你很可能听说过Dify。Dify作为一个开源的LLM…...
第十一节:私有知识大脑——为本地 Agent 构建企业级 RAG 检索增强链路
引言 承接上一章我们对 embedding 和向量检索的实战部署,本章将聚焦打造私有知识大脑,通过构建完整的 RAG(Retrieval-Augmented Generation)检索增强链路,极大拓展本地 Agent 在企业场景的应用边界。 核心理论 RAG 是实现大模型实时访问和利用外部知识的关键技术,其数…...
AI技能自进化系统:异步复盘与残差学习架构实践
1. 项目概述:一个让AI助手学会自我进化的“技能大脑”如果你也玩过各种AI助手,比如Claude、GPTs或者国内的一些大模型应用,你肯定遇到过这样的场景:你教了它一个处理Excel表格的“技能”,比如“把A列数据乘以1.1然后填…...
2026届学术党必备的六大降重复率神器横评
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 减小AIGC率的关键之处在于使文本的统计规律性以及模式化特性得以弱化。首先,别去…...
2026最权威的六大AI写作平台解析与推荐
Ai论文网站排名(开题报告、文献综述、降aigc率、降重综合对比) TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 作为智能写作工具来讲的 DeepSeek,能够高效地促进学术论文撰写效率有所提升。于选…...
三步永久保存微信聊天记录的完整指南:告别数据丢失的烦恼
三步永久保存微信聊天记录的完整指南:告别数据丢失的烦恼 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/We…...
CSS 阴影高级技巧完全指南
CSS 阴影高级技巧完全指南 引言 CSS 阴影是现代 Web 设计中常用的视觉效果,它可以为元素增添层次感和立体感。本文将深入探讨 CSS 阴影的各种类型和高级技巧。 基础语法回顾 box-shadow .box-shadow {box-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3); }text-shadow .te…...
Twitter 用户信息 API 集成指南
在这篇文章中,我们将介绍如何集成 Twitter 用户信息 API。利用这个 API,您可以获取 Twitter 用户的详细信息。只需输入 Twitter 用户的用户名,就能够输出该用户的 Twitter 主页信息。 环境准备 要使用此 API,您需要在 Twitter 用…...
思源宋体7种字重免费商用字体:从零开始打造专业中文排版系统
思源宋体7种字重免费商用字体:从零开始打造专业中文排版系统 【免费下载链接】source-han-serif-ttf Source Han Serif TTF 项目地址: https://gitcode.com/gh_mirrors/so/source-han-serif-ttf 还在为中文排版设计而烦恼吗?想要一款既专业又完全…...
