Il s'agit d'une couche Lambda AWS fournissant les dépendances du package OpenAI qui vous permet de développer facilement les services OpenAI sans serveur, réduisant considérablement les prix et supprimant la complexité de la gestion des dépendances OpenAI vous-même.
Il s'agit d'un zip de couche pré-construit que vous pouvez facilement déployer sur AWS Lambda via la console de gestion ou la CLI AWS:
OpenAI 0.27.4 (Python 3.7)
OpenAI 0.27.4 (Python 3.8)
OpenAI 0.27.4 (Python 3.9)
Vous pouvez créer vous-même la couche Openai (nécessite Docker) et obtenir la dernière version et personnaliser la version Python pour laquelle vous construisez:
$ cd openai-aws-lambda-layer
$ ./build/build.sh
# or specify Python version
$ ./build/build.sh 3.9Ceci est un exemple qui fonctionnerait pour les URL de la fonction lambda ou la passerelle API, assurez-vous d'activer l'un d'eux avant de déployer votre fonction. Il est également recommandé d'augmenter la valeur de délai d'expiration à un minimum de 30 secondes en configuration générale car OpenAI n'est pas (encore) rapide. Après avoir créé le calque à l'aide du fichier zip ici ou celui que vous venez de construire, copiez et collez l'exemple ci-dessous dans l'éditeur de code 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 responseAssurez-vous de ne pas oublier de mettre votre propre clé Openai. Une fois la fonction déployée, vous pouvez la tester en faisant une demande de boucle comme celle ci-dessous (remplacer l'URL par votre propre URL de fonction):
$ 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"} 'Voici une réponse:
Le déploiement d'Openai sur AWS Lambda peut être une décision intelligente pour les entreprises qui cherchent à tirer parti de la puissance de l'intelligence artificielle sans investir dans un matériel ou une infrastructure coûteux. AWS Lambda est une plate-forme informatique sans serveur qui permet aux développeurs d'exécuter du code sans gérer les serveurs. Cela signifie que les entreprises peuvent facilement déployer des modèles OpenAI sur AWS Lambda et évoluer vers le haut ou vers le bas au besoin, sans se soucier de la maintenance du serveur ou de la planification des capacités. De plus, AWS Lambda propose des prix à rémunération, ce qui signifie que les entreprises ne paient que les ressources informatiques qu'ils utilisent, ce qui en fait une solution rentable pour le déploiement de modèles OpenAI. Dans l'ensemble, le déploiement d'Openai sur AWS Lambda peut aider les entreprises à rationaliser leurs initiatives d'IA et à réaliser un délai de marché plus rapide avec un investissement minimal.