aia
هي أداة مساعدة لسطر الأوامر تسهل التفاعل مع نماذج الذكاء الاصطناعي. يقوم بأتمتة إدارة المطالبات ما قبل التركيب وتنفيذ أوامر الذكاء الاصطناعي التوليدية (Gen-AI) على تلك المطالبات مع الاستفادة من حجم نافذة السياق المتزايد في LLMs الحديثة.
إنه يستفيد من جوهرة prompt_manager
لإدارة المطالبات الخاصة mods
والأدوات المساعدة sgpt
CLI. ويستخدم "ripgrep" للبحث عن الملفات السريعة. يستخدم fzf
للاختيار السريع بناءً على مصطلح البحث والمطابقة الغامضة.
أحدث تغيير : راجع سجل التغيير
مجرد معلومات... أنا أعمل في فرع
develop
للتخلص من الاعتماد على معالجات LLM الخلفية مثل mods وllm. أنا أعيد تصميم aia لاستخدام جوهرة العميل العالمي الخاصة بي والتي تسمى ai_client والتي تتيح الوصول إلى جميع النماذج وجميع مقدمي الخدمة.
aia
أوامر التوجيه المحددةllm
sgpt
plz
تثبيت الجوهرة عن طريق تنفيذ:
gem install aia
قم بتثبيت الأدوات المساعدة لسطر الأوامر عن طريق تنفيذ:
brew install mods fzf ripgrep
ستحتاج أيضًا إلى إنشاء دليل في نظام الملفات الخاص بك حيث يتم الاحتفاظ بالملفات النصية السريعة وآخر معلمات مستخدمة وملفات سجل الاستخدام.
قم بإعداد متغير بيئة النظام (envar) المسمى "AIA_PROMPTS_DIR" الذي يشير إلى دليل المطالبات الخاص بك. الافتراضي موجود في دليل HOME الخاص بك المسمى ".prompts". يشير envar "AIA_ROLES_DIR" إلى دليل الدور الخاص بك حيث لديك مطالبات تحدد الأدوار المختلفة التي تريد أن يتولىها LLM عندما يقوم بعمله. دليل الأدوار الافتراضي موجود داخل دليل المطالبات. اسمها هو "الأدوار".
قد ترغب أيضًا في تثبيت البرنامج النصي للإكمال لـ Shell الخاص بك. للحصول على نسخة من البرنامج النصي للإكمال، قم بما يلي:
aia --completion bash
تتوفر أيضًا fish
و zsh
.
يتم تنفيذ تقرير الاستخدام الذي تم الحصول عليه باستخدام -h
أو --help
كصفحة man
قياسية. يمكنك استخدام كليهما --help --verbose
of -h -v
معًا للحصول ليس فقط على صفحة الدليل aia
ولكن أيضًا للحصول على تقرير الاستخدام من أداة معالجة LLM backend
.
$ aia --help
يمكن تجاوز الإعدادات الافتراضية لتكوين aia
بواسطة متغيرات بيئة النظام (envars) باستخدام البادئة "AIA_" متبوعة باسم عنصر التكوين أيضًا بأحرف كبيرة. يمكن تجاوز جميع عناصر التكوين بهذه الطريقة بواسطة envar. ويبين الجدول التالي بعض الأمثلة.
عنصر التكوين | القيمة الافتراضية | مفتاح انفار |
---|---|---|
الخلفية | تعديل | AIA_BACKEND |
config_file | لا شيء | AIA_CONFIG_FILE |
تصحيح | خطأ شنيع | AIA_DEBUG |
يحرر | خطأ شنيع | AIA_EDIT |
إضافي | '' | AIA_EXTRA |
غامض | خطأ شنيع | AIA_FUZZY |
log_file | ~/.prompts/_prompts.log | AIA_LOG_FILE |
تخفيض السعر | حقيقي | AIA_MARKDOWN |
نموذج | gpt-4-1106-معاينة | AIA_MODEL |
out_file | خروج قياسي | AIA_OUT_FILE |
طالبات_دير | ~/.prompts | AIA_PROMPTS_DIR |
Speech_model. | تحويل النص إلى كلام-1 | AIA_SPEECH_MODEL |
مطول | خطأ شنيع | AIA_VERBOSE |
صوت | سبيكة | AIA_VOICE |
راجع تجزئة @options
في ملف cli.rb
للحصول على القائمة الكاملة. هناك بعض عناصر التكوين التي ليس من الضروري استخدامها كتجاوز envar. على سبيل المثال، إذا قمت بتعيين export AIA_DUMP_FILE=config.yaml
، فسوف يقوم aia
بتفريغ التكوين الحالي config.yaml والخروج في كل مرة يتم تشغيله حتى تقوم في النهاية unset AIA_DUMP_FILE
بالإضافة إلى عناصر التكوين هذه لـ aia
يمكن أيضًا تعيين معلمات سطر الأوامر الاختيارية لأدوات معالجة موجه الواجهة الخلفية (mods وsgpt) باستخدام envars بالبادئة "AIA_". على سبيل المثال، سيؤدي "export AIA_TOPP=1.0" إلى تعيين خيار سطر الأوامر "--topp 1.0" لأداة mods
عند استخدامه كمعالج خلفي.
يؤدي استخدام الخيار --shell
إلى تمكين aia
من الوصول إلى بيئة shell الخاصة بجهازك من داخل نص المطالبة.
يمكن لـ aia
استبدال أي مراجع لمتغير بيئة النظام (envar) في نص المطالبة بقيمة envar. أنماط مثل
يمكن إدراج المحتوى الديناميكي في الموجه باستخدام النمط
ضع في اعتبارك القدرة على تخصيص مطالبة لنظام التشغيل المحدد الخاص بك:
As a system administration on a $(uname -v) platform what is the best way to [DO_SOMETHING]
أو قم بإدراج محتوى من ملف في دليلك الرئيسي:
Given the following constraints $(cat ~/3_laws_of_robotics.txt) determine the best way to instruct my roomba to clean my kids room.
عند استخدام خيار --shell
لبدء جلسة محادثة، يتوفر تكامل Shell في مطالبات المتابعة الخاصة بك. لنفترض أنك بدأت جلسة محادثة باستخدام قائمة "Ruby Expert" متوقعًا الدردشة حول التغييرات التي يمكن إجراؤها على فصل معين ولكنك نسيت تضمين الملف المصدر للفئة كجزء من السياق عند البدء. يمكنك إدخال هذا كمطالبة المتابعة الخاصة بك للاستمرار:
The class I want to chat about refactoring is this one: $(cat my_class.rb)
يؤدي ذلك إلى إدراج الملف المصدر للفصل بأكمله في موجه المتابعة الخاص بك. يمكنك متابعة الدردشة معك باستخدام AI Assistant لتجنب التغييرات التي تطرأ على الفصل.
يعد تضمين المحتوى الديناميكي من خلال تكامل Shell الذي يوفره خيار --shell
أمرًا مهمًا. توفر aia
أيضًا القوة الكاملة لمعالجة كود Ruby المضمن داخل النص الفوري.
يقوم خيار --erb
بتحويل الملف النصي الفوري إلى قالب ERB يعمل بكامل طاقته. يوفر بناء جملة قالب Ruby (ERB) المضمن (2024) نظرة عامة جيدة على بناء الجملة وقوة ERB.
ستقدم معظم مواقع الويب التي تحتوي على معلومات حول ERB أمثلة حول كيفية استخدام ERB لإنشاء محتوى HTML ديناميكي للتطبيقات المستندة إلى الويب. هذه حالة استخدام شائعة لـ ERB. من ناحية أخرى، يستخدم aia
ERB لإنشاء نص مطالبة ديناميكي.
في جلسة الدردشة، سواء بدأت بواسطة خيار --chat
أو ما يعادله بتوجيه داخل ملف نصي موجه، يتصرف بشكل مختلف قليلاً مع تعيينات الارتباط والمتغير المحلي. نظرًا لأن جلسة الدردشة بحكم التعريف تحتوي على مطالبات متعددة، فإن تعيين متغير محلي في موجه واحد وتوقع إتاحته في موجه لاحق لا يعمل. تحتاج إلى استخدام متغيرات الحالة لإنجاز هذه المطالبة للمطالبة بترحيل المعلومات.
نظرًا لأنه من المتوقع أيضًا أن تكون مطالبات المتابعة عبارة عن شيء واحد - جملة أو فقرة - يتم إنهاؤها بإرجاع واحد، فمن المحتمل أن يكون تعزيز ERB مفيدًا؛ ولكن قد تجد فائدة لذلك.
تمت إضافة توجيهات المعالجة النهائية إلى جوهرة prompt_manager
التي يستخدمها au
في الإصدار 0.4.1. هذه التوجيهات عبارة عن أسطر في الملف النصي للمطالبة تبدأ بـ "//" ولها هذا النمط:
//command parameters
لا توجد مسافة بين "//" والأمر.
عند دمج التوجيهات السريعة مع المعلمات السريعة وبدائل shell envar، يمكنك الحصول على بعض المطالبات التركيبية القوية.
فيما يلي مثال لتوجيه عام خالص.
//[DIRECTIVE_NAME] [DIRECTIVE_PARAMS]
عند تشغيل المطالبة، سيُطلب منك تقديم قيمة لكل معلمة. يمكنك الإجابة بـ "Shell" لاسم التوجيه و"calc 22/7" إذا كنت تريد تقديرًا تقريبيًا سيئًا لـ PI.
جرب هذا الملف الفوري:
//shell calc [FORMULA]
What does that number mean to you?
aia
أوامر التوجيه المحددة في هذا الوقت، لا يوجد لدى aia
سوى عدد قليل من التوجيهات المفصلة أدناه.
يتم استخدام التوجيه //config
داخل ملف نصي موجه لتخصيص بيئة التكوين المحددة للموجه. جميع عناصر التكوين متاحة لتغيير قيمها. يبدأ ترتيب تعيين القيمة لعنصر التكوين بالقيمة الافتراضية التي يتم استبدالها بقيمة envar التي يتم استبدالها بقيمة خيار سطر الأوامر التي يتم استبدالها بالقيمة من ملف التكوين.
يعد //config
الطريقة الأخيرة والأخيرة لتغيير قيمة عنصر التكوين لموجه محدد.
يتم التعامل مع خيارات التبديل مثل القيم المنطقية. وهم إما true
أو false
. ينتهي اسمهم في سياق توجيه //config
دائمًا بـ "؟" حرف - علامة استفهام.
لتعيين قيمة المحول باستخدام ``//config for example
--terse` أو `--chat` لهذا:
//config chat? = true
//config terse? = true
يحتوي عنصر التكوين مثل --out_file
أو --model
على قيمة مرتبطة في سطر الأوامر. لتعيين هذه القيمة باستخدام التوجيه //config
، قم بذلك على النحو التالي:
//config model = gpt-3.5-turbo
//config out_file = temp.md
//config backend = mods
راجع للشغل: "=" هي خيارات تمامًا. تم تجاهله فعليًا كما هو ":=" إذا اخترت ذلك كمشغل المهمة الخاص بك. كما أن عدد المسافات بين العنصر والقيمة يعد عشوائيًا تمامًا. أحب أن أصف الأشياء بحيث يكون بناء الجملة هذا بنفس القدر من الأهمية:
//config model gpt-3.5-turbo
//config out_file temp.md
//config backend mods
//config chat? true
//config terse? true
//config model gpt-4
ملاحظة: إذا قمت بتحديد نفس اسم عنصر التكوين أكثر من مرة داخل ملف المطالبة، فسيتم تعيين الاسم الأخير عندما تتم معالجة المطالبة أخيرًا من خلال LLM. على سبيل المثال، في المثال أعلاه، سيكون gpt-4
هو النموذج المستخدم. كونك الأول لا يهم في هذه الحالة.
مثال:
//include path_to_file
يمكن أن يكون path_to_file
إما مطلقًا أو نسبيًا. إذا كان نسبيًا، فهو مثبت عند الأشخاص ذوي الإعاقة. إذا كان path_to_file
يتضمن envars، فيجب استخدام خيار --shell
CLI لاستبدال envar في التوجيه بقيمته الفعلية.
سيتم استبعاد أي تعليقات أو توجيهات في الملف الذي تم تضمينه. من المتوقع أن يكون الملف عبارة عن ملف نصي بحيث يمكن تعليق محتواه مسبقًا على الموجه الموجود؛ ومع ذلك، إذا كان الملف عبارة عن ملف كود مصدر (على سبيل المثال: file.rb) فسيتم تضمين الكود المصدري، ولكن سيتم استبعاد أي سطر تعليق أو سطر يبدأ بـ "//".
المهام: فكر في إضافة خيار سطر الأوامر --include_dir
لتحديد المكان الذي ستأتي منه الملفات النسبية.
مثال:
//ruby any_code_that_returns_an_instance_of_String
هذا التوجيه بالإضافة إلى ERB. عند هذه النقطة، يكون توجيه //ruby
مقيدًا بالربط الحالي الموجود ضمن طريقة AIA::Directives#ruby
. على هذا النحو، فمن غير المرجح أن نرى الكثير من الاستخدام.
ومع ذلك، نظرًا لأنه تم تنفيذه eval(code)
فمن الممكن استخدامه على النحو التالي:
//ruby load(some_ruby_file); execute_some_method
كل تنفيذ لتوجيهات //ruby
سيكون تنفيذًا جديدًا لأسلوب AIA::Directives#ruby
بحيث لا يمكنك نقل المتغيرات المحلية من استدعاء إلى آخر؛ ومع ذلك، يمكنك فعل شيء ما باستخدام متغيرات الحالة أو المتغيرات العامة. يمكنك أيضًا إضافة شيء ما إلى كائن AIA.config
ليتم لصقه في الاستدعاء التالي للتوجيه في سياق نفس الموجه.
مثال:
//shell some_shell_command
من المتوقع أن يقوم أمر shell بإرجاع بعض النص إلى STDOUT والذي سيكون معلقًا مسبقًا لنص الموجه الموجود داخل ملف الموجه.
لا توجد قيود على ما يمكن أن يكون عليه أمر الصدفة. على سبيل المثال، إذا أردت تجاوز إزالة التعليقات والتوجيهات من ملف، فيمكنك القيام بشيء مثل هذا:
//shell cat path_to_file
والذي يفعل بشكل أساسي نفس الشيء مثل التوجيه //include
، باستثناء أنه يستخدم محتوى الملف بالكامل. بالنسبة لمسارات الملفات النسبية ينطبق نفس الشيء. سيكون مسار الملف مرتبطًا بـ PWD.
راجع الكود المصدري للتوجيهات التي تدعمها الواجهات الخلفية والتي تعتمد في الوقت الحالي على التكوين أيضًا.
على سبيل المثال، تحتوي mods
على عنصر التكوين topp
الذي يمكن تعيينه بواسطة توجيه في ملف نصي موجه مباشرةً.
//topp 1.5
إذا لم تكن mods
هي الواجهة الخلفية، فسيتم تجاهل التوجيه //topp
.
عندما تكون في جلسة محادثة، يمكنك استخدام التوجيه كمطالبة للمتابعة. على سبيل المثال، إذا بدأت جلسة الدردشة باستخدام الخيار --terse
متوقعًا الحصول على إجابات قصيرة من الواجهة الخلفية؛ ولكن، بعد أن قررت أنك تريد إجابات أكثر شمولاً، يمكنك القيام بذلك:
//config terse? false
يتم تنفيذ التوجيه ويمكن إدخال مطالبة متابعة جديدة باستجابة أطول يتم إنشاؤها من الواجهة الخلفية.
لماذا تحتاج/تريد استخدام سلسلة من المطالبات في موقف دفعي. ربما لديك مطالبة معقدة تتجاوز حدود الرمز المميز لنموذجك للإدخال، لذا تحتاج إلى تقسيمها إلى أجزاء متعددة. أو لنفترض أنها مطالبة بسيطة ولكن عدد الرموز المميزة في الإخراج محدود وأنك لا تحصل بالضبط على نوع الاستجابة الكاملة التي كنت تبحث عنها.
في بعض الأحيان، يستغرق الأمر سلسلة من المطالبات للحصول على نوع الاستجابة التي تريدها. تصبح الاستجابة من موجه واحد سياقًا للموجه التالي. من السهل القيام بذلك أثناء جلسة chat
حيث تقوم بإدخال مطالباتك وضبطها يدويًا حتى تحصل على نوع الاستجابة التي تريدها.
إذا كنت بحاجة إلى القيام بذلك على أساس منتظم أو ضمن دفعة، فيمكنك استخدام aia
وخيارات سطر الأوامر --next
و --pipeline
.
يحدد هذان الخياران تسلسل معرفات المطالبات المراد معالجتها. يتوفر كلا الخيارين لاستخدامهما في ملف موجه باستخدام التوجيه //config
. مثل جميع التوجيهات المضمنة، يمكنك الاستفادة من تكامل shell المعلمات وRuby. لقد بدأت أشعر بأنني رجل TIm Tool - المزيد من القوة!
ضع في اعتبارك الحالة التي يكون لديك فيها 4 معرفات مطالبة تحتاج إلى المعالجة بالتسلسل. المعرفات وأسماء ملفات المطالبة المرتبطة هي:
معرف المطالبة | ملف موجه |
---|---|
واحد. | one.txt |
اثنين. | two.txt |
ثلاثة. | three.txt |
أربعة. | four.txt |
export AIA_OUT_FILE=temp.md
aia one --next two
aia three --next four temp.md
أو داخل كل ملف من ملفات المطالبة تستخدم توجيه التكوين:
one.txt contains //config next two
two.txt contains //config next three
three.txt contains //config next four
ولكن إذا كان لديك أكثر من مطلبين في التسلسل الخاص بك، ففكر في استخدام خيار --pipeline.
التوجيه //next هو اختصار لـ //config next
aia one --pipeline two,three,four
أو داخل ملف المطالبة one.txt
استخدم هذا التوجيه:
//config pipeline two,three,four
التوجيه // خط الأنابيب هو اختصار لخط الأنابيب // التكوين
نظرًا لأنه يتم إدخال استجابة إحدى الموجهات في الموجه التالي ضمن التسلسل بدلاً من مطالبة جميع المطالبات بكتابة استجاباتها لنفس الملف الصادر، استخدم هذه التوجيهات داخل ملفات المطالبات المرتبطة:
ملف موجه | التوجيه |
---|---|
one.txt | // التكوين out_file one.md |
two.txt | // التكوين out_file two.md |
three.txt | // التكوين out_file three.md |
four.txt | // التكوين out_file four.md |
بهذه الطريقة يمكنك رؤية الاستجابة التي تم إنشاؤها لكل مطالبة في التسلسل.
TODO: لا يزال تحويل الصوت إلى نص قيد التطوير.
لنفترض أن لديك ملفًا صوتيًا لاجتماع. عليك أن تحصل على نسخة من ما قيل في ذلك الاجتماع. في بعض الأحيان، تخفي عمليات النسخ الخام القيمة الحقيقية للتسجيل، لذلك تكون قد قمت بصياغة أبهة تأخذ النسخ الأولية وتقدم ملخصًا تقنيًا مع قائمة عناصر الإجراء.
قم بإنشاء موجهين باسم transcribe.txt وtech_summary.txt
# transcribe.txt
# Desc: takes one audio file
# note that there is no "prompt" text only the directive
//config backend client
//config model whisper-1
//next tech_summary
و
# tech_summary.txt
//config model gpt-4-turbo
//config out_file meeting_summary.md
Review the raw transcript of a technical meeting,
summarize the discussion and
note any action items that were generated.
Format your response in markdown.
الآن يمكنك القيام بذلك:
aia transcribe my_tech_meeting.m4a
ملخص الاجتماع موجود في الملف meeting_summary.md
هناك نوعان من المطالبات
هذا النوع الثاني من المطالبات يسمى الدور. في بعض الأحيان يتم دمج الدور في التعليمات. على سبيل المثال، "بصفتك ساحرًا، اجعل الأرنب يظهر من القبعة." لإعادة استخدام نفس الدور في مطالبات متعددة، تشجعك aia
على تعيين roles_dir
خاص تضع فيه مطالبات خاصة بالتجسيد - الأدوار.
يعد roles_dir
الافتراضي دليلًا فرعيًا للأدوار المسماة prompts_dir
. ومع ذلك، يمكنك وضع roles_dir
الخاص بك في أي مكان يناسبك.
يتم استخدام خيار --role
لتحديد موجه التخصيص داخل دليل الأدوار الخاص بك والذي يحدد السياق الذي يجب أن تقدم LLM استجابته من خلاله. يتم تعليق نص معرف الدور مسبقًا على نص الموجه الأساسي لتشكيل مطالبة كاملة لتتم معالجتها بواسطة الواجهة الخلفية.
على سبيل المثال النظر في:
aia -r ruby refactor my_class.rb
ضمن دليل الأدوار، سيتم تعليق محتويات الملف النصي ruby.txt
مسبقًا على محتويات ملف refactor.txt
من دليل المطالبات لإنتاج مطالبة كاملة. ستحتوي هذه المطالبة الكاملة على أي معلمات متبوعة بتوجيهات تمت معالجتها قبل إرسال نص المطالبة المدمج إلى الواجهة الخلفية.
لاحظ أن --role
هي مجرد طريقة للقول أضف ملف المطالبة النصي هذا إلى مقدمة ملف المطالبة النصي الآخر هذا. يمكن أن تكون محتويات موجه "الدور" أي شيء. ليس بالضرورة أن يكون له دور فعلي.
تدعم aia
بشكل كامل شجرة الدليل داخل prompts_dir
كوسيلة لتنظيم أو تصنيف ملفات نصية موجهة مختلفة.
aia -r sw_eng doc_the_methods my_class.rb
في هذا المثال، تم إضافة ملف نص المطالبة $AIA_ROLES_DIR/sw_eng.txt
إلى ملف نص المطالبة $AIA_PROMPTS_DIR/doc_the_methods.txt
نظرًا لأن aia
تدعم المطالبات ذات المعلمات، فيمكنك جعل كلمة رئيسية مثل "[ROLE]" جزءًا من المطالبات الخاصة بك. على سبيل المثال، خذ بعين الاعتبار هذه المطالبة:
As a [ROLE] tell me what you think about [SUBJECT]
عند معالجة هذه المطالبة، ستطلب منك aia
قيمة للكلمة الأساسية "ROLE" والكلمة الأساسية "SUBJECT" لإكمال المطالبة. نظرًا لأن aia
تحتفظ بسجل لإجاباتك السابقة، فيمكنك فقط اختيار شيء استخدمته في الماضي أو الإجابة بقيمة جديدة تمامًا.
لتثبيت برامج CLI الخارجية التي تستخدمها aia:
الشراب تثبيت fzf تعديل rg توهج
fzf مكتشف غامض لسطر الأوامر مكتوب باللغة Go https://github.com/junegunn/fzf
تعديل الذكاء الاصطناعي في سطر الأوامر https://github.com/charmbracelet/mods
أداة بحث rg مثل grep وThe Silver Searcher https://github.com/BurntSushi/ripgrep
توهج عرض تخفيض السعر على CLI https://github.com/charmbracelet/glow
محرر نصوص يتم إعداد الملف التنفيذي الخاص به في متغير بيئة النظام "EDITOR" مثل هذا:
محرر التصدير = "subl -w"
llm
llm Access large language models from the command-line
| brew install llm
|__ https://llm.datasette.io/
اعتبارًا من aia v0.5.13
يتوفر معالج الواجهة الخلفية llm
بتكامل محدود. إنه تطبيق قوي جدًا يعتمد على لغة بايثون وله نظام قوالب سريع خاص به. سبب تضمينه في بيئة aia
هو قدرته على الاستفادة من نماذج LLM المحلية.
sgpt
shell-gpt
المعروف أيضًا باسم sgpt
هو أيضًا تطبيق Python لأداة CLI التي تعالج المطالبات من خلال OpenAI. يحتوي على ميزات أقل من كل من mods
و llm
وأقل مرونة.
plz
لم يتم دمج plz-cli
المعروف أيضًا باسم plz
مع aia
، ومع ذلك، فقد حصل على إشارة مشرفة لقدرته على استثناء الموجه المصمم خصيصًا لفعل شيء ما في سطر الأوامر. استجابته هي أمر CLI (أحيانًا تسلسل عبر الأنابيب) ينجز المهمة المنصوص عليها في الموجه. سيعيد الأوامر المطلوب تنفيذها مقابل ملفات البيانات التي حددتها مع استعلام لتنفيذ الأمر.
يمكنك إعداد وظيفة إكمال في الصدفة الخاصة بك والتي ستكتمل على Prompt_id المحفوظ في prompts_dir
- تتوفر وظائف bash
و fish
و zsh
. للحصول على نسخة من هذه الوظائف قم بما يلي:
aia --completion bash
إذا لم تكن من محبي "ولد من جديد" فاستبدل bash
بأحد الآخرين.
انسخ الوظيفة إلى مكان حيث يمكن تثبيتها في مثيل Shell الخاص بك. قد يكون هذا ملفًا .profile
أو .bashrc
، وما إلى ذلك.
هذا بيني وبينك فقط، لذا لا تثرثر بهذا الأمر أمام الجميع. أقوى موجه لدي موجود في ملف اسمه ad_hoc.txt
. يبدو مثل هذا:
[ماذا الآن الإنسان]
نعم. مجرد معلمة واحدة يمكنني من خلالها تقديم قيمة لأي شيء يدور في ذهني في ذلك الوقت. ميزتها هي أنني لا أقوم بتلويث سجل أوامر Shell الخاص بي بالكثير من النصوص.
ما هو الأفضل في رأيك في ملف محفوظات Shell الخاص بك؟
mods " As a certified public accountant specializing in forensic audit and analysis of public company financial statements, what do you think of mine? What is the best way to hide the millions dracma that I've skimmed? " < financial_statement.txt
أو
aia ad_hoc financial_statement.txt
كلاهما يفعل نفس الشيء. ومع ذلك، aia
لا يضع نص الموجه في ملف محفوظات Shell.... بالطبع يتم حفظ قيمة الكلمة الأساسية/المعلمة في ملف JSON الخاص بالموجه ويتم تسجيل الموجه مع الاستجابة ما لم يتم تحديد --no-log
; لكن هذا لا يفسد تاريخ الصدفة!
أستخدم قذيفة bash
. في ملف .bashrc
الخاص بي، قمت بمصدر ملف آخر باسم .bashrc__aia
والذي يبدو كما يلي:
# ~/.bashic_aia
# AI Assistant
# These are the defaults:
export AIA_PROMPTS_DIR= ~ /.prompts
export AIA_OUT_FILE=./temp.md
export AIA_LOG_FILE= $AIA_PROMPTS_DIR /_prompts.log
export AIA_BACKEND=mods
export AIA_MODEL=gpt-4-1106-preview
# Not a default. Invokes spinner.
export AIA_VERBOSE=true
alias chat= ' aia chat --terse '
# rest of the file is the completion function
إليك ما يبدو عليه ملف مطالبة chat
الخاص بي:
# ~/.prompts/chat.txt
# Desc: Start a chat session
//config chat ? = true
[WHAT]
بدأت أداة CLI هذه في الظهور على شكل بضعة أسطر من الياقوت في ملف في مستودع البرامج النصية الخاص بي. لقد واصلت النمو حيث قررت إضافة المزيد من الإمكانات والمزيد من أدوات الواجهة الخلفية. لم تكن هناك بنية حقيقية لتوجيه التصميم. ما تبقى هو فوضى كبيرة في التعليمات البرمجية والتي يتم إعادة هيكلتها ببطء إلى شيء أكثر قابلية للصيانة. يتم هذا العمل في فرع develop
. أرحب بكم المساعدة. ألق نظرة على ما يجري في هذا الفرع وأرسل لي بلاغًا ضده.
بالطبع إذا رأيت شيئًا ما في الفرع الرئيسي، أرسل لي بلاغًا ضد ذلك حتى نتمكن من حل المشكلة للجميع.
نرحب بتقارير الأخطاء وطلبات السحب على GitHub على https://github.com/MadBomber/aia.
عندما تجد مشاكل مع aia
يرجى الإشارة إليها كمشكلة. هذا الشيء كتبه في الغالب إنسان وأنت تعرف مدى تعرض البشر للخطأ. ينبغي أن يكون هناك الكثير من الأخطاء للعثور عليها.
لست سعيدًا بالطريقة التي يتم بها ترميز بعض خيارات سطر الأوامر للأوامر الخارجية. أنا أتحدث بشكل محدد عن الطريقة التي يتم بها استخدام أدوات rg
و fzf
. هناك خيارات تحدد الشكل والمظهر الأساسيين لقدرة البحث في سطر الأوامر. ربما يجب أن يكونوا جزءًا من التكوين العام حتى يتمكن المستخدمون من ضبط واجهة المستخدم الخاصة بهم بالطريقة التي يريدونها.
الجوهرة متاحة كمصدر مفتوح بموجب شروط ترخيص MIT.