يعد هذا المشروع بمثابة خط أساس للمطورين لتوسيع حالات الاستخدام الخاصة بهم عبر نماذج اللغات الكبيرة المتنوعة (LLMs) باستخدام وكلاء Amazon Bedrock. الهدف هو عرض إمكانية الاستفادة من نماذج متعددة على Bedrock لإنشاء استجابات متسلسلة تتكيف مع سيناريوهات متنوعة. بالإضافة إلى إنشاء مخرجات مستندة إلى النص، يدعم هذا التطبيق أيضًا إنشاء الصور وفحصها باستخدام إنشاء الصور ونماذج تحويل النص إلى صورة. تعمل هذه الوظيفة الموسعة على تحسين تنوع التطبيق، مما يجعله مناسبًا لحالات الاستخدام الأكثر إبداعًا وبصريًا.
بالنسبة لأولئك الذين يفضلون نهج البنية التحتية كرمز (IaC)، نقدم أيضًا قالب AWS CloudFormation الذي يقوم بإعداد المكونات الأساسية مثل وكيل Amazon Bedrock، وحاوية S3، ووظيفة Lambda. إذا كنت تفضل نشر هذا المشروع عبر AWS CloudFormation، فيرجى الرجوع إلى دليل ورشة العمل هنا.
وبدلاً من ذلك، سيرشدك ملف README هذا خلال العملية خطوة بخطوة لإعداد وكلاء Amazon Bedrock وتكوينهم يدويًا عبر وحدة تحكم AWS، مما يمنحك المرونة اللازمة لتجربة أحدث النماذج وإطلاق العنان لإمكانات وكلاء Bedrock بشكل كامل.
النظرة العامة عالية المستوى للحل هي كما يلي:
إعداد الوكيل والبيئة: يبدأ الحل بتكوين وكيل Amazon Bedrock، ووظيفة AWS Lambda، وحاوية Amazon S3. تضع هذه الخطوة الأساس لتفاعل النموذج ومعالجة البيانات، وإعداد النظام لتلقي ومعالجة المطالبات من تطبيق الواجهة الأمامية. المعالجة السريعة واستدلال النموذج: عند تلقي مطالبة من تطبيق الواجهة الأمامية، يقوم وكيل Bedrock بتقييم المطالبة وإرسالها، بالإضافة إلى معرف النموذج المحدد، إلى وظيفة Lambda باستخدام آلية مجموعة العمل. تعمل هذه الخطوة على تعزيز مخطط واجهة برمجة التطبيقات (API) الخاص بمجموعة العمل لمعالجة المعلمات بشكل دقيق، مما يسهل الاستدلال الفعال للنموذج استنادًا إلى موجه الإدخال. معالجة البيانات وإنشاء الاستجابة: بالنسبة للمهام التي تتضمن تحويل صورة إلى نص أو نص إلى صورة، تتفاعل وظيفة Lambda مع حاوية S3 لإجراء عمليات القراءة أو الكتابة الضرورية على الصور. تضمن هذه الخطوة المعالجة الديناميكية لمحتوى الوسائط المتعددة، والتي تبلغ ذروتها في توليد الاستجابات أو التحولات التي تمليها المطالبة الأولية.
في الأقسام التالية، سنرشدك خلال:
AWS SAM (نموذج التطبيق بدون خادم) هو إطار عمل مفتوح المصدر يساعدك على إنشاء تطبيقات بدون خادم على AWS. فهو يبسط نشر وإدارة ومراقبة الموارد بدون خادم مثل AWS Lambda وAmazon API Gateway وAmazon DynamoDB والمزيد. فيما يلي دليل شامل حول كيفية إعداد AWS SAM واستخدامه.
يعمل الإطار على تبسيط عملية إنشاء ونشر وإدارة التطبيقات بدون خادم عن طريق التخلص من تعقيدات البنية التحتية السحابية. فهو يوفر طريقة موحدة لتحديد وإدارة مواردك بدون خادم باستخدام ملف تكوين ومجموعة من الأوامر.
أنشئ مشروعًا جديدًا بدون خادم باستخدام قالب Python. في المحطة الطرفية الخاصة بك، قم بتشغيل: cd infer-models ثم قم بتشغيل بدون خادم
سيؤدي هذا إلى بدء عملية إنشاء المشروع التفاعلي لـ Serverless Framework.. ستتم مطالبتك بعدة خيارات: اختر "إنشاء تطبيق جديد بدون خادم". حدد قالب "aws-python3" وقم بتوفير "نماذج الاستدلال" كاسم لمشروعك.
سيؤدي هذا إلى إنشاء دليل جديد يسمى نماذج الاستدلال مع بنية مشروع أساسية بدون خادم وقالب بايثون.
قد تتم مطالبتك أيضًا بتسجيل الدخول/التسجيل. حدد خيار "تسجيل الدخول/التسجيل". سيؤدي هذا إلى فتح نافذة متصفح حيث يمكنك إنشاء حساب جديد أو تسجيل الدخول إذا كان لديك حساب بالفعل. بعد تسجيل الدخول أو إنشاء حساب، اختر خيار "Framework Open Source"، وهو مجاني الاستخدام.
إذا فشل نشر مكدسك، يرجى التعليق على السطر 2 من ملف serverless.yml
بعد تنفيذ الأمر بدون خادم واتباع المطالبات، سيتم إنشاء دليل جديد باسم المشروع (على سبيل المثال، نماذج الاستدلال)، والذي يحتوي على البنية المعيارية وملفات التكوين للمشروع بدون خادم.
سنقوم الآن بتثبيت البرنامج الإضافي serverless-python-requirements: يساعد البرنامج الإضافي serverless-python-requirements في إدارة تبعيات Python لمشروعك بدون خادم. تثبيته عن طريق تشغيل:
متطلبات تثبيت npm بدون خادم python —save-dev
3.) npx sls deploy
(قبل تشغيل الأمر أعلاه، يجب تثبيت محرك Docker Engine وتشغيله. يمكن العثور على مزيد من المعلومات هنا)
(سيؤدي هذا إلى حزم وظيفة AWS Lambda ونشرها)
افحص النشر داخل CloudFormation في وحدة تحكم AWS
نحن بحاجة إلى توفير أذونات الوكيل الأساسي لاستدعاء وظيفة لامدا. افتح وظيفة lambda وانتقل لأسفل لتحديد علامة التبويب "التكوين" . على اليسار، حدد الأذونات . قم بالتمرير لأسفل إلى بيانات السياسة المستندة إلى الموارد وحدد إضافة أذونات.
حدد خدمة AWS في المنتصف لبيان السياسة الخاص بك. اختر "أخرى" لخدمتك، ثم قم بوضع "السماح الوكيل" لمعرف البيان. بالنسبة للمدير، ضع bedrock.amazonaws.com .
أدخل arn:aws:bedrock:us-west-2:{aws-account-id}:agent/*
. يرجى ملاحظة أن AWS توصي بأقل الامتيازات حتى يتمكن الوكيل المسموح به فقط من استدعاء وظيفة Lambda هذه. A * في نهاية ARN يمنح أي وكيل في الحساب حق الوصول لاستدعاء Lambda. من الناحية المثالية، لن نستخدم هذا في بيئة الإنتاج. أخيرًا، بالنسبة للإجراء، حدد lambda:InvocFunction ، ثم حفظ.
للمساعدة في الاستدلال، سنقوم بزيادة وحدة المعالجة المركزية/الذاكرة في وظيفة Lambda. سنقوم أيضًا بزيادة المهلة لإتاحة الوقت الكافي للوظيفة لإكمال الاستدعاء. حدد التكوين العام على اليسار، ثم تحرير على اليمين.
قم بتغيير الذاكرة إلى 2048 ميجابايت والمهلة إلى دقيقة واحدة . قم بالتمرير لأسفل، ثم حدد حفظ.
Agents
. أدخل اسم الوكيل، مثل وكيل متعدد النماذج، ثم قم بإنشاء الوكيل. You are a research agent that interacts with various large language models. You pass the model ID and prompt from requests to large language models to create and store images. Then, the LLM will return a presigned URL to the image similar to the URL example provided. You also call LLMS for text and code generation, summarization, problem solving, text-to-sql, response comparisons and ratings. Remeber. you use other large language models for inference. Do not decide when to provide your own response, unless asked.
بعد ذلك، تأكد من التمرير إلى الأعلى وتحديد الزر "حفظ" قبل الانتقال إلى الخطوة التالية.
بعد ذلك، سوف نقوم بإضافة مجموعة عمل. قم بالتمرير لأسفل إلى Action groups
ثم حدد إضافة . استدعاء call-model
مجموعة العمل .
بالنسبة لنوع مجموعة الإجراءات، اختر تعريف باستخدام مخططات واجهة برمجة التطبيقات
في القسم التالي، سنختار وظيفة Lambda الموجودة infer-models-dev-inferModel .
بالنسبة لمخطط واجهة برمجة التطبيقات (API)، سنختار Define with in-line OpenAPI schema editor
. انسخ المخطط والصقه من الأسفل في محرر مخططات OpenAPI المضمن ، ثم حدد إضافة : (This API schema is needed so that the bedrock agent knows the format structure and parameters required for the action group to interact with the Lambda function.)
{
"openapi": "3.0.0",
"info": {
"title": "Model Inference API",
"description": "API for inferring a model with a prompt, and model ID.",
"version": "1.0.0"
},
"paths": {
"/callModel": {
"post": {
"description": "Call a model with a prompt, model ID, and an optional image",
"parameters": [
{
"name": "modelId",
"in": "query",
"description": "The ID of the model to call",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "prompt",
"in": "query",
"description": "The prompt to provide to the model",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"required": true,
"content": {
"multipart/form-data": {
"schema": {
"type": "object",
"properties": {
"modelId": {
"type": "string",
"description": "The ID of the model to call"
},
"prompt": {
"type": "string",
"description": "The prompt to provide to the model"
},
"image": {
"type": "string",
"format": "binary",
"description": "An optional image to provide to the model"
}
},
"required": ["modelId", "prompt"]
}
}
}
},
"responses": {
"200": {
"description": "Successful response",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"result": {
"type": "string",
"description": "The result of calling the model with the provided prompt and optional image"
}
}
}
}
}
}
}
}
}
}
}
Orchestration
، قم بتمكين خيار Override orchestration template defaults
. Here is an example of what a url response to access an image should look like:
URL Generated to access the image:
https://bedrock-agent-images.s3.amazonaws.com/generated_pic.png?AWSAccessKeyId=123xyz&Signature=rlF0gN%2BuaTHzuEDfELz8GOwJacA%3D&x-amz-security-token=IQoJb3JpZ2msqKr6cs7sTNRG145hKcxCUngJtRcQ%2FzsvDvt0QUSyl7xgp8yldZJu5Jg%3D%3D&Expires=1712628409
تساعد هذه المطالبة في تقديم مثال للوكيل عند تنسيق استجابة عنوان url الموقّع مسبقًا بعد إنشاء صورة في حاوية S3. بالإضافة إلى ذلك، هناك خيار لاستخدام وظيفة Lambda المحلل اللغوي المخصص لمزيد من التنسيق الدقيق.
قم بالتمرير إلى الأسفل وحدد زر Save and exit
.
بعد ذلك، تأكد من الضغط على الزر Save and exit
مرة أخرى في الجزء العلوي، ثم الزر "تحضير" في الجزء العلوي من واجهة مستخدم وكيل الاختبار على اليمين. وهذا سيسمح لنا باختبار أحدث التغييرات.
(قبل المتابعة، يرجى التأكد من تمكين جميع الطرز عبر وحدة تحكم Amazon Bedrock التي تخطط لاختبارها.)
لبدء الاختبار، قم بإعداد الوكيل من خلال العثور على زر التحضير في صفحة منشئ الوكيل
على اليمين، يجب أن ترى خيارًا لاختبار الوكيل باستخدام حقل إدخال المستخدم. فيما يلي بعض المطالبات التي يمكنك اختبارها. ومع ذلك، ننصحك بأن تصبح مبدعًا وأن تختبر أشكالًا مختلفة من المطالبات.
شيء واحد يجب ملاحظته قبل الاختبار. عندما تقوم بتحويل النص إلى صورة أو الصورة إلى نص، يشير رمز المشروع إلى نفس الملف .png بشكل ثابت. في بيئة مثالية، يمكن تكوين هذه الخطوة لتكون أكثر ديناميكية.
Use model amazon.titan-image-generator-v1 and create me an image of a woman in a boat on a river.
Use model anthropic.claude-3-haiku-20240307-v1:0 and describe to me the image that is uploaded. The model function will have the information needed to provide a response. So, dont ask about the image.
Use model stability.stable-diffusion-xl-v1. Create an image of an astronaut riding a horse in the desert.
Use model meta.llama3-70b-instruct-v1:0. You are a gifted copywriter, with special expertise in writing Google ads. You are tasked to write a persuasive and personalized Google ad based on a company name and a short description. You need to write the Headline and the content of the Ad itself. For example: Company: Upwork Description: Freelancer marketplace Headline: Upwork: Hire The Best - Trust Your Job To True Experts Ad: Connect your business to Expert professionals & agencies with specialized talent. Post a job today to access Upwork's talent pool of quality professionals & agencies. Grow your team fast. 90% of customers rehire. Trusted by 5M+ businesses. Secure payments. - Write a persuasive and personalized Google ad for the following company. Company: Click Description: SEO services
(إذا كنت ترغب في إعداد واجهة المستخدم لهذا المشروع، فانتقل إلى الخطوة 6)
ستحتاج إلى agent alias ID
، بالإضافة إلى agent ID
لهذه الخطوة. انتقل إلى وحدة تحكم إدارة Bedrock، ثم حدد الوكيل متعدد النماذج الخاص بك. انسخ Agent ID
من الجزء العلوي الأيسر من قسم Agent overview
. ثم قم بالتمرير لأسفل إلى الأسماء المستعارة وحدد إنشاء . قم بتسمية الاسم المستعار a1
، ثم قم بإنشاء الوكيل. احفظ معرف الاسم المستعار الذي تم إنشاؤه، وليس الاسم المستعار.
الآن، انتقل مرة أخرى إلى IDE الذي استخدمته لفتح المشروع.
انتقل إلى دليلstreamlit_app :
تحديث التكوين :
افتح الملف invoc_agent.py .
في السطرين 19 و20، قم بتحديث متغيرات agentId
و agentAliasId
بالقيم المناسبة، ثم احفظها.
تثبيت Streamlit (إذا لم يكن مثبتًا بالفعل):
قم بتشغيل الأمر التالي لتثبيت كافة التبعيات المطلوبة:
pip install streamlit boto3 pandas
قم بتشغيل تطبيق Streamlit :
streamlit_app
: streamlit run app.py
تذكر أنه يمكنك استخدام أي طراز متاح من Amazon Bedrock، ولا يقتصر على القائمة أعلاه. إذا لم يكن معرف النموذج مدرجًا، فيرجى الرجوع إلى أحدث النماذج (المعرفات) المتاحة على صفحة وثائق Amazon Bedrock هنا.
يمكنك الاستفادة من المشروع المقدم لضبط هذا الحل وقياسه مقابل مجموعات البيانات وحالات الاستخدام الخاصة بك. استكشف مجموعات نماذج مختلفة، وادفع حدود ما هو ممكن، وحفز الابتكار في المشهد المتطور باستمرار للذكاء الاصطناعي التوليدي.
انظر المساهمة لمزيد من المعلومات.
هذه المكتبة مرخصة بموجب ترخيص MIT-0. انظر ملف الترخيص.