هذه طبقة AWS Lambda توفر التبعيات لحزمة Openai التي تتيح لك تطوير خدمات Openai بدون خادم بسهولة ، مما يقلل من السعر بشكل كبير وإزالة تعقيد إدارة تبعيات Openai بنفسك.
هذه عبارة عن ZIP طبقة مسبقة ما يمكنك نشرها بسهولة على AWS Lambda من خلال وحدة التحكم الإدارية أو AWS CLI:
Openai 0.27.4 (Python 3.7)
Openai 0.27.4 (Python 3.8)
Openai 0.27.4 (Python 3.9)
يمكنك إنشاء طبقة Openai بنفسك (تتطلب Docker) والحصول على أحدث إصدار وتخصيص إصدار Python الذي تقوم ببناءه من أجله:
$ cd openai-aws-lambda-layer
$ ./build/build.sh
# or specify Python version
$ ./build/build.sh 3.9هذا مثال من شأنه أن يعمل مع بوابة Lambda Function URL أو API ، تأكد من تمكين واحدة منها قبل نشر وظيفتك. يوصى أيضًا بزيادة قيمة المهلة إلى 30 ثانية على الأقل في التكوين العام لأن Openai ليس سريعًا (حتى الآن). بعد إنشاء الطبقة باستخدام ملف zip هنا أو تلك التي قمت بإنشائها للتو ، نسخ ولصق المثال أدناه في محرر رمز 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 responseتأكد من أنك لا تنسى وضع مفتاح Openai الخاص بك. بمجرد نشر الوظيفة ، يمكنك اختبارها عن طريق إجراء طلب حليقة مثل الطلب أدناه (استبدل عنوان URL بعنوان URL الخاص بك):
$ 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"} 'هنا رد:
يمكن أن يكون نشر Openai على AWS Lambda خطوة ذكية للشركات التي تتطلع إلى الاستفادة من قوة الذكاء الاصطناعي دون الاستثمار في الأجهزة أو البنية التحتية باهظة الثمن. AWS Lambda هو منصة حوسبة بدون خادم تتيح للمطورين تشغيل التعليمات البرمجية دون إدارة الخوادم. هذا يعني أنه يمكن للشركات بسهولة نشر نماذج Openai على AWS Lambda وتوسيع نطاق أو لأسفل حسب الحاجة ، دون القلق بشأن صيانة الخادم أو تخطيط السعة. بالإضافة إلى ذلك ، تقدم AWS Lambda أسعار الدفع لكل استخدام ، مما يعني أن الشركات تدفع فقط مقابل موارد الحوسبة التي يستخدمونها ، مما يجعلها حلاً فعالًا من حيث التكلفة لنشر نماذج OpenAI. بشكل عام ، يمكن أن يؤدي نشر Openai على AWS Lambda إلى مساعدة الشركات على تبسيط مبادرات الذكاء الاصطناعي وتحقيق وقت أسرع في السوق مع الحد الأدنى من الاستثمار.