
Kleiner Modus für EMACS-Org-Mode, der Zugriff auf generative KI-Modelle ermöglicht. Derzeit unterstützt
In einem Org-Mode-Puffer können Sie
Hinweis: Um die OpenAI -API zu verwenden, benötigen Sie ein OpenAI -Konto und Sie müssen ein API -Token erhalten. Soweit ich das beurteilen kann, bringen Sie die aktuellen Nutzungsgrenzen für die kostenlose Stufe ziemlich weit.
#+begin_ai...#+end_ai spezielle Blöcke #+begin_ai
Is Emacs the greatest editor?
#+end_ai

Sie können weiterhin eingeben und Cc Cc drücken, um eine Konversation zu erstellen. Cg unterbricht eine laufende Anfrage.
Verwenden Sie das Schlüsselwort :image um ein Bild zu generieren. Dies verwendet standardmäßig Dall · E-3.
#+begin_ai :image :size 1024x1024
Hyper realistic sci-fi rendering of super complicated technical machine.
#+end_ai

Sie können die folgenden Schlüsselwörter verwenden, um die Bildgenerierung zu steuern:
:size <width>x<height> - Die zu generierende Größe des Bildes (Standard: 1024x1024):model <model> -Das zu verwendende Modell (Standard: "dall-e-3" ):quality <quality> - Die Qualität des Bildes (Auswahl: hd , standard ):style <style> - Der zu verwendende Stil (Auswahl: vivid , natural )(Weitere Informationen zu diesen Einstellungen finden Sie in diesem OpenAI -Blog -Beitrag.
Sie können die Standardeinstellungen für diese Variablen mit customize-variable oder durch Einstellen in Ihrer Konfiguration anpassen:
( 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 spezielle BlöckeÄhnlich wie bei Org-Babel haben diese Blöcke die Eingabe (und für ChatGPT-Ausgabe) für das KI-Modell abgraben. Sie können es für KI -Chat, Textabschluss und Text -> Bildgenerierung verwenden. Weitere Informationen finden Sie in den folgenden Optionen.
Erstellen Sie einen Block wie
#+begin_ai
Is Emacs the greatest editor?
#+end_ai
und drücken Sie Cc Cc . Die Chat -Eingabe wird inline angezeigt und sobald die Antwort abgeschlossen ist, können Sie Ihre Antwort eingeben und so weiter. Siehe die Demo unten. Sie können Cg drücken, während die AI -Anfrage ausgeführt wird, um sie zu stornieren.
Sie können auch die Systemaufforderung und andere verwendete Parameter ändern. Die Systemaufforderung wird vor der Eingabe des Benutzers und "Primes" des Modells in einem bestimmten Stil injiziert. Zum Beispiel können Sie:
#+begin_ai :max-tokens 250
[SYS]: Act as if you are a powerful medival king.
[ME]: What will you eat today?
#+end_ai
Dies führt zu einer API -Nutzlast wie
{
"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
}Für einige schnelle Ideen finden Sie beispielsweise tolle Chatgpt -Eingabeaufforderungen.
Beim Generieren von Bildern unter Verwendung des :image werden Bilder unter der KI -Blockinline angezeigt. Die Bilder werden (zusammen mit ihrer Eingabeaufforderung) in org-ai-image-directory gespeichert, die standardmäßig ~/org/org-ai-images/ .
Sie können auch die Spracheingabe verwenden, um die Eingabe zu transkribieren. Drücken Sie Cc r für org-ai-talk-capture-in-org um die Aufnahme zu starten. Beachten Sie, dass Sie die Spracherkennung einrichten müssen (siehe unten). Die Sprachausgabe kann mit org-ai-talk-output-enable aktiviert werden.
In einem #+begin_ai...#+end_ai können Sie die Teile des Chats mit diesen Befehlen ändern und auswählen:
Cc <backspace> ( org-ai-kill-region-at-point ), um den Chat-Teil unter Punkt zu entfernen.org-ai-mark-region-at-point markiert die Region am Punkt.org-ai-mark-last-region markiert den letzten Chat-Teil. Um die Syntax auf Ihre #+begin_ai ... fügen Sie einfach einen Sprach-Major-Mode-Namen nach _ai hinzu. EG #+begin_ai markdown . Insbesondere für Markdown, um dann auch den Code in Back-Ticks korrekt hervorzuheben, können Sie (setq markdown-fontify-code-blocks-natively t) festlegen. Stellen Sie sicher, dass Sie auch das Markdown-Mode-Paket installieren lassen. Danke @tavisrudd für diesen Trick!
Dieses Verhalten ist standardmäßig aktiviert, damit die Interaktion einem Chat ähnlicher ist. Es kann ärgerlich sein, wenn eine lange Ausgabe vorhanden ist und die Puffer beim Lesen scrollen. So können Sie dies mit:
( setq org-ai-jump-to-end-of-block nil ) Set (setq org-ai-auto-fill t) zu "füllen" (automatisch Zeilen gemäß fill-column ) den eingefügten Text. Grundsätzlich wie auto-fill-mode , aber für die KI.
Der #+begin_ai...#+end_ai Block kann die folgenden Optionen ergreifen.
Standardmäßig werden der Inhalt von KI -Blöcken als Nachrichten für ChatGPT interpretiert. Text folgt [ME]: ist dem Benutzer zugeordnet, Text folgt [AI]: ist als Antwort des Modells zugeordnet. Optional können Sie den Block mit einem [SYS]: <behavior> Eingabe für das Modell starten (siehe org-ai-default-chat-system-prompt unten).
:max-tokens number - Anzahl der maximalen Token, die generiert werden sollen (Standard: NIL, Verwenden Sie den Standard von OpenAI).:temperature number - Temperatur des Modells (Standardeinstellung: 1):top-p number - TOP_P des Modells (Standardeinstellung: 1):frequency-penalty number - Frequenzstrafe des Modells (Standard: 0):presence-penalty - Präsenzstrafe des Modells (Standard: 0):sys-everywhere - Wiederholen Sie die Systemaufforderung für jede Benutzernachricht (Standard: NIL) Wenn Sie viele verschiedene Konversationen in Bezug auf das gleiche Thema und die gleichen Einstellungen (Systemaufforderung, Temperatur usw.) haben und Sie nicht alle Optionen wiederholen möchten, können Sie die Eigenschaften des Organ -Datei einstellen oder eine Org -Überschrift mit Eigenschaft erstellen Schublade, so dass alle #+begin_ai...#+end_ai -Blöcke unter dieser Überschrift die Einstellungen erben.
Beispiele:
* 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
Die folgenden benutzerdefinierten Variablen können verwendet werden, um den Chat zu konfigurieren:
org-ai-default-chat-model (Standard: "gpt-4o-mini" )org-ai-default-max-tokens Wie lange die Antwort dauern sollte. Derzeit darf 4096 nicht überschreiten. Wenn dieser Wert zu klein ist, kann eine Antwort abgeschnitten werden (Standard: NIL)org-ai-default-chat-system-prompt wie das Modell "vorliegt". Dies ist eine Eingabeaufforderung, die vor der Eingabe des Benutzers injiziert wird. (Standardeinstellung: "You are a helpful assistant inside Emacs." )org-ai-default-inject-sys-prompt-for-all-messages um die Systemaufforderung für jede Benutzernachricht zu wiederholen. Manchmal "vergisst" das Modell, wie es vorbereitet wurde. Dies kann dazu beitragen, es zu erinnern. (Standard: nil ) Wenn Sie dem KI -Block eine :image hinzufügen, wird die Eingabeaufforderung für die Bilderzeugung verwendet.
:image - Generieren Sie ein Bild anstelle von Text:size - Größe des zu generierenden Bildes (Standard: 256x256, kann 512x512 oder 1024x1024 sein):n - Die Anzahl der zu generierten Bilder (Standard: 1)Die folgenden benutzerdefinierten Variablen können verwendet werden, um die Bildgenerierung zu konfigurieren:
org-ai-image-directory -Wo speichern die generierten Bilder (Standard: ~/org/org-ai-images/ ) Ähnlich wie dall-e aber verwenden Sie
#+begin_ai :sd-image
<PROMPT>
#+end_ai
Sie können IMG2IMG ausführen, indem Sie Ihr Org-Modus-Bild mit #+Name kennzeichnen und es mit: Image-Ref aus Ihrem Org-AI-Block verweisen.
#+begin_ai :sd-image :image-ref label1
forest, Gogh style
#+end_ai
MX org-AI-SD-Clip erraten die Eingabeaufforderung des vorherigen Bildes auf dem Org-Mode des Clip-Interrogators und speichert es im Kill-Ring.
MX org-AI-SD-Deepdanbooru erraten die Eingabeaufforderung des vorherigen Bildes auf Org-Mode des Deepdanbooru-Verhörers und rettet es im Kill-Ring.
Gehen Sie die unten beschriebenen Einrichtungsschritte durch
Starten Sie dann einen API -Server:
cd ~ /.emacs.d/org-ai/text-generation-webui
conda activate org-ai
python server.py --api --model SOME-MODEL Wenn Sie einen :local Schlüssel zu einem org-ai-Block hinzufügen und Abschlüsse mit Cc Cc anfordern, wird der Block anstelle der OpenAI-API an den lokalen API-Server gesendet. Zum Beispiel:
#+begin_ai :local
...
#+end_ai
Dadurch wird eine Anfrage an org-ai-oobabooga-websocket-url gesendet und die Antwort in den Org-Puffer gestreamt.
Die älteren Fertigstellungsmodelle können auch durch Hinzufügen der Option :completion zum AI -Block aufgefordert werden.
:completion - Verwenden Sie anstatt das ChatGPT -Modell zu verwenden:model - Welches Modell zu verwenden, siehe https://platform.openai.com/docs/models für eine Liste von ModellenDie detaillierte Bedeutung dieser Parameter finden Sie in der OpenAI -API -Dokumentation.
Die folgenden benutzerdefinierten Variablen können verwendet werden, um die Textgenerierung zu konfigurieren:
org-ai-default-completion-model (Standard: "text-davinci-003" ) Sie können auch ein vorhandenes Bild als Eingabe verwenden, um ähnlich aussehende Bilder zu generieren. Der Befehl org-ai-image-variation fordert einen Dateipfad zu einem Bild, einer Größe und einer Anzahl auf und generiert dann so viele Bilder und fügt Links in den aktuellen org-mode -Puffer ein. Die Bilder werden in org-ai-image-directory gespeichert. Siehe die Demo unten.
Weitere Informationen finden Sie in der OpenAI -Dokumentation. Das Eingangsbild muss quadratisch sein und seine Größe muss weniger als 4 MB betragen. Sie benötigen derzeit Curl als Befehlszeilenwerkzeug 1 .
org-ai kann auch außerhalb von org-mode -Puffern verwendet werden. Wenn Sie org-ai-global-mode aktivieren, wird das Präfix Cc Ma an eine Reihe von Befehlen gebunden:
| Befehl | Schlüsselbindend | Beschreibung |
|---|---|---|
org-ai-on-region | Cc Ma r | Stellen Sie eine Frage zum ausgewählten Text oder sagen Sie der KI, dass sie etwas damit anfangen soll. Die Antwort wird in einem Org-Mode-Puffer geöffnet, damit Sie das Gespräch fortsetzen können. Setzen Sie die variable org-ai-on-region-file (EG (setq org-ai-on-region-file (expand-file-name "org-ai-on-region.org" org-directory)) ) assoziieren eine Datei mit diesem Puffer. |
org-ai-summarize | Cc Ma s | Fassen Sie den ausgewählten Text zusammen. |
org-ai-refactor-code | Cc Ma c | Sagen Sie der KI, wie er den ausgewählten Code ändern soll. Mit den Änderungen erscheint ein Diff -Puffer. |
org-ai-on-project | Cc Ma p | Führen Sie die Eingabeaufforderungen aus und ändern / refactor mehrere Dateien gleichzeitig. Wenn nicht verfügbar ist, fällt es in das aktuelle Verzeichnis zurück, wenn nicht. |
org-ai-prompt | Cc Ma P | Fordern Sie den Benutzer für einen Text auf und drucken Sie dann die Antwort der KI in aktuellem Puffer. |
org-ai-switch-chat-model | Cc Ma m | Interaktiv ändern org-ai-default-chat-model |
org-ai-open-account-usage-page | Cc Ma $ | Öffnet https://platform.openai.com/account/usage, um zu sehen, wie viel Geld Sie verbrannt haben. |
org-ai-open-request-buffer | Cc Ma ! | Öffnet den url -Anfragepuffer. Wenn etwas nicht funktioniert, kann es hilfreich sein, einen Blick darauf zu werfen. |
org-ai-talk-input-toggle | Cc Ma t | Aktivieren Sie im Allgemeinen die Spracheingabe für die verschiedenen Eingabeaufforderungsbefehle. |
org-ai-talk-output-toggle | Cc Ma T | Im Allgemeinen die Sprachausgabe aktivieren. |
Mit dem org-ai-on-Project-Puffer können Sie die Befehle in Dateien in einem Projekt ausführen. Alternativ auch nur auf ausgewählten Text in diesen Dateien. Sie können die Readme eines Projekts auswählen und fragen: "Worum geht es?" oder haben Sie Code erklärt. Sie können auch nach Codeänderungen bitten, die einen Diff generieren. Wenn Sie irgendwie wissen, wer nur gegen den Code mit aktivierter Copilot -Aktivierung der Meinung ist, zeigen Sie sie hier.
Durch das Ausführen des Befehls org-ai-on-project wird ein separater Puffer geöffnet, mit dem Sie mehrere Dateien auswählen können (und optional eine Unterregion in einer Datei auswählen) und dann eine Eingabeaufforderung darauf ausführen.

Wenn Sie "Code modifizieren" deaktivieren, ähnelt der Effekt dem Ausführen von org-ai-on-region genau dass die Dateiinhalte alle in der Eingabeaufforderung angezeigt werden.
Wenn "Code modifizieren" aktiviert ist, können Sie die KI bitten, den Code zu ändern oder neu zu refaktor. Standardmäßig ("Anfrage diffs") deaktiviert werden wir auffordern, den neuen Code für alle ausgewählten Dateien/Regionen zu generieren, und Sie können dann einen Diff -pro -Datei anzeigen und entscheiden, ihn anzuwenden oder nicht. Mit aktiven "Anfrage -Diffs" wird die KI gebeten, einen einheitlichen Diff direkt zu erstellen, der dann angewendet werden kann.
Einen benannten Quellblock angegeben
#+name: sayhi
#+begin_src shell
echo "Hello there"
#+end_src
Wir können versuchen, es mit Namen zu verweisen, aber es funktioniert nicht.
#+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
Mit :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
Sie können auch die Expansion der Noweb mit einem org-ai-noweb: yes -Übergang überall in den übergeordneten Überschriften auslösen (Header Args hat Vorrang).
Um zu sehen, worauf Ihr Dokument erweitert wird, wenn Sie an die API gesendet werden, führen Sie org-ai-expand-block aus.
Dies ist ein Hack, aber es funktioniert wirklich gut.
Erstellen Sie einen Block
#+name: identity
#+begin_src emacs-lisp :var x="fill me in"
(format "%s" x)
#+end_src
Wir können es aufrufen und die Noweb -Parameter (die LISP unterstützen) als Code bewerten lassen
#+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 ist auf melpa: https://melpa.org/#/org-ai. Wenn Sie Ihrem Paketarchive Melpa mit hinzugefügt haben
( require 'package )
( add-to-list 'package-archives '( " melpa " . " http://melpa.org/packages/ " ) t )
( package-initialize )Sie können es installieren mit:
( 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 " )))Checkout dieses Repository.
git clone
https://github.com/rksm/org-ai Dann, wenn Sie use-package verwenden:
( use-package org-ai
:ensure t
:load-path ( lambda () " path/to/org-ai " ))
; ; ...rest as above...
oder nur mit 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` snippetsSie können Ihr API -Token entweder direkt in Ihre Konfiguration einstellen:
( setq org-ai-openai-api-token " <ENTER YOUR API TOKEN HERE> " )
Alternativ unterstützt org-ai auth-source zum Abrufen Ihres API-Schlüssels. Sie können ein Geheimnis im Format aufbewahren
machine api.openai.com login org-ai password <your-api-key>
in Ihrer ~/authinfo.gpg -Datei. Wenn dies vorhanden ist, verwendet org-ai diesen Mechanismus, um das Token abzurufen, wenn eine Anfrage gestellt wird. Wenn Sie nicht möchten, dass org-ai den Schlüssel von auth-source abrufen, können Sie org-ai-use-auth-source auf nil festlegen, bevor Sie org-ai laden.
Sie können zu Azure wechseln, indem Sie diese Variablen anpassen, entweder interaktiv mit Mx customize-variable oder durch Hinzufügen zu Ihrer Konfiguration:
( 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 " ) Um die API-Anmeldeinformationen zu speichern, befolgen Sie die obigen Authinfo-Anweisungen, verwenden Sie jedoch org-ai-azure-openai-api-base als Maschinenname.
Eine Liste der verfügbaren Modelle finden Sie in der Dokumentation von Verwirrlichkeit.ai.
Wechseln Sie entweder den Standarddienst in Ihrer Konfiguration:
( setq org-ai-service 'perplexity .ai)
( setq org-ai-default-chat-model " llama-3-sonar-large-32k-online " )oder pro Block:
#+begin_ai :service perplexity.ai :model llama-3-sonar-large-32k-online
[ME]: Tell me fun facts about Emacs.
#+end_ai
Für die Authentifizierung haben Sie einen Eintrag wie machine api.perplexity.ai login org-ai password pplx-*** in Ihrem authinfo.gpg oder festgelegt org-ai-openai-api-token .
HINWEIS: Derzeit wird die Verwirrung. Sie haben ein Beta -Programm für diesen Lauf und ich hoffe sicher, dass dies im Allgemeinen bald verfügbar sein wird.
Ähnlich wie oben. Z.B
#+begin_ai :service anthropic :model claude-3-opus-20240229
[ME]: Tell me fun facts about Emacs.
#+end_ai
Anthropische Modelle sind hier. Derzeit gibt es nur eine API-Version, die über org-ai-anthropic-api-version gesetzt wird. Wenn eine andere Version herauskommt, finden Sie sie hier.
Für den API-Token verwenden Sie machine api.anthropic.com login org-ai password sk-ant-*** in Ihrem authinfo.gpg .
Diese Setup -Schritte sind optional. Wenn Sie keine Spracheingabe / Ausgabe verwenden möchten, können Sie diesen Abschnitt überspringen.
HINWEIS: Meine persönliche Konfiguration für org-AI ist in diesem Kern zu finden. Es enthält ein funktionierendes Whisper -Setup.
Dies wurde an MacOS und Linux getestet. Jemand mit einem Windows -Computer testen Sie dies und lassen Sie mich wissen, was getan werden muss, damit es funktioniert (danke!).
Der Spracheingang verwendet Whisper.el und ffmpeg . Sie müssen das Repo direkt klonen oder direkt verwenden, um es zu installieren.
brew install ffmpeg auf macOS) oder sudo apt install ffmpeg unter Linux.git clone https://github.com/natrys/whisper.el path/to/whisper.elSie sollten jetzt in der Lage sein, es in EMACs zu laden:
( use-package whisper
:load-path " path/to/whisper.el "
:bind ( " M-s-r " . whisper-run))Jetzt laden auch:
( 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 " )Auf macOS müssen Sie zwei weitere Dinge tun:
Sie können den Tccutil -Helfer verwenden:
git clone https://github.com/DocSystem/tccutil
cd tccutil
sudo python ./tccutil.py -p /Applications/Emacs.app -e --microphone Wenn Sie jetzt ffmpeg -f avfoundation -i :0 output.mp3 aus einer EMACS -Shell ausführen, sollte es keine abort trap: 6 Fehler.
(Als Alternative zu tccutil.py siehe die in diesem Thema genannte Methode.)
Sie können die Ausgabe von ffmpeg -f avfoundation -list_devices true -i "" verwenden, um die Audio-Eingangsgeräte aufzulisten und dann Whisper.el zu sagen: (setq whisper--ffmpeg-input-device ":0") . :0 ist der Mikrofonindex, siehe die Ausgabe des obigen Befehls, um eine andere zu verwenden.
Ich habe einen EMACS -Helfer erstellt, mit dem Sie das Mikrofon interaktiv auswählen können. Siehe diesen Kern.
Meine vollständige Rede -fähige Konfiguration sieht dann aus wie:
( 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)))) Auf macOS können Sie anstelle von Whisper auch das eingebaute Siri-Diktat verwenden. Um dies zu aktivieren, gehen Sie zu Preferences -> Keyboard -> Dictation , aktivieren Sie es und stellen Sie eine Abkürzung ein. Der Standard ist ctrl-ctrg.
Der Weg (Defun Whisper-Check-Install-and-Run) wird nicht auf Win10 implementiert (siehe Nr. 66).
Eine Problemumgehung besteht darin, flister.cpp und modellieren manuell und patch zu installieren:
( defun whisper--check-install-and-run ( buffer status )
(whisper--record-audio)) Die Sprachausgabe auf Nicht-MACOS-Systemen stand, um das Greader-Paket zu verwenden, mit dem ESPEAK unter Verwendung der Sprache synthetisiert wird. Sie müssen Greader manuell installieren (z. B. über Mx package-install ). Von diesem Zeitpunkt an sollte es "einfach funktionieren". Sie können es testen, indem Sie einen Text auswählen und Mx org-ai-talk-read-region aufrufen.
Eine API für eine stabile Diffusion kann mit dem stabilen Diffusion-Webui-Projekt gehostet werden. Gehen Sie die Installationsschritte für Ihre Plattform durch und starten Sie dann einen API-Server:
cd path/to/stable-diffusion-webui
./webui.sh --nowebui Dadurch wird standardmäßig einen Server auf http://127.0.0.1:7861 gestartet. Um es mit org-ai zu verwenden, müssen Sie org-ai-sd-endpoint-base festlegen:
( setq org-ai-sd-endpoint-base " http://localhost:7861/sdapi/v1/ " )Wenn Sie einen Server verwenden, der an anderer Stelle gehostet wird, ändern Sie diese URL entsprechend.
Seit Version 0.4 org-ai unterstützt lokale Modelle, die mit Oobabooga/Text-Generation-Webui bedient werden. Sehen Sie sich die Installationsanweisungen an, um es für Ihr System einzurichten.
Hier ist ein Setup-Walk-Through, der auf Ubuntu 22.04 getestet wurde. Es setzt voraus, dass Miniconda oder Anaconda sowie GIT-LFS installiert werden.
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 unterstützt eine Reihe von Sprachmodellen. Normalerweise würden Sie sie vom Umarmungsface installieren. Zum Beispiel zum Installieren des 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 Abhängig von Ihrer Hardware und dem verwendeten Modell müssen Sie möglicherweise die Serverparameter anpassen, z. B. verwenden Sie --load-in-8bit um die Speicherverwendung oder --cpu zu reduzieren, wenn Sie keine geeignete GPU haben.
Sie sollten nun in der Lage sein, das lokale Modell mit org-ai zu verwenden, indem Sie die Option :local Option zum #+begin_ai Block hinzufügen:
#+begin_ai :local
Hello CodeLlama!
#+end_ai
Nein, OpenAI ist am einfachsten eingerichtet (Sie benötigen nur einen API -Schlüssel), aber Sie können auch lokale Modelle verwenden. Sehen Sie sich oben an, wie Sie stabile Diffusion und lokale LLMs mit Oobabooga/Text-Generation-Webui verwenden. Anthropische Claude und Verwirrung.ai werden ebenfalls unterstützt. Bitte eröffnen Sie ein Problem oder eine PR für andere Dienste, die Sie unterstützen möchten. Ich kann langsam antworten, aber ich werde Unterstützung hinzufügen, wenn genügend Interesse besteht.
Das GPTEL -Paket bietet eine alternative Schnittstelle zur OpenAI -Chatgpt -API: https://github.com/karthink/gptel
Wenn Sie dieses Projekt nützlich finden, sollten Sie das Sponsoring in Betracht ziehen. Danke schön!
HINWEIS: Die Implementierung der Bildvariation muss eine Befehlszeile -Curl installieren. Der Grund dafür ist, dass die OpenAI-API mit mehrteiligen/Formdatenanfragen erwartet und die integrierten EMACs- url-retrieve dies nicht unterstützen (zumindest habe ich nicht herausgefunden, wie). Wechsel zu request.el könnte eine bessere Alternative sein. Wenn Sie an einem Beitrag interessiert sind, sind PRs sehr willkommen! ↩