SGPT ( AKA Shell-GPT ) ist ein leistungsstarkes Tool für die Befehlszeilenschnittstelle (CLI), das für die nahtlose Interaktion mit OpenAI-Modellen direkt von Ihrem Terminal aus entwickelt wurde. Führen Sie mühelos Abfragen aus, generieren Sie Shell -Befehle oder Code, erstellen Sie Bilder aus Text und mehr mit einfachen Befehlen. Optimieren Sie Ihren Workflow und verbessern Sie die Produktivität mit diesem leistungsstarken und benutzerfreundlichen CLI-Tool.
Mit Hilfe von SGPT entwickelt.
Dies ist eine GO -Implementierung. Für die ursprüngliche Python-Implementierung besuchen Sie Shell-GPT. Bitte denken Sie daran, wenn Sie Probleme melden.
HINWEIS: Derzeit unter starkem Refactoring für V3, V2 ist jedoch noch beibehalten.
Durch das Anbieten dieser vielseitigen Funktionen dient SGPT als leistungsstarkes Werkzeug, um Ihre allgemeine Produktivität zu verbessern, Ihren Workflow zu optimieren und komplexe Aufgaben zu vereinfachen.
SGPT wurde an Ubuntu LTS -Releases getestet und wird voraussichtlich mit den folgenden Linux -Verteilungen kompatibel sein:
Laden Sie zum Installieren die neueste Version von der Versionsseite herunter und verwenden Sie den für Ihre Verteilung spezifischen Paketmanager.
Führen Sie für Benutzer mit Homebrew als Paketmanager den folgenden Befehl im Terminal aus:
brew install tbckr/tap/sgptFühren Sie diese Befehle für Benutzer mit Scoop als Paketmanager in PowerShell aus:
scoop bucket add tbckr https://github.com/tbckr/scoop-bucket.git
scoop install tbckr/sgptVerwenden Sie diesen Befehl, um SGPT mit Go zu installieren, basierend auf dem Git -Tag:
go install github.com/tbckr/sgpt/v2/cmd/sgpt@latestUm SGPT mit Docker auszuführen, verwenden Sie den folgenden Befehl, um das neueste Bild zu ziehen:
docker pull ghcr.io/tbckr/sgpt:latestBeispiele zur Verwendung von SGPT mit Docker finden Sie hier.
Um SGPT mit Ansible zu installieren, können Sie das folgende Ansible Playbook als Basis verwenden und sich entsprechend anpassen:
---
- hosts : all
tasks :
- name : Get latest sgpt release
uri :
url : " https://api.github.com/repos/tbckr/sgpt/releases/latest "
return_content : yes
register : sgpt_release
- name : Set latest version of sgpt
set_fact :
sgpt_latest_version : " {{ sgpt_release.json.tag_name }} "
- name : Install sgpt for debian based, amd64 systems
ansible.builtin.apt :
deb : https://github.com/tbckr/sgpt/releases/download/{{ sgpt_latest_version }}/sgpt_{{ sgpt_latest_version[1:] }}_amd64.deb
allow_unauthenticated : trueDas Spielbuch kann mit dem folgenden Befehl ausgeführt werden:
ansible-playbook -i < inventory > < playbook > .ymlDie neueste Version des Playbooks finden Sie hier.
Besuchen Sie für andere Plattformen die GitHub -Release -Seite und laden Sie die neueste Version herunter, die für Ihr System geeignet ist.
In der Dokumentation finden Sie detaillierte Verwendungsanweisungen.
Um die OpenAI -API zu verwenden, müssen Sie zunächst einen API -Schlüssel erhalten.
.bashrc oder .zshrc -Datei, um die folgende Exportanweisung hinzuzufügen, um Ihre API -Taste als Wert hinzuzufügen: export OPENAI_API_KEY= " sk-... "OPENAI_API_KEY mit Ihrer API -Taste als Wert einzuschließen.Nachdem Sie diese Schritte ausgeschlossen haben, haben Sie einen OpenAI -API -Schlüssel, mit dem Sie über das SGPT -Tool mit den OpenAI -Modellen interagieren können.
Hinweis: Ihr API -Schlüssel ist sensible Informationen. Teile es niemanden mit jemandem.
Mit SGPT können Sie einfache Fragen stellen und informative Antworten erhalten. Zum Beispiel:
$ sgpt " mass of sun "
The mass of the sun is approximately 1.989 x 10^30 kilograms.Mit Pipes können Sie auch Eingabeaufforderungen an SGPT weitergeben:
$ echo -n " mass of sun " | sgpt
The mass of the sun is approximately 1.989 x 10^30 kilograms. Sie können den Rohrleitungsdaten auch eine weitere Eingabeaufforderung hinzufügen, indem Sie den stdin -Modifikator angeben und dann die Eingabeaufforderung angeben:
$ echo " Say: Hello World! " | sgpt stdin ' Replace every "World" word with "ChatGPT" '
Hello ChatGPT ! Wenn Sie die Fertigstellung in die Befehlszeile streamen möchten, können Sie das Flag --stream -Flag hinzufügen. Dadurch wird die Ausgabe in die Befehlszeile gestreamt, sobald sie erzeugt wird.
SGPT erleichtert zusätzlich die Nutzung der GPT-4O- und GPT-4-Vision-API. Fügen Sie Eingabebilder mit dem Flag -i oder --input hinzu, wobei sowohl URLs als auch lokale Bilder unterstützt werden.
$ sgpt -m " gpt-4o " -i pkg/fs/testdata/marvin.jpg " what can you see on the picture? "
The picture shows a robot with a large, round head and an expressive, downward-slanting triangular eye. The body of the robot is designed with a sleek, somewhat shiny, metallic structure and it is pointing with its right hand. The design appears to be humanoid with distinct arms, legs, and a segmented torso.
$ sgpt -m " gpt-4-vision-preview " -i " https://upload.wikimedia.org/wikipedia/en/c/cb/Marvin_%28HHGG%29.jpg " " what can you see on the picture? "
The image shows a figure resembling a robot with a humanoid form. It has aEs ist auch möglich, URLs und lokale Bilder zu kombinieren:
$ sgpt -m " gpt-4o " -i " https://upload.wikimedia.org/wikipedia/en/c/cb/Marvin_%28HHGG%29.jpg " -i pkg/fs/testdata/marvin.jpg " what is the difference between those two pictures "
The two pictures you provided appear to be identical. There are no visible differences between them. Both show the same character in the same pose with the same lighting and background.Sie können das Standardmodell auch auf GPT-4O- oder GPT-4-Vision festlegen, indem Sie es in der Konfigurationsdatei einstellen.
Wichtig: Die API-Integration von GPT-4O und GPT-4-Vision befindet sich derzeit in Beta und kann sich in Zukunft ändern.
Wenn Sie bereits für die O1 -API Whitelist sind, können Sie es verwenden, indem Sie das Modell mit dem -m -Flag angeben. Sie müssen auch das --stream=false Flag angeben, um die Ausgabe nicht zu streamen, da es von der O1 -API nicht unterstützt wird (dies ist nur erforderlich, wenn Sie die Stream -Option über die Konfigurationsdatei bereitgestellt haben).
Beispiel:
$ sgpt -m " o1-preview " --stream=false " how many rs are in strawberry? "
There are three " r " s in the word " strawberry " . Sie können auch einen Bash -Alias erstellen, um die O1 -API leichter zu verwenden. Fügen Sie beispielsweise die folgende Zeile zu Ihrem .bashrc hinzu:
alias sgpt-o1= " sgpt -m " o1-preview " --stream=false "Dann können Sie den Alias wie diesen verwenden:
$ sgpt-o1 " how many rs are in strawberry? "
There are three " r " s in the word " strawberry " .Wichtig: Die O1 -API unterstützt keine Personas.
SGPT bietet Chat -Funktionen, die interaktive Gespräche mit OpenAI -Modellen ermöglicht. Sie können das --chat -Flag verwenden, um Chat -Sitzungen zu initiieren und zu referenzieren.
Mit den Chat -Funktionen können Sie dynamischer und ansprechender mit OpenAI -Modellen interagieren, um relevante Antworten, Code oder Shell -Befehle durch kontinuierliche Gespräche zu erhalten.
Das folgende Beispiel zeigt, wie die Antworten des Modells für gezieltere Ergebnisse fein abgestimmen können.
ls-files und fordert das Modell auf, "Alle Dateienverzeichnisse auflisten": $ sgpt sh --chat ls-files " list all files directory "
lsls-files fort und bittet an, "nach Namen zu sortieren": $ sgpt sh --chat ls-files " sort by name "
ls | sort Das Modell bietet den entsprechenden Shell -Befehl ls | sort , die alle Dateien in einem Verzeichnis auflistet und sie nach Namen sortiert.
SGPT kann Shell -Befehle basierend auf Ihrer Eingabe erzeugen:
$ sgpt sh " make all files in current directory read only "
chmod -R 444 *Sie können auch einen Shell -Befehl erstellen und ihn direkt ausführen:
$ sgpt sh --execute " make all files in current directory read only "
chmod -R 444 *
Do you want to execute this command ? (Y/n) y Der sh -Befehl ist eine Standardpersönlichkeit, um Shell -Befehle zu generieren. Weitere Informationen zu Personas finden Sie in den Dokumenten.
Derzeit unterstützt SGPT keine interaktiven Shell -Sitzungen. rlwrap kann jedoch verwendet werden, um interaktive Shell-Sitzungen (Quelle) zu aktivieren:
$ rlwrap bash -c 'echo ▶; while read in; do [[ -n "$in" ]] && echo ■ && sgpt --chat chat_name "$in" && echo ▶; done'
▶
mass of sun
■
The mass of the Sun is approximately 1.989 x 10^30 kilograms, or about 330,000 times the mass of Earth. It contains about 99.86% of the total mass of the Solar System and is by far the most dominant object in it. The Sun's mass is composed mostly of hydrogen (~74%) and helium (~24%), with the remaining 2% consisting of heavier elements.
▶
convert to earth masses
■
To convert the mass of the Sun to Earth masses, you can simply divide the Sun's mass by the mass of the Earth. Given that:
A. The Sun's mass is approximately 1.989 x 10^30 kilograms.
B. The Earth's mass is approximately 5.972 x 10^24 kilograms.
Using these values, you can calculate how many Earth masses the Sun is:
(1.989 x 10^30 kg) / (5.972 x 10^24 kg/Earth) = approximately 333,000 Earth masses
So the Sun is about 333,000 times more massive than the Earth.
▶
Ein Skript mit automatisierter Sitzungsname -Generierung und Benachrichtigungsunterstützung könnte so aussehen:
#! /usr/bin/env bash
shopt -s -o errexit
shopt -s -o pipefail
shopt -s -o nounset
shopt -s inherit_errexit
export CHAT= " $( date ' +%Y%m%d%H%M%S%3N ' ) _ $( tr -dc ' A-Za-z ' < /dev/urandom | head -c 3 ) "
rlwrap bash -c ' echo ▶; while read in; do [[ -n "$in" ]] && echo ■ && sgpt --chat "$CHAT" "$in" && echo ▶ && notify-send --urgency=low ; done 'Vielen Dank an @ilya-bystrov für die Erstellung dieser Lösung.
SGPT kann Code basierend auf bestimmten Anweisungen effizient generieren. Um das klassische Fizzbuzz -Problem mit Python zu lösen, geben Sie beispielsweise die Eingabeaufforderung wie folgt an:
$ sgpt code " Solve classic fizz buzz problem using Python "
for i in range(1, 101):
if i % 3 == 0 and i % 5 == 0:
print( " FizzBuzz " )
elif i % 3 == 0:
print( " Fizz " )
elif i % 5 == 0:
print( " Buzz " )
else:
print(i)SGPT gibt den entsprechenden Python -Code zurück, um das Fizzbuzz -Problem anzugehen.
Der code -Befehl ist eine Standardpersönlichkeit, um Code zu generieren. Weitere Informationen zu Personas finden Sie in den Dokumenten.
SGPT kann durch Erstellen von Bash -Aliase und -Funktionen weiter in Ihren Workflow integriert werden. Auf diese Weise können Sie gemeinsame Aufgaben automatisieren und die Effizienz verbessern, wenn Sie mit OpenAI -Modellen und Shell -Befehlen arbeiten.
In der Tat können Sie SGPT so konfigurieren, dass Ihre Git -Commit -Nachricht mit der folgenden Bash -Funktion generiert wird:
gsum () {
commit_message= " $( sgpt txt " Generate git commit message, my changes: $( git diff ) " ) "
printf " %sn " " $commit_message "
read -rp " Do you want to commit your changes with this commit message? [y/N] " response
if [[ $response =~ ^[Yy]$ ]] ; then
git add . && git commit -m " $commit_message "
else
echo " Commit cancelled. "
fi
}Beispielsweise würde die Commit -Nachricht für diese Beschreibung und Bash -Funktion wie folgt angezeigt:
$ gsum
feat: Add bash function to generate git commit messages
Added `gsum () ` function to ` .bash_aliases ` that generates a commit message using sgpt to summarize git changes.
The user is prompted to confirm the commit message before executing ` git add . & & git commit -m " <commit_message> " ` .
This function is meant to automate the commit process and increase productivity in daily work.
Additionally, updated the README.md file to include information about the new bash function and added a section to
showcase useful bash aliases and functions found in ` .bash_aliases ` .
Do you want to commit your changes with this commit message ? [y/N] y
[main d6db80a] feat: Add bash function to generate git commit messages
2 files changed, 48 insertions(+)
create mode 100644 .bash_aliasesEine Zusammenstellung von nützlichen Bash -Aliase und -Funktionen, einschließlich einer aktualisierten GSUM -Funktion, ist in .bashrc verfügbar.
Inspiriert von Shell-GPT.