O SGPT ( também conhecido como Shell-GPT ) é uma poderosa ferramenta de interface de linha de comando (CLI) projetada para interação perfeita com os modelos OpenAI diretamente do seu terminal. Execute consultas sem esforço, gerar comandos ou código do shell, criar imagens do texto e muito mais, usando comandos simples. Simplifique seu fluxo de trabalho e aprimore a produtividade com esta ferramenta CLI poderosa e fácil de usar.
Desenvolvido com a ajuda do SGPT.
Esta é uma implementação do Go. Para a implementação original do Python, visite Shell-GPT. Lembre -se disso ao relatar problemas.
Nota: Atualmente, sob refatoração pesada para V3, mas V2 ainda é mantido.
Ao oferecer esses recursos versáteis, o SGPT serve como uma ferramenta poderosa para aprimorar sua produtividade geral, otimizar seu fluxo de trabalho e simplificar tarefas complexas.
O SGPT foi testado nos lançamentos do Ubuntu LTS e deve ser compatível com as seguintes distribuições Linux:
Para instalar, faça o download da versão mais recente na página de lançamento e use o gerenciador de pacotes específico para sua distribuição.
Para usuários com homebrew como gerente de pacotes, execute o seguinte comando no terminal:
brew install tbckr/tap/sgptPara usuários com SCOOP como gerente de pacotes, execute esses comandos no PowerShell:
scoop bucket add tbckr https://github.com/tbckr/scoop-bucket.git
scoop install tbckr/sgptPara instalar o SGPT com GO, com base na tag git, use este comando:
go install github.com/tbckr/sgpt/v2/cmd/sgpt@latestPara executar o SGPT com o Docker, use o seguinte comando para puxar a imagem mais recente:
docker pull ghcr.io/tbckr/sgpt:latestExemplos sobre como usar o SGPT com o Docker podem ser encontrados aqui.
Para instalar o SGPT com Ansible, você pode usar o seguinte manual Ansible como sua base e se adaptar de acordo:
---
- 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 : trueO manual pode ser executado com o seguinte comando:
ansible-playbook -i < inventory > < playbook > .ymlA versão mais recente do manual pode ser encontrada aqui.
Para outras plataformas, visite a página de lançamento do Github e faça o download da versão mais recente adequada para o seu sistema.
Consulte a documentação para obter instruções de uso detalhadas.
Para usar a API OpenAI, você deve primeiro obter uma chave da API.
.bashrc ou .zshrc para incluir a seguinte declaração de exportação adicionando sua chave da API como o valor: export OPENAI_API_KEY= " sk-... "OPENAI_API_KEY com sua tecla API como o valor.Depois de concluir essas etapas, você terá uma chave de API do OpenAI que pode ser usada para interagir com os modelos OpenAI através da ferramenta SGPT.
NOTA: Sua chave da API é uma informação sensível. Não compartilhe com ninguém.
O SGPT permite fazer perguntas simples e receber respostas informativas. Por exemplo:
$ sgpt " mass of sun "
The mass of the sun is approximately 1.989 x 10^30 kilograms.Você também pode passar avisos para o SGPT usando tubos:
$ echo -n " mass of sun " | sgpt
The mass of the sun is approximately 1.989 x 10^30 kilograms. Você também pode adicionar outro prompt aos dados canalizados, especificando o modificador stdin e especificando o prompt:
$ echo " Say: Hello World! " | sgpt stdin ' Replace every "World" word with "ChatGPT" '
Hello ChatGPT ! Se você deseja transmitir a conclusão para a linha de comando, poderá adicionar o sinalizador --stream . Isso transmitirá a saída para a linha de comando como é gerada.
O SGPT também facilita a utilização da API de visão GPT-4O e GPT-4. Inclua imagens de entrada usando o sinalizador -i ou --input , suportando URLs e imagens locais.
$ 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 aTambém é possível combinar URLs e imagens locais:
$ 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.Você também pode definir o modelo padrão para a visão GPT-4O ou GPT-4, configurando-o no arquivo de configuração.
Importante: A integração da API GPT-4O e GPT-4-Vision está atualmente na versão beta e pode mudar no futuro.
Se você já está na lista de permissões da API O1, poderá usá -la especificando o modelo com o sinalizador -m . Você também deve fornecer o sinalizador --stream=false para não transmitir a saída, pois não é suportado pela API O1 (isso é necessário apenas, se você forneceu a opção de fluxo através do arquivo de configuração).
Exemplo:
$ sgpt -m " o1-preview " --stream=false " how many rs are in strawberry? "
There are three " r " s in the word " strawberry " . Você também pode criar um alias de bash para usar a API O1 com mais facilidade. Por exemplo, adicione a seguinte linha ao seu .bashrc :
alias sgpt-o1= " sgpt -m " o1-preview " --stream=false "Então você pode usar o pseom como este:
$ sgpt-o1 " how many rs are in strawberry? "
There are three " r " s in the word " strawberry " .IMPORTANTE: A API O1 não suporta personas.
O SGPT fornece funcionalidade de bate -papo que permite conversas interativas com os modelos OpenAI. Você pode usar o sinalizador --chat para iniciar e referenciar sessões de bate -papo.
Os recursos de bate -papo permitem que você interaja com os modelos OpenAI de uma maneira mais dinâmica e envolvente, facilitando a obtenção de comandos relevantes de respostas, código ou shell por meio de conversas contínuas.
O exemplo abaixo demonstra como ajustar as respostas do modelo para obter resultados mais direcionados.
ls-files e pede ao modelo para "listar todos os arquivos do diretório de arquivos": $ sgpt sh --chat ls-files " list all files directory "
lsls-files e solicita "classificar pelo nome": $ sgpt sh --chat ls-files " sort by name "
ls | sort O modelo fornece o comando shell apropriado ls | sort , que lista todos os arquivos em um diretório e os classifica pelo nome.
O SGPT pode gerar comandos de shell com base na sua entrada:
$ sgpt sh " make all files in current directory read only "
chmod -R 444 *Você também pode gerar um comando Shell e executá -lo diretamente:
$ sgpt sh --execute " make all files in current directory read only "
chmod -R 444 *
Do you want to execute this command ? (Y/n) y O comando sh é uma persona padrão para gerar comandos de shell. Para mais informações sobre personas, consulte os documentos.
Atualmente, o SGPT não suporta sessões de shell interativas. No entanto, rlwrap pode ser usado para ativar sessões de shell do tipo interativo (fonte):
$ 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.
▶
Um script com geração automatizada de nomes da sessão e suporte de notificação pode ser assim:
#! /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 'Obrigado a @Ilya-Bystrov por encontrar esta solução.
O SGPT pode gerar código com eficiência com base nas instruções fornecidas. Por exemplo, para resolver o problema clássico do FizzBuzz usando o Python, basta fornecer o prompt da seguinte maneira:
$ 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)O SGPT retornará o código Python apropriado para resolver o problema do FizzBuzz.
O comando code é uma persona padrão para gerar código. Para mais informações sobre personas, consulte os documentos.
O SGPT pode ser mais integrado ao seu fluxo de trabalho, criando aliases e funções de bash. Isso permite automatizar tarefas comuns e melhorar a eficiência ao trabalhar com modelos OpenAI e comandos de shell.
De fato, você pode configurar o SGPT para gerar sua mensagem de commit Git usando a seguinte função Bash:
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
}Por exemplo, a mensagem de comprometimento para esta descrição e função BASH apareceria da seguinte maneira:
$ 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_aliasesUma compilação de aliases e funções benéficos, incluindo uma função GSUM atualizada, está disponível no .bashrc.
Inspirado por Shell-GPT.