
وضع بسيط لوضع emacs org الذي يوفر الوصول إلى نماذج الذكاء الاصطناعي. دعم حاليا
داخل المخزن المؤقت وضع org يمكنك
ملاحظة: من أجل استخدام API Openai ، ستحتاج إلى حساب Openai وتحتاج إلى الحصول على رمز API. بقدر ما أستطيع أن أقول ، فإن حدود الاستخدام الحالية للفئة المجانية تجعلك بعيدًا.
#+begin_ai...#+end_ai كتل خاصة #+begin_ai
Is Emacs the greatest editor?
#+end_ai

يمكنك الاستمرار في الكتابة والضغط على Cc Cc لإنشاء محادثة. سوف Cg مقاطعة طلب التشغيل.
استخدم الكلمة الرئيسية :image لإنشاء صورة. هذا يستخدم Dall · E-3 بشكل افتراضي.
#+begin_ai :image :size 1024x1024
Hyper realistic sci-fi rendering of super complicated technical machine.
#+end_ai

يمكنك استخدام الكلمات الرئيسية التالية للتحكم في توليد الصور:
:size <width>x<height> - حجم الصورة لإنشاء (افتراضي: 1024 × 1024):model <model> -النموذج المطلوب استخدامه (افتراضي: "dall-e-3" ):quality <quality> - جودة الصورة (الخيارات: hd ، standard ):style <style> - النمط للاستخدام (الخيارات: vivid ، natural )(لمزيد من المعلومات حول تلك الإعدادات ، انظر منشور مدونة Openai هذا.
يمكنك تخصيص عمليات الافتراضات لتلك المتغيرات مع customize-variable أو عن طريق إعدادها في التكوين الخاص بك:
( setq org-ai-image-model " dall-e-3 " )
( setq org-ai-image-default-size " 1792x1024 " )
( setq org-ai-image-default-count 2 )
( setq org-ai-image-default-style 'vivid )
( setq org-ai-image-default-quality 'hd )
( setq org-ai-image-directory ( expand-file-name " org-ai-images/ " org-directory))
#+begin_ai...#+end_ai كتل خاصةعلى غرار ORG-babel ، ترسم هذه الكتل إدخال (وللإخراج chatGPT أيضًا) لنموذج الذكاء الاصطناعي. يمكنك استخدامه لدردشة الذكاء الاصطناعى ، وإكمال النص والنص -> توليد الصور. انظر الخيارات أدناه لمزيد من المعلومات.
إنشاء كتلة مثل
#+begin_ai
Is Emacs the greatest editor?
#+end_ai
وضغط Cc Cc . سيظهر إدخال الدردشة مضمّنًا وبمجرد اكتمال الاستجابة ، يمكنك إدخال ردك وما إلى ذلك. انظر العرض التوضيحي أدناه. يمكنك الضغط على Cg أثناء تشغيل طلب الذكاء الاصطناعي لإلغاءه.
يمكنك أيضًا تعديل موجه النظام والمعلمات الأخرى المستخدمة. يتم حقن موجه النظام قبل إدخال المستخدم و "الأعداد الأولية" للنموذج للإجابة بأسلوب معين. على سبيل المثال ، يمكنك القيام بذلك:
#+begin_ai :max-tokens 250
[SYS]: Act as if you are a powerful medival king.
[ME]: What will you eat today?
#+end_ai
سيؤدي هذا إلى حمولة API مثل
{
"messages" : [
{
"role" : " system " ,
"content" : " Act as if you are a powerful medival king. "
},
{
"role" : " user " ,
"content" : " What will you eat today? "
}
],
"model" : " gpt-4o-mini " ,
"stream" : true ,
"max_tokens" : 250 ,
"temperature" : 1.2
}للحصول على بعض الأفكار السريعة ، انظر على سبيل المثال مطالبات chatgpt رهيبة.
عند إنشاء الصور باستخدام علم :image ، ستظهر الصور أسفل كتلة AI المضمنة. سيتم تخزين الصور (جنبًا إلى جنب مع مطالبة) داخل org-ai-image-directory الذي يتخلف عن ~/org/org-ai-images/ .
يمكنك أيضًا استخدام مدخلات الكلام لنسخ الإدخال. اضغط على Cc r لـ org-ai-talk-capture-in-org للبدء في التسجيل. لاحظ أن هذا سيتطلب منك إعداد التعرف على الكلام (انظر أدناه). يمكن تمكين ناتج الكلام باستخدام org-ai-talk-output-enable .
داخل #+begin_ai...#+end_ai يمكنك تعديل وتحديد أجزاء الدردشة مع هذه الأوامر:
Cc <backspace> ( org-ai-kill-region-at-point ) لإزالة جزء الدردشة تحت النقطة.org-ai-mark-region-at-point علامة على المنطقة عند نقطة.org-ai-mark-last-region بجزء الدردشة الأخير. لتطبيق بناء الجملة المميّز على #+begin_ai ... فقط أضف اسمًا رئيسيًا للغة بعد _ai . على سبيل المثال #+begin_ai markdown . للتخفيض على وجه الخصوص ، لتسليط الضوء بشكل صحيح على الكود في Backticks ، يمكنك تعيين (setq markdown-fontify-code-blocks-natively t) . تأكد من تثبيت حزمة وضع التخفيضات أيضًا. شكرا tavisrudd لهذه الخدعة!
يتم تمكين هذا السلوك افتراضيًا بحيث يكون التفاعل أكثر شبهاً بالدردشة. قد يكون الأمر مزعجًا عند وجود الإخراج الطويل والتمورات العازلة أثناء القراءة. لذلك يمكنك تعطيل هذا مع:
( setq org-ai-jump-to-end-of-block nil ) Set (setq org-ai-auto-fill t) إلى "ملء" (لف تلقائيًا الخطوط وفقًا لعنوان fill-column ) النص المدرج. في الأساس مثل auto-fill-mode ولكن من أجل الذكاء الاصطناعي.
يمكن أن يأخذ #+begin_ai...#+end_ai الخيارات التالية.
بشكل افتراضي ، يتم تفسير محتوى كتل الذكاء الاصطناعي كرسائل لـ ChatGPT. النص التالي [ME]: يرتبط بالمستخدم ، النص التالي [AI]: يرتبط كاستجابة النموذج. اختياريًا ، يمكنك بدء الكتلة باستخدام [SYS]: <behavior> إدخال إلى النموذج (انظر org-ai-default-chat-system-prompt أدناه).
:max-tokens number - عدد الرموز القصوى التي يجب توليدها (افتراضي: لا شيء ، استخدم Openai's Default):temperature number - درجة حرارة النموذج (افتراضي: 1):top-p number - TOP_P من النموذج (افتراضي: 1):frequency-penalty number - عقوبة التردد للنموذج (الافتراضي: 0):presence-penalty - عقوبة التواجد للنموذج (الافتراضي: 0):sys-everywhere - كرر موجه النظام لكل رسالة مستخدم (افتراضي: لا شيء) إذا كان لديك الكثير من مؤشرات الترابط المختلفة للمحادثة فيما يتعلق بالموضوع نفسه والإعدادات (موجه النظام ، ودرجة الحرارة ، وما إلى ذلك) ولا ترغب في تكرار جميع الخيارات ، يمكنك تعيين خصائص نطاق ملف ORG أو إنشاء عنوان Org مع خاصية الدرج ، بحيث جميع #+begin_ai...#+end_ai كتل تحت هذا العنوان سترث الإعدادات.
أمثلة:
* Emacs (multiple conversations re emacs continue in this subtree)
:PROPERTIES:
:SYS: You are a emacs expert. You can help me by answering my questions. You can also ask me questions to clarify my intention.
:temperature: 0.5
:model: gpt-4o-mini
:END:
** Web programming via elisp
#+begin_ai
How to call a REST API and parse its JSON response?
#+end_ai
** Other emacs tasks
#+begin_ai...#+end_ai
* Python (multiple conversations re python continue in this subtree)
:PROPERTIES:
:SYS: You are a python programmer. Respond to the task with detailed step by step instructions and code.
:temperature: 0.1
:model: gpt-4
:END:
** Learning QUIC
#+begin_ai
How to setup a webserver with http3 support?
#+end_ai
** Other python tasks
#+begin_ai...#+end_ai
يمكن استخدام المتغيرات المخصصة التالية لتكوين الدردشة:
org-ai-default-chat-model (افتراضي: "gpt-4o-mini" )org-ai-default-max-tokens كم من الوقت يجب أن تكون الاستجابة. حاليًا لا يمكن أن يتجاوز 4096. إذا كانت هذه القيمة صغيرة جدًا ، فقد يتم قطع إجابة (افتراضي: لا شيء)org-ai-default-chat-system-prompt كيفية "Pript" النموذج. هذه موجه يتم حقنه قبل إدخال المستخدم. (افتراضي: "You are a helpful assistant inside Emacs." )org-ai-default-inject-sys-prompt-for-all-messages wether لتكرار موجه النظام لكل رسالة مستخدم. في بعض الأحيان "ينسى" كيف تم تحضيره. هذا يمكن أن يساعد في تذكيرها. (افتراضي: nil ) عند إضافة خيار :image إلى كتلة الذكاء الاصطناعي ، سيتم استخدام المطالبة لتوليد الصور.
:image - قم بإنشاء صورة بدلاً من النص:size - حجم الصورة لإنشاء (افتراضي: 256x256 ، يمكن أن يكون 512x512 أو 1024x1024):n - عدد الصور لإنشاء (افتراضي: 1)يمكن استخدام المتغيرات المخصصة التالية لتكوين توليد الصور:
org-ai-image-directory حيث يتم تخزين الصور التي تم إنشاؤها (افتراضي: ~/org/org-ai-images/ ) على غرار Dall-E لكن الاستخدام
#+begin_ai :sd-image
<PROMPT>
#+end_ai
يمكنك تشغيل IMG2IMG من خلال وضع علامة على صورة وضع org الخاص بك باسم #+والرجوع إليها بـ: Image-REF من كتلة org-AI.
#+begin_ai :sd-image :image-ref label1
forest, Gogh style
#+end_ai
يخمن MX Org-Ai-SD-Clip موجه الصورة السابقة على وضع org بواسطة محقق المقطع ويحفظه في حلقة القتل.
MX ORG-AI-SD-DEEPDANBOORU يخمن موجه الصورة السابقة على وضع ORG بواسطة محقق DEEPDANBOORU ويحفظه في حلقة القتل.
لطلب الإكمال من نموذج محلي يتم تقديمه مع Oobabooga/Generation-Webui ، انتقل إلى خطوات الإعداد الموضحة أدناه
ثم ابدأ خادم API:
cd ~ /.emacs.d/org-ai/text-generation-webui
conda activate org-ai
python server.py --api --model SOME-MODEL عند إضافة A :local إلى كتلة org-ai وطلب إكمال مع Cc Cc ، سيتم إرسال الكتلة إلى خادم API المحلي بدلاً من API Openai. على سبيل المثال:
#+begin_ai :local
...
#+end_ai
سيؤدي ذلك إلى إرسال طلب إلى org-ai-oobabooga-websocket-url ودفق الاستجابة في المخزن المؤقت ORG.
يمكن أيضًا مطالبة نماذج الإكمال الأقدم بإضافة خيار :completion إلى كتلة الذكاء الاصطناعى.
:completion - بدلاً من استخدام نموذج ChatGpt ، استخدم نموذج الإكمال:model - أي نموذج لاستخدامه ، راجع https://platform.openai.com/docs/models للحصول على قائمة من النماذجللاطلاع على المعنى التفصيلي لتلك المعلمات ، انظر وثائق API Openai.
يمكن استخدام المتغيرات المخصصة التالية لتكوين توليد النص:
org-ai-default-completion-model (افتراضي: "text-davinci-003" ) يمكنك أيضًا استخدام صورة موجودة كمدخلات لإنشاء صور أكثر مماثلة. سيطالب الأمر org-ai-image-variation بمسار ملف إلى صورة وحجم وعدد ، ثم سيقوم بإنشاء العديد من الصور وإدراجها داخل المخزن المؤقت الحالي org-mode . سيتم تخزين الصور داخل org-ai-image-directory . انظر العرض التوضيحي أدناه.
لمزيد من المعلومات ، راجع وثائق Openai. يجب أن تكون صورة الإدخال مربعة ويجب أن يكون حجمها أقل من 4 ميجابايت. وتحتاج حاليًا إلى حليقة متاحة كأداة سطر الأوامر 1 .
يمكن استخدام org-ai خارج مخازن org-mode أيضًا. عندما تقوم بتمكين org-ai-global-mode ، فإن البادئة Cc Ma ستكون مرتبطة بعدد من الأوامر:
| يأمر | keybinding | وصف |
|---|---|---|
org-ai-on-region | Cc Ma r | اطرح سؤالاً حول النص المحدد أو أخبر الذكاء الاصطناعي أن يفعل شيئًا معه. سيتم فتح الاستجابة في المخزن المؤقت لضعف ORG حتى تتمكن من متابعة المحادثة. وضع متغير org-ai-on-region-file (على سبيل المثال (setq org-ai-on-region-file (expand-file-name "org-ai-on-region.org" org-directory)) ) ملف مع هذا المخزن المؤقت. |
org-ai-summarize | Cc Ma s | لخص النص المحدد. |
org-ai-refactor-code | Cc Ma c | أخبر الذكاء الاصطناعي كيفية تغيير الكود المحدد ، سيظهر مخزن المؤقت DIFF مع التغييرات. |
org-ai-on-project | Cc Ma p | قم بتشغيل المطالبات وتعديل / إعادة تشكيل ملفات متعددة مرة واحدة. سيتم استخدام المقذوف إذا كان ذلك متاحًا ، ويعود إلى الدليل الحالي إن لم يكن كذلك. |
org-ai-prompt | Cc Ma P | اطلب من المستخدم للحصول على نص ثم طباعة استجابة الذكاء الاصطناعى في المخزن المؤقت الحالي. |
org-ai-switch-chat-model | Cc Ma m | تغيير تفاعلي org-ai-default-chat-model |
org-ai-open-account-usage-page | Cc Ma $ | يفتح https://platform.openai.com/account/usage لمعرفة مقدار الأموال التي أحرقتها. |
org-ai-open-request-buffer | Cc Ma ! | يفتح عازلة طلب عنوان url . إذا كان هناك شيء لا يعمل ، فقد يكون من المفيد إلقاء نظرة. |
org-ai-talk-input-toggle | Cc Ma t | تمكين إدخال الكلام بشكل عام للأوامر المطالبة المختلفة. |
org-ai-talk-output-toggle | Cc Ma T | تمكين إخراج الكلام بشكل عام. |
يتيح لك استخدام المخزن المؤقت Org-Ai-On-Project تشغيل الأوامر على الملفات في مشروع ، بدلاً من ذلك أيضًا على نص محدد في هذه الملفات. يمكنك على سبيل المثال تحديد ReadMe للمشروع وتسأل "ما كل هذا؟" أو أن رمز شرح لك. يمكنك أيضًا طلب تغييرات التعليمات البرمجية ، والتي ستولد فرقًا. إذا كنت تعرف بطريقة ما من يفكر فقط في الكود مع تمكين Copilot ، فيمكنه القيام بذلك ، ثم أشرحها هنا.
سيؤدي تشغيل الأمر org-ai-on-project إلى فتح مخزن مؤقت منفصل يتيح لك تحديد اختيار ملفات متعددة (وتحديد منطقة فرعية داخل ملف اختياريًا) ثم قم بتشغيل مطالبة عليه.

إذا قمت بإلغاء تنشيط "تعديل الكود" ، فإن التأثير يشبه تشغيل org-ai-on-region تمامًا بحيث تظهر محتويات الملف كلها في المطالبة.
مع تنشيط "تعديل رمز" ، يمكنك مطالبة الذكاء الاصطناعي بتعديل أو إعادة تشكيل الرمز. بشكل افتراضي ("request diffs") ، سوف نطالب بإنشاء الرمز الجديد لجميع الملفات/المناطق المحددة ويمكنك بعد ذلك رؤية فرق لكل ملف ونقرر تطبيقه أم لا. مع "Dertire Diffs" نشط ، سيُطلب من الذكاء الاصطناعى إنشاء فرق موحد يمكن تطبيقه مباشرة.
بالنظر إلى كتلة المصدر المسماة
#+name: sayhi
#+begin_src shell
echo "Hello there"
#+end_src
يمكننا محاولة الرجوع إليها بالاسم ، لكنها لا تعمل.
#+begin_ai
[SYS]: You are a mimic. Whenever I say something, repeat back what I say to you. Say exactly what I said, do not add anything.
[ME]: <<sayhi()>>
[AI]: <<sayhi()>>
[ME]:
#+end_ai
مع :noweb yes
#+begin_ai :noweb yes
[SYS]: You are a mimic. Whenever I say something, repeat back what I say to you. Say exactly what I said, do not add anything.
[ME]: <<sayhi()>>
[AI]: Hello there.
[ME]:
#+end_ai
يمكنك أيضًا تشغيل توسع Noweb مع org-ai-noweb: yes ، توجه proprty في أي مكان في العناوين الأم (تتبع args رأس الأسبقية).
لمعرفة ما الذي سيتوسعه مستندك عند إرساله إلى واجهة برمجة التطبيقات ، قم بتشغيل org-ai-expand-block .
هذا هو الاختراق ولكنه يعمل بشكل جيد.
إنشاء كتلة
#+name: identity
#+begin_src emacs-lisp :var x="fill me in"
(format "%s" x)
#+end_src
يمكننا استدعاءها وترك معلمات Noweb (التي تدعم LISP) تقييم رمز
#+begin_ai :noweb yes
Tell me some 3, simple ways to improve this dockerfile
<<identity(x=(quelpa-slurp-file "~/code/ibr-api/Dockerfile"))>>
[AI]: 1. Use a more specific version of Python, such as "python:3.9.6-buster" instead of "python:3.9-buster", to ensure compatibility with future updates.
2. Add a cleanup step after installing poetry to remove any unnecessary files or dependencies, thus reducing the size of the final image.
3. Use multi-stage builds to separate the build environment from the production environment, thus reducing the size of the final image and increasing security. For example, the first stage can be used to install dependencies and build the code, while the second stage can contain only the final artifacts and be used for deployment.
[ME]:
#+end_ai
Org-Ai على Melpa: https://melpa.org/#/org-ai. إذا قمت بإضافة Melpa إلى أرشيف الحزمة الخاصة بك مع
( require 'package )
( add-to-list 'package-archives '( " melpa " . " http://melpa.org/packages/ " ) t )
( package-initialize )يمكنك تثبيته مع:
( use-package org-ai
:ensure t
:commands (org-ai-mode
org-ai-global-mode)
:init
( add-hook 'org-mode-hook # 'org-ai-mode ) ; enable org-ai in org-mode
(org-ai-global-mode) ; installs global keybindings on C-c M-a
:config
( setq org-ai-default-chat-model " gpt-4 " ) ; if you are on the gpt-4 beta:
(org-ai-install-yasnippets)) ; if you are using yasnippet and want `ai` snippets
( straight-use-package
'(org-ai :type git :host github :repo " rksm/org-ai "
:local-repo " org-ai "
:files ( " *.el " " README.md " " snippets " )))الخروج هذا المستودع.
git clone
https://github.com/rksm/org-ai ثم ، إذا كنت تستخدم use-package :
( use-package org-ai
:ensure t
:load-path ( lambda () " path/to/org-ai " ))
; ; ...rest as above...
أو فقط مع require :
( package-install 'websocket )
( add-to-list 'load-path " path/to/org-ai " )
( require 'org )
( require 'org-ai )
( add-hook 'org-mode-hook # 'org-ai-mode )
(org-ai-global-mode)
( setq org-ai-default-chat-model " gpt-4 " ) ; if you are on the gpt-4 beta:
(org-ai-install-yasnippets) ; if you are using yasnippet and want `ai` snippetsيمكنك إما تعيين رمز API الخاص بك مباشرة في التكوين الخاص بك:
( setq org-ai-openai-api-token " <ENTER YOUR API TOKEN HERE> " )
بدلاً من ذلك ، يدعم org-ai auth-source لاسترداد مفتاح API الخاص بك. يمكنك تخزين سر في التنسيق
machine api.openai.com login org-ai password <your-api-key>
في ملف ~/authinfo.gpg الخاص بك. في حالة وجود ذلك ، ستستخدم ORG-AAI هذه الآلية لاسترداد الرمز المميز عند تقديم طلب. إذا كنت لا تريد أن تحاول org-ai استرداد المفتاح من auth-source ، فيمكنك تعيين org-ai-use-auth-source إلى nil قبل تحميل org-ai .
يمكنك التبديل إلى Azure عن طريق تخصيص هذه المتغيرات ، إما بشكل تفاعلي مع Mx customize-variable أو عن طريق إضافتها إلى التكوين الخاص بك:
( setq org-ai-service 'azure-openai
org-ai-azure-openai-api-base " https://your-instance.openai.azure.com "
org-ai-azure-openai-deployment " azure-openai-deployment-name "
org-ai-azure-openai-api-version " 2023-07-01-preview " ) لتخزين بيانات اعتماد API ، اتبع تعليمات AuthInfo أعلاه ولكن استخدم org-ai-azure-openai-api-base كاسم الجهاز.
للاطلاع على قائمة من النماذج المتاحة ، راجع وثائق perplexity.ai.
إما تبديل الخدمة الافتراضية في التكوين الخاص بك:
( setq org-ai-service 'perplexity .ai)
( setq org-ai-default-chat-model " llama-3-sonar-large-32k-online " )أو لكل كتلة:
#+begin_ai :service perplexity.ai :model llama-3-sonar-large-32k-online
[ME]: Tell me fun facts about Emacs.
#+end_ai
بالنسبة للمصادقة ، تحتوي على إدخال مثل machine api.perplexity.ai login org-ai password pplx-*** في authinfo.gpg أو تعيين org-ai-openai-api-token .
ملاحظة: حاليًا لا يتيح الحيرة. AIAI الوصول إلى المراجع/الروابط عبر واجهة برمجة التطبيقات (API) حتى لا تتمكن emacs من عرض المراجع. لديهم برنامج تجريبي لهذا التشغيل ، وآمل أن يكون هذا متاحًا بشكل عام قريبًا.
على غرار ما سبق. على سبيل المثال
#+begin_ai :service anthropic :model claude-3-opus-20240229
[ME]: Tell me fun facts about Emacs.
#+end_ai
النماذج الإنسانية هنا. يوجد حاليًا إصدار API واحد فقط يتم تعيينه عبر org-ai-anthropic-api-version . إذا خرج إصدار آخر ، يمكنك العثور عليها هنا.
للحصول على رمز API ، استخدم machine api.anthropic.com login org-ai password sk-ant-*** في authinfo.gpg الخاص بك.
خطوات الإعداد هذه اختيارية. إذا كنت لا ترغب في استخدام إدخال / إخراج الكلام ، فيمكنك تخطي هذا القسم.
ملاحظة: يمكن العثور على التهيئة الشخصية الخاصة بي لـ ORG-AAI في هذا GIST. أنه يحتوي على إعداد الهمس العمل.
وقد تم اختبار هذا على MacOS و Linux. شخص ما لديه كمبيوتر يعمل بنظام Windows ، يرجى اختبار هذا وإخبارنا بما يجب القيام به لجعله يعمل (شكرًا لك!).
يستخدم إدخال الكلام Whisper.el و ffmpeg . تحتاج إلى استنساخ الريبو مباشرة أو استخدام مستقيم. EL لتثبيته.
brew install ffmpeg على MACOS) أو sudo apt install ffmpeg على Linux.git clone https://github.com/natrys/whisper.el path/to/whisper.elيجب أن تكون قادرًا الآن على تحميله داخل Emacs:
( use-package whisper
:load-path " path/to/whisper.el "
:bind ( " M-s-r " . whisper-run))الآن تحميل أيضا:
( use-package greader :ensure )
( require 'whisper )
( require 'org-ai-talk )
; ; macOS speech settings, optional
( setq org-ai-talk-say-words-per-minute 210 )
( setq org-ai-talk-say-voice " Karen " )على MacOS ستحتاج إلى القيام بأمرين آخرين:
يمكنك استخدام المساعد TCCUTIL:
git clone https://github.com/DocSystem/tccutil
cd tccutil
sudo python ./tccutil.py -p /Applications/Emacs.app -e --microphone عندما تقوم الآن بتشغيل ffmpeg -f avfoundation -i :0 output.mp3 من داخل قذيفة Emacs ، يجب ألا يكون هناك abort trap: 6 خطأ.
(كبديل لـ tccutil.py ، راجع الطريقة المذكورة في هذه المسألة.)
يمكنك استخدام إخراج ffmpeg -f avfoundation -list_devices true -i "" لإدراج أجهزة إدخال الصوت ثم أخبر Whisper.el حول هذا الموضوع: (setq whisper--ffmpeg-input-device ":0") . :0 هو فهرس الميكروفون ، راجع إخراج الأمر أعلاه لاستخدام واحد آخر.
لقد قمت بإنشاء مساعد Emacs يتيح لك تحديد الميكروفون بشكل تفاعلي. انظر هذا الجوهر.
يشبه تكوين الكلام الكامل الخاص بي بعد ذلك:
( use-package whisper
:load-path ( lambda () ( expand-file-name " lisp/other-libs/whisper.el " user-emacs-directory))
:config
( setq whisper-model " base "
whisper-language " en "
whisper-translate nil )
( when *is-a-mac*
(rk/select-default-audio-device " Macbook Pro Microphone " )
( when rk/default-audio-device)
( setq whisper--ffmpeg-input-device ( format " : %s " rk/default-audio-device)))) على MacOS ، بدلاً من الهمس ، يمكنك أيضًا استخدام إملاء Siri المدمج. لتمكين ذلك ، انتقل إلى Preferences -> Keyboard -> Dictation ، وتمكينه وإعداد اختصار. الافتراضي هو Ctrl-Ctrl.
لا تعمل الطريقة (Defun Whisper-Scene-install-Run) على Win10 (انظر #66).
الحل البديل هو تثبيت Whisper.cpp والنموذج يدويًا وتصحيحًا:
( defun whisper--check-install-and-run ( buffer status )
(whisper--record-audio)) إخراج الكلام على أنظمة غير MACOS الافتراضية لاستخدام حزمة Greader التي تستخدم ESPEAK أسفل لتوليف الكلام. ستحتاج إلى تثبيت Greader يدويًا (على سبيل المثال عبر Mx package-install ). من هذه النقطة يجب أن "مجرد العمل". يمكنك اختباره عن طريق اختيار بعض النصوص والاتصال بـ Mx org-ai-talk-read-region .
يمكن استضافة واجهة برمجة التطبيقات للانتشار المستقر مع مشروع الانتشار المستقر. انتقل من خلال خطوات التثبيت لمنصتك ، ثم ابدأ خادم API فقط:
cd path/to/stable-diffusion-webui
./webui.sh --nowebui سيبدأ هذا خادمًا على http://127.0.0.1:7861 افتراضيًا. من أجل استخدامه مع ORG-AAI ، تحتاج إلى ضبط org-ai-sd-endpoint-base :
( setq org-ai-sd-endpoint-base " http://localhost:7861/sdapi/v1/ " )إذا كنت تستخدم خادمًا مستضافًا في مكان آخر ، فقم بتغيير عنوان URL وفقًا لذلك.
نظرًا لأن الإصدار 0.4 org-ai يدعم النماذج المحلية التي يتم تقديمها مع Oobabooga/text-Generation-Webui. راجع تعليمات التثبيت لإعدادها لنظامك.
فيما يلي عملية تجارية تم اختبارها على Ubuntu 22.04. يفترض أن يتم تثبيت Miniconda أو Anaconda وكذلك GIT-LFS.
conda create -n org-ai python=3.10.9
conda activate org-ai
pip3 install torch torchvision torchaudiomkdir -p ~ /.emacs.d/org-ai/
cd ~ /.emacs.d/org-ai/
git clone https://github.com/oobabooga/text-generation-webui
cd text-generation-webui
pip install -r requirements.txt يدعم Oobabooga/Text-Generation-Webui عددًا من نماذج اللغة. عادة ، يمكنك تثبيتها من Luggingface. على سبيل المثال ، لتثبيت نموذج CodeLlama-7b-Instruct :
cd ~ /.emacs.d/org-ai/text-generation-webui/models
git clone [email protected]:codellama/CodeLlama-7b-Instruct-hf cd ~ /.emacs.d/org-ai/text-generation-webui
conda activate org-ai
python server.py --api --model CodeLlama-7b-Instruct-hf بناءً على أجهزتك والنموذج المستخدم ، قد تحتاج إلى ضبط معلمات الخادم ، مثل الاستخدام --load-in-8bit لتقليل استخدام الذاكرة أو- --cpu إذا لم يكن لديك وحدة معالجة الرسومات المناسبة.
يجب أن تكون قادرًا الآن على استخدام النموذج المحلي مع ORG-AAI عن طريق إضافة الخيار :local إلى كتلة #+begin_ai :
#+begin_ai :local
Hello CodeLlama!
#+end_ai
لا ، Openai هو الأسهل في الإعداد (تحتاج فقط إلى مفتاح API) ولكن يمكنك استخدام النماذج المحلية أيضًا. تعرف على كيفية استخدام الانتشار المستقر و LLMs المحلية مع Oobabooga/Text-Generation-Webui أعلاه. كلود البشري والحيرة. كما يدعمها. يرجى فتح مشكلة أو العلاقات العامة للخدمات الأخرى التي ترغب في رؤيتها مدعومة. يمكن أن أكون بطيئًا في الرد ولكنني سأضيف الدعم إذا كان هناك ما يكفي من الاهتمام.
توفر حزمة GPTEL واجهة بديلة لـ Openai ChatGPT API: https://github.com/karthink/gptel
إذا وجدت هذا المشروع مفيدًا ، فيرجى التفكير في الرعاية. شكرًا لك!
ملاحظة: يتطلب تنفيذ تباين الصورة بشكل corriped تثبيت حليقة سطر الأوامر. السبب في ذلك هو أن API Openai تتوقع طلبات multipart/form-data وأن url-retrieve المدمج emacs لا يدعم ذلك (على الأقل لم أحسب كيف). التحول إلى request.el قد يكون بديل أفضل. إذا كنت مهتمًا بالمساهمة ، فإن PRS مرحب بها للغاية! ↩