Esta es una capa de lambda de AWS que proporciona las dependencias para el paquete OpenAI que le permite desarrollar fácilmente los servicios de OpenAI sin servidor, reduciendo en gran medida el precio y eliminando la complejidad de administrar las dependencias de OpenAI usted mismo.
Esta es una zip de capa preconstruida que puede implementar fácilmente en AWS Lambda a través de la consola de administración o el AWS CLI:
OPERAI 0.27.4 (Python 3.7)
Operai 0.27.4 (Python 3.8)
Openai 0.27.4 (Python 3.9)
Puede construir la capa OpenAI usted mismo (requiere Docker) y obtener la última versión y personalizar la versión de Python para la que está construyendo:
$ cd openai-aws-lambda-layer
$ ./build/build.sh
# or specify Python version
$ ./build/build.sh 3.9Este es un ejemplo que funcionaría para las URL de la función Lambda o la puerta de enlace API, asegúrese de habilitar uno de ellos antes de implementar su función. También se recomienda aumentar el valor de tiempo de espera a un mínimo de 30 segundos en la configuración general porque OpenAI no es rápido (todavía). Después de crear la capa usando el archivo zip aquí o el que acaba de construir, copie y pegue el siguiente ejemplo en el editor de código Lambda:
import openai
import json
import datetime
def query_completion ( prompt : str , engine : str = 'gpt-3.5-turbo' , temperature : float = 0.2 , max_tokens : int = 1500 , top_p : int = 1 , frequency_penalty : float = 0.2 , presence_penalty : float = 0 ) -> object :
"""
Function for querying GPT-3.5 Turbo.
"""
estimated_prompt_tokens = int ( len ( prompt . split ()) * 1.6 )
estimated_answer_tokens = 2049 - estimated_prompt_tokens
response = openai . ChatCompletion . create (
model = engine ,
messages = [{ "role" : "user" , "content" : prompt }],
temperature = temperature ,
max_tokens = min ( 4096 - estimated_prompt_tokens - 150 , max_tokens ),
top_p = top_p ,
frequency_penalty = frequency_penalty ,
presence_penalty = presence_penalty
)
return response
def lambda_handler ( event , context ):
'''Provide an event that contains the following keys:
- prompt: text of an open ai prompt
'''
openai . api_key = "YOUR_KEY_HERE"
print ( "Init:" )
print ( datetime . datetime . now ())
print ( "Event:" )
print ( event )
body = json . loads ( event [ 'body' ])
prompt = body [ 'prompt' ]
max_tokens = 1500
response = query_completion ( prompt )
response_text = response [ 'choices' ][ 0 ][ 'message' ][ 'content' ]. strip ()
response = {
"statusCode" : 200 ,
"headers" : {},
"body" : response_text
}
return responseAsegúrate de no olvidar poner tu propia clave OpenAI. Una vez que se implementa la función, puede probarla haciendo una solicitud de curl como la siguiente (reemplace la URL con su propia URL de la función):
$ curl --request POST ' https://your.lambda-url.us-west-1.on.aws/ ' --header ' Content-Type: application/json ' --data-raw ' {"prompt": "Generate a paragraph about if deploying OpenAI on AWS Lambda makes sense"} 'Aquí hay una respuesta:
Implementar OpenAI en AWS Lambda puede ser un movimiento inteligente para las empresas que buscan aprovechar el poder de la inteligencia artificial sin invertir en hardware o infraestructura costosos. AWS Lambda es una plataforma informática sin servidor que permite a los desarrolladores ejecutar código sin administrar servidores. Esto significa que las empresas pueden implementar fácilmente modelos OpenAI en AWS Lambda y escalar o bajar según sea necesario, sin preocuparse por el mantenimiento del servidor o la planificación de la capacidad. Además, AWS Lambda ofrece precios de pago por uso, lo que significa que las empresas solo pagan los recursos informáticos que usan, lo que lo convierte en una solución rentable para implementar modelos OpenAI. En general, la implementación de OpenAI en AWS Lambda puede ayudar a las empresas a racionalizar sus iniciativas de IA y lograr un tiempo de comercialización más rápido con una inversión mínima.