

المولد التحتية للبنية التحتية للذكاء الاصطناعي.

aiac هي أداة لمكتبة وخط الأوامر لإنشاء قوالب IAC (البنية التحتية كرمز) ، والتكوينات ، والمرافق ، والاستعلامات ، والمزيد عبر مقدمي LLM مثل Openai و Amazon Bedrock و Ollama.
يتيح لك CLI أن تطلب من نموذج لإنشاء قوالب لسيناريوهات مختلفة (على سبيل المثال "Get Terraform for AWS EC2"). ويتألف من طلب مناسب للمزود المحدد ، ويخزن الرمز الناتج إلى ملف ، و/أو يطبعه إلى الإخراج القياسي.
يمكن للمستخدمين تحديد "الخلفية" المتعددة التي تستهدف مزودي وبيئات مختلفة LLM باستخدام ملف تكوين بسيط.
aiac terraform for a highly available eksaiac pulumi golang for an s3 with sns notificationaiac cloudformation for a neptundbaiac dockerfile for a secured nginxaiac k8s manifest for a mongodb deploymentaiac jenkins pipeline for building nodejsaiac github action that plans and applies terraform and sends a slack notificationaiac opa policy that enforces readiness probe at k8s deploymentsaiac python code that scans all open ports in my networkaiac bash script that kills all active terminal sessionsaiac kubectl that gets ExternalIPs of all nodesaiac awscli that lists instances with public IP address and Nameaiac mongo query that aggregates all documents by created dateaiac elastic query that applies a condition on a value greater than some value in aggregationaiac sql query that counts the appearances of each row in one table in another table based on an id column قبل تثبيت/تشغيل aiac ، قد تحتاج إلى تكوين مقدمي خدمات LLM أو جمع بعض المعلومات.
بالنسبة لـ Openai ، ستحتاج إلى مفتاح API حتى يعمل aiac . ارجع إلى نموذج تسعير Openai لمزيد من المعلومات. إذا كنت لا تستخدم واجهة برمجة التطبيقات التي تستضيفها Openai (على سبيل المثال ، فقد تستخدم Azure Openai) ، فستحتاج أيضًا إلى توفير نقطة نهاية عنوان UPI.
بالنسبة لـ Amazon Bedrock ، ستحتاج إلى حساب AWS مع تمكين الأساس ، والوصول إلى النماذج ذات الصلة. ارجع إلى وثائق الأساس لمزيد من المعلومات.
بالنسبة إلى Ollama ، تحتاج فقط إلى عنوان URL لخادم Ollama API المحلي ، بما في ذلك بادئة مسار /API. هذا الإعدادات الافتراضية إلى http: // localhost: 11434/API. لا يوفر Ollama آلية مصادقة ، ولكن قد يكون المرء في مكانه في حالة استخدام خادم وكيل. هذا السيناريو غير مدعوم حاليا من قبل aiac .
عبر brew :
brew tap gofireflyio/aiac https://github.com/gofireflyio/aiac
brew install aiac
باستخدام docker :
docker pull ghcr.io/gofireflyio/aiac
باستخدام go install :
go install github.com/gofireflyio/aiac/v5@latest
بدلاً من ذلك ، استنساخ المستودع والبناء من المصدر:
git clone https://github.com/gofireflyio/aiac.git
go build
يتوفر aiac أيضًا في مستودع مستخدم Arch Linux (AUR) باعتباره AIAC (الذي يجمع من المصدر) و AIAC-BIN (الذي يقوم بتنزيل مجمع قابل للتنفيذ).
يتم تكوين aiac عبر ملف تكوين TOML. ما لم يتم توفير مسار معين ، يبحث aiac عن ملف تكوين في دليل المستخدم XDG_CONFIG_HOME ، وتحديداً ${XDG_CONFIG_HOME}/aiac/aiac.toml . على أنظمة التشغيل التي تشبه UNIX ، سيؤدي ذلك إلى "~/.config/AIAC/AIAC.Toml". إذا كنت ترغب في استخدام مسار مختلف ، فوفر علامة --config أو -c مع مسار الملف.
يحدد ملف التكوين واحدًا أو أكثر من الخلفية المسمى. يحتوي كل الواجهة الخلفية على نوع يحدد موفر LLM (على سبيل المثال "Openai" ، "Bedrock" ، "Ollama") ، وإعدادات مختلفة ذات صلة بهذا المزود. يمكن تهيئة العديد من المقاطع الخلفية لنفس موفر LLM ، على سبيل المثال لبيئات "التدريج" و "الإنتاج".
إليك ملف تكوين مثال:
default_backend = " official_openai " # Default backend when one is not selected
[ backends . official_openai ]
type = " openai "
api_key = " API KEY "
# Or
# api_key = "$OPENAI_API_KEY"
default_model = " gpt-4o " # Default model to use for this backend
[ backends . azure_openai ]
type = " openai "
url = " https://tenant.openai.azure.com/openai/deployments/test "
api_key = " API KEY "
api_version = " 2023-05-15 " # Optional
auth_header = " api-key " # Default is "Authorization"
extra_headers = { X-Header-1 = " one " , X-Header-2 = " two " }
[ backends . aws_staging ]
type = " bedrock "
aws_profile = " staging "
aws_region = " eu-west-2 "
[ backends . aws_prod ]
type = " bedrock "
aws_profile = " production "
aws_region = " us-east-1 "
default_model = " amazon.titan-text-express-v1 "
[ backends . localhost ]
type = " ollama "
url = " http://localhost:11434/api " # This is the defaultملحوظات:
default_model ). إذا لم يتم توفيرها ، فإن المكالمات التي لا تحدد نموذجًا ستفشل.auth_header . هذا الإعدادات الافتراضية إلى "التفويض" ، ولكن Azure Openai يستخدم "api-key" بدلاً من ذلك. عندما يكون الرأس إما "تفويض" أو "تفويض بالوكالة" ، فإن قيمة الرأس للطلبات ستكون "Bearer API_Key". إذا كان أي شيء آخر ، فسيكون ببساطة "api_key".extra_headers . بمجرد إنشاء ملف التكوين ، يمكنك البدء في إنشاء رمز وتحتاج فقط إلى الرجوع إلى اسم الواجهة الخلفية. يمكنك استخدام aiac من سطر الأوامر ، أو كمكتبة GO.
قبل البدء في إنشاء التعليمات البرمجية ، يمكنك سرد جميع النماذج المتوفرة في الخلفية:
aiac -b aws_prod --list-models
سيؤدي هذا إلى إرجاع قائمة بجميع النماذج المتاحة. لاحظ أنه بناءً على مزود LLM ، قد يسرد هذا النماذج التي لا يمكن الوصول إليها أو تمكينها للحساب المحدد.
بشكل افتراضي ، يقوم AIAC بطباعة الرمز المستخرج إلى الإخراج القياسي ويفتح قشرة تفاعلية تسمح بالتحدث مع النموذج ، وإعادة إعادة إعادة الاحتياجات ، وحفظ الإخراج إلى الملفات ، ونسخ التعليمات البرمجية إلى الحافظة ، والمزيد:
aiac terraform for AWS EC2
سيستخدم هذا الواجهة الخلفية الافتراضية في ملف التكوين والنموذج الافتراضي لهذا الواجهة الخلفية ، على افتراض أنها محددة بالفعل. لاستخدام الواجهة الخلفية المحددة ، قدم علم --backend أو -b :
aiac -b aws_prod terraform for AWS EC2
لاستخدام نموذج محدد ، قدم علامة --model أو -m :
aiac -m gpt-4-turbo terraform for AWS EC2
يمكنك أن تطلب من aiac حفظ الرمز الناتج إلى ملف معين:
aiac terraform for eks --output-file=eks.tf
يمكنك استخدام علامة لحفظ الإخراج الكامل أيضًا:
aiac terraform for eks --output-file=eks.tf --readme-file=eks.md
إذا كنت تفضل طباعة AIAC المخرجات الكاملة إلى الإخراج القياسي بدلاً من الكود المستخرج ، فاستخدم علامة -f أو --full :
aiac terraform for eks -f
يمكنك استخدام AIAC في الوضع غير التفاعلي ، ما عليك سوى طباعة الكود الذي تم إنشاؤه إلى الإخراج القياسي ، وحفظه اختياريًا للملفات مع الأعلام أعلاه ، من خلال توفير العلم -q أو --quiet :
aiac terraform for eks -q
في الوضع الهادئ ، يمكنك أيضًا إرسال الرمز الناتج إلى الحافظة من خلال توفير علامة --clipboard :
aiac terraform for eks -q --clipboard
لاحظ أن AIAC لن تخرج في هذه الحالة حتى تتغير محتويات الحافظة. هذا بسبب ميكانيكا الحافظة.
تنطبق جميع التعليمات نفسها ، باستثناء تنفيذ صورة docker :
docker run
-it
-v ~/.config/aiac/aiac.toml:~/.config/aiac/aiac.toml
ghcr.io/gofireflyio/aiac terraform for ec2
يمكنك استخدام aiac كمكتبة GO:
package main
import (
"context"
"log"
"os"
"github.com/gofireflyio/aiac/v5/libaiac"
)
func main () {
aiac , err := libaiac . New () // Will load default configuration path.
// You can also do libaiac.New("/path/to/aiac.toml")
if err != nil {
log . Fatalf ( "Failed creating aiac object: %s" , err )
}
ctx := context . TODO ()
models , err := aiac . ListModels ( ctx , "backend name" )
if err != nil {
log . Fatalf ( "Failed listing models: %s" , err )
}
chat , err := aiac . Chat ( ctx , "backend name" , "model name" )
if err != nil {
log . Fatalf ( "Failed starting chat: %s" , err )
}
res , err = chat . Send ( ctx , "generate terraform for eks" )
res , err = chat . Send ( ctx , "region must be eu-central-1" )
} قدم الإصدار 5.0.0 تغييرًا كبيرًا في aiac API في كل من نماذج سطر الأوامر ونماذج المكتبة ، وفقًا لتعليقات المجتمع.
قبل V5 ، لم يكن هناك مفهوم لملف التكوين أو التراجع. كان على المستخدمين تقديم جميع المعلومات اللازمة للاتصال بمزود LLM معين عبر أعلام سطر الأوامر أو متغيرات البيئة ، وسمحت المكتبة بإنشاء كائن "عميل" يمكنه التحدث فقط مع موفر LLM واحد.
يتم الآن تكوين الصياغة الخلفية فقط عبر ملف التكوين. ارجع إلى قسم التكوين للحصول على التعليمات. لا يتم قبول الأعلام الخاصة بالمزود الخاص مثل- --api-key ، --aws-profile ، وما إلى ذلك (ومتغيرات البيئة الخاصة بها ، إن وجدت).
منذ V5 ، تتم تسمية الخلفية أيضا. في السابق ، أشارت علامات --backend و -b إلى اسم مزود LLM (على سبيل المثال "Openai" ، "Bedrock" ، "Ollama"). يشيرون الآن إلى أي اسم قمت بتعريفه في ملف التكوين:
[ backends . my_local_llm ]
type = " ollama "
url = " http://localhost:11434/api " هنا نقوم بتكوين خلفية Ollama تدعى "my_local_llm". عندما ترغب في إنشاء رمز باستخدام هذه الواجهة الخلفية ، ستستخدم -b my_local_llm بدلاً من -b ollama ، حيث قد توجد العديد من الخلفية لنفس مزود LLM.
قبل V5 ، تم تقسيم سطر الأوامر إلى ثلاثة مخصصات فرعية: get ، list-models version . بسبب هذه الطبيعة الهرمية لـ CLI ، قد لا يتم قبول الأعلام إذا تم تقديمها في "الموقع الخاطئ". على سبيل المثال ، يجب تقديم علامة --model بعد كلمة "GET" ، وإلا فلن يتم قبولها. في V5 ، لا توجد مواقف فرعية ، لذلك لم يعد موضع الأعلام مهمًا.
يتم استبدال القالب الفرعي list-models --list-models القائمة ، ويتم استبدال القالب version --version بالعلم.
قبل V5:
aiac -b ollama list-models
منذ V5:
aiac -b my_local_llm --list-models
في الإصدارات السابقة ، كانت كلمة "GET" في الواقع هيئة فرعية وليست جزءًا من المطالبة المرسلة إلى مزود LLM. منذ V5 ، لا يوجد شيء فرعي "الحصول على" ، لذلك لم تعد بحاجة إلى إضافة هذه الكلمة إلى مطالبك.
قبل V5:
aiac get terraform for S3 bucket
منذ V5:
aiac terraform for S3 bucket
ومع ذلك ، فإن إضافة كلمة "GET" أو "إنشاء" لن تؤذي ، لأن V5 سوف يزيلها ببساطة إذا تم توفيرها.
قبل V5 ، تم ترميز النماذج لكل مزود LLM في كل تطبيق خلفي ، وكان لكل مزود نموذج افتراضي متشددين. هذا الحد بشكل كبير من قابلية استخدام المشروع ، وتطلب منا تحديث aiac كلما تمت إضافة نماذج جديدة أو إهمالها. من ناحية أخرى ، يمكننا تقديم معلومات إضافية حول كل نموذج ، مثل أطوال السياق ونوعه ، حيث استخرجناها يدويًا من وثائق المزود.
منذ V5 ، لم تعد aiac ترميز أي نماذج ، بما في ذلك النماذج الافتراضية. لن يحاول التحقق من النموذج الذي تحدده بالفعل. سوف تتصل --list-models الآن مباشرة واجهة برمجة تطبيقات الخلفية المختارة للحصول على قائمة بالموديلات المدعومة. إعداد نموذج عند إنشاء رمز ببساطة يرسل اسمه إلى API AS-IS. أيضًا ، بدلاً من ترميز نموذج افتراضي لكل الواجهة الخلفية ، يمكن للمستخدمين تحديد النماذج الافتراضية الخاصة بهم في ملف التكوين:
[ backends . my_local_llm ]
type = " ollama "
url = " http://localhost:11434/api "
default_model = " mistral:latest " قبل V5 ، دعمت aiac كلا نماذج الانتهاء ونماذج الدردشة. منذ V5 ، فإنه يدعم نماذج الدردشة فقط. نظرًا لأن أيا من واجهات برمجة تطبيقات موفر LLM ، لاحظ فعليًا ما إذا كان النموذج هو نموذج إكمال أو نموذج دردشة (أو حتى نموذج صورة أو فيديو) ، قد يسرد --list-models النماذج التي لا يمكن استخدامها فعليًا ، ومحاولة الاستخدام سيؤدي ذلك إلى إرجاع خطأ من واجهة برمجة تطبيقات المزود. السبب في أننا قررنا إسقاط الدعم لنماذج الإكمال هو أنها تتطلب تحديد مبلغ أقصى من الرموز لتوليد واجهة برمجة التطبيقات (على الأقل في Openai) ، والتي لم يعد بإمكاننا القيام بها دون معرفة طول السياق. نماذج الدردشة ليست أكثر فائدة فحسب ، بل ليس لديها هذا القيد.
ستتضمن معظم واجهات برمجة تطبيقات موفر LLM ، عند إرجاع رد على موجه ، "سببًا" لسبب انتهاء الاستجابة في المكان الذي حدث فيه. بشكل عام ، يجب أن تنتهي الاستجابة لأن النموذج قد انتهى من إنشاء استجابة ، ولكن في بعض الأحيان قد يتم اقتطاع الاستجابة بسبب طول سياق النموذج أو استخدام رمز المستخدم. عندما لم "تتوقف الاستجابة لأنها انتهت من الجيل ، يُقال إن الاستجابة" مقطوعة ". قبل V5 ، إذا عادت واجهة برمجة التطبيقات التي تم اقتطاعها ، أعادت aiac خطأ. منذ V5 ، لم يعد هناك خطأ ، حيث يبدو أن بعض مقدمي الخدمات لا يعيدون سبب توقف دقيق. بدلاً من ذلك ، تقوم المكتبة بإرجاع سبب التوقف كجزء من إخراجها للمستخدمين لتحديد كيفية المتابعة.
موجه سطر الأوامر:
aiac dockerfile for nodejs with comments
الإخراج:
FROM node:latest
# Create app directory
WORKDIR /usr/src/app
# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./
RUN npm install
# If you are building your code for production
# RUN npm ci --only=production
# Bundle app source
COPY . .
EXPOSE 8080
CMD [ "node" , "index.js" ]معظم الأخطاء التي من المحتمل أن تواجهها تأتي من واجهة برمجة تطبيقات موفر LLM أو Openai أو Amazon Bedrock. بعض الأخطاء الشائعة التي قد تواجهها هي:
"[غير كافية _quota] لقد تجاوزت حصتك الحالية ، يرجى التحقق من خطتك وتفاصيل الفواتير": كما هو موضح في قسم التعليمات ، Openai هو واجهة برمجة تطبيقات مدفوعة مع مبلغ معين من الاعتمادات المجانية المقدمة. هذا الخطأ يعني أنك تجاوزت حصتك ، سواء كانت مجانية أو مدفوعة. ستحتاج إلى أن تتصدر الاستمرار في الاستخدام.
"[الرموز] الحد من معدل الوصول ...": يستخدم Openai API الحد من معدل كما هو موضح هنا. يقوم aiac فقط بتنفيذ الطلبات الفردية ولا يمكنه حل أو منع حدود المعدل هذه. إذا كنت تستخدم aiac بشكل برمجي ، فسيتعين عليك تنفيذ اختناق نفسك. انظر هنا للحصول على نصائح.
يتم نشر هذا الرمز بموجب شروط ترخيص Apache 2.0.