亚马逊Amazon Lambda开发ChatGPT-4o应用教程

ChatGPT 4o是Open AI最新一代的AI语言模型,可以实时对音频、视觉和文本进行推理,并且能够处理50种不同的语言,同时提高了速度和质量。亚马逊云科技目前已经支持这款大模型,本文就来带大家一起来了解下亚马逊Amazon Lambda开发ChatGPT-4o应用教程,仅供参考。

本文涉及到的亚马逊云服务:

1、Amazon Lambda

Amazon Lambda是一种无服务器计算服务,无需管理服务器、自动扩展应用程序,通过毫秒计算优化成本,每月免费提供100万个请求,永久免费使用。

Amazon Lambda

2、Amazon S3

Amazon S3是一项对象存储服务,在可扩展性、数据可用性、安全性和能效方面业界领先。免费套餐包括11个9的数据持久性、20000个Get请求、5GB标准存储、2000个PUT/COPY/POST或LIST请求、100 GB的数据传出量,免费试用12个月。

Amazon S3

3、Amazon API Gateway

Amazon API Gateway是一种完全托管的服务,可以帮助开发人员轻松创建、发布、维护、监控和保护任意规模的API。目前提供免费试用服务,可免费接收100万次API调用,使用时长为12个月。

Amazon API Gateway

新用户注册亚马逊云科技账户,即可免费使用以上云服务。

点击试用:亚马逊免费云服务

相关推荐:《如何注册亚马逊AWS账号

一、创建Amazon Lambda

1、进入亚马逊云科技官网,注册并登录账号。

2、创建一个Amazon Lambda函数。

进入控制台,找到计算>Amazon Lambda,点击进入。详情可以参考:《AWS Lambda创建具体教程

创建Amazon Lambda

3、为Amazon Lambda函数起一个名字,并且我们规定使用的开发语言和版本,最后为Lambda分配一个调用亚马逊云科技平台上其他服务(SNS,Bedrock,S3等)的权限。本文配置如下:

  • Amazon Lambda函数名称:LambdaName
  • 编程语言和版本:Python3.10

创建Amazon Lambda

4、为AWS Lambda函数创建前端调用的API端点

点击“Enable Function URL”,在Auth Type选择None。由于本文需要通过前端页面访问后端,所以开启跨源资源共享CORS。

创建Amazon Lambda

注:在实际操作中,建议用户需要通过API Gateway在请求头添加API Key验证用户请求,提升应用安全。

在CORS配置中,如下图添加如下响应头。

{

"Access-Control-Allow-Origin": "*",

"Access-Control-Allow-Headers": "Content-Type",

"Access-Control-Allow-Methods": "GET, POST, OPTIONS"


}

创建Amazon Lambda

5、在代码依赖中添加OpenAI SDK。

在本地创建一个文件夹

mkdir python
cd python

安装OpenAI库

pip install openai -t .

将依赖打包成zip

cd ..
zip -r openai-lambda-package.zip python

6、打包好后,将依赖上传添加到AWS Lambda中,Lambda通过Layer管理、上传代码依赖

点击Amazon Lambda的Layer功能并创建一个Layer。

创建Amazon Lambda

上传依赖并配置Layer

创建Amazon Lambda

创建成功后,将包含依赖的layer添加到AWS Lambda函数中。

创建Amazon Lambda

二、搭建亚马逊云科技的GPT4o应用

1、将标准的OpenAI ChatGPT-4o的API代码,复制到Amazon Lamda中。

标准API示例代码如下:

import requests
import json
import os

openai_api_key = # put yout api key here

if openai_api_key is None:
raise ValueError("OpenAI API key is not set in environment variables.")

url = "https://api.openai.com/v1/chat/completions"

headers = {
"Content-Type": "application/json",
"Authorization": f"Bearer {openai_api_key}"
}

data = {
"model": "gpt-4o",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "Hello!"
}
]
}

response = requests.post(url, headers=headers, json=data)

# Check if the request was successful
if response.status_code == 200:
print("Response from OpenAI:", response.json())
print('\n')
print(response.json()['choices'][0]['message']['content'])
else:
print("Error:", response.status_code, response.text)

2、复制代码到Lambda函数中,首先从响应体中提取用户前端输入,存到定义的变量中。同时,将OpenAI API调用代码复制到“TODO implement”中,最后定义响应前端的API响应格式。

import json

def lambda_handler(event, context):
input_text = event['body'] #此处从请求体中提取用户输入

# TODO implement #复制OpenAI API代码到本行

return {
'statusCode': 200,
'body': json.dumps('Hello from Lambda!')
} #此处定义响应头和响应数据

注:出于应用代码安全性的考虑,建议用户不要把OpenAI API示例代码中的openai_api_key存放到代码中。用户可以使用亚马逊云科技的密码管理服务Amazon Secret Manager来储存、管理所有的密码、秘钥。

Amazon Secret Manager的调用代码如下:

class GetSecretWrapper:
def __init__(self, secretsmanager_client):
self.client = secretsmanager_client

def get_secret(self, secret_name):
"""
Retrieve individual secrets from AWS Secrets Manager using the get_secret_value API.
This function assumes the stack mentioned in the source code README has been successfully deployed.
This stack includes 7 secrets, all of which have names beginning with "mySecret".
:param secret_name: The name of the secret fetched.
:type secret_name: str
"""
try:
get_secret_value_response = self.client.get_secret_value(
SecretId=secret_name #此处换成大家Secret Manager的名字
)
logging.info("Secret retrieved successfully.")
return get_secret_value_response["SecretString"]
except self.client.exceptions.ResourceNotFoundException:
msg = f"The requested secret {secret_name} was not found."
logger.info(msg)
return msg
except Exception as e:
logger.error(f"An unknown error occurred: {str(e)}.")
raise

3、这样,用户在AWS Lambda的Function URL页面就可以获取API的URL,将URL复制到前端JS代码中,就可以搭建出基于亚马逊云科技的GPT4o应用了。

搭建亚马逊云科技的GPT4o应用

相关推荐:

亚马逊Amazon S3+Amazon Lambda实时转录与翻译教程

使用亚马逊Amazon Bedrock+DeepSeek轻松搭建知识库

使用教程

阿里云结合MySQL的MCP轻松查询和管理数据教程

2025-5-16 10:43:54

行业动态

谷歌宣布开源最新模型Gemma-3 号称能媲美DeepSeek

2025-3-13 9:56:15

相关推荐