ShellGPT: 터미널에서 사용하는 강력한 AI 도구, Github Copilot CLI의 대체제

반응형

터미널에서 AI 도구를 활용하고 싶으신가요?

ShellGPT는 그런 여러분을 위한 강력한 도구입니다.

 

 

ShellGPT란?

ShellGPT는 터미널에서 바로 사용할 수 있는 강력한 AI 도구입니다. 이 도구는 셸 명령, 코드 스니펫, 문서 생성을 간소화하여 더 이상 귀찮게 Google 검색을 이용할 필요가 없습니다. Linux, macOS, Windows를 지원하며 PowerShell, CMD, Bash, Zsh 등과 같은 모든 주요 셸과 호환됩니다.

 

이 글에서는 ShellGPT를 설치하고 사용하는 방법, Ollama와 환경 변수 설정 방법, 그리고 ShellGPT의 다양한 기능을 소개합니다.

 

Shell GPT 설치하기

ShellGPT를 설치하려면 다음 명령어를 실행하세요:

pip install shell-gpt

 

기본적으로 ShellGPT는 OpenAI의 API 및 GPT-4 모델을 사용합니다. API 키가 필요하며 여기에서 생성할 수 있습니다. 키를 입력하라는 메시지가 표시되면 ~/.config/shell_gpt/.sgptrc에 저장됩니다. OpenAI API는 유료입니다. 자세한 내용은 OpenAI 요금제를 참조하세요.

무료로 제공되는 로컬 호스팅 오픈 소스 모델을 사용할 수도 있습니다. 로컬 모델을 사용하려면 Ollama와 같은 자체 LLM 백엔드 서버를 실행해야 하며, Ollama 설정 방법은 아래 Ollama 가이드를 참조하세요.

 

ShellGPT를 처음 실행하는 경우 OpenAI API 키를 입력하라는 메시지가 표시됩니다. 이 단계를 건너뛰려면 임의의 문자열을 입력하면 됩니다.

 

Ollama 설정하기

설치하기

Ollama 다운로드 페이지에서 올라마를 설치하고 올라마 앱을 실행합니다.

 

모델 설치 및 서버 시작

Llama3, Phi3, Aya, Mistral 등 다양한 언어 모델을 Ollama에 설치할 수 있습니다. llama3를 사용하는 것이 좋습니다. 가장 가벼운 모델을 원한다면 phi3를 추천합니다. 

 

모델을 설치하려면 다음 명령을 실행하세요:

ollama pull llama3

모델 다운로드 및 설치에는 시간이 소요될 수 있습니다.

 

모델이 설치되면 API 서버를 시작할 수 있습니다:

ollama serve

 

올라마 백엔드가 실행 중이고 액세스할 수 있는지 확인합니다:

ollama run llama3 " 안녕하세요."
# 안녕하세요! 어떻게 도와드릴까요?

 

ShellGPT 구성

이제 Ollama 백엔드가 실행되면 이를 사용하도록 ShellGPT를 구성해야 합니다. 로컬 LLM 백엔드와 통신하기 위해 ShellGPT는 LiteLLM을 활용합니다. 설치하려면 다음 명령을 실행하세요:

pip install "shell-gpt[litellm]"

 

이제 텍스트 편집기에서 ~/.config/shell_gpt/.sgptrc 파일을 열고 아래와 같이 설정을 변경합니다.

vi ~/.config/shell_gpt/.sgptrc
  • DEFAULT_MODELollama/aya로 변경합니다.
  • OPENAI_USE_FUNCTIONSfalse로 변경합니다.
  • USE_LITELLMtrue로 변경합니다.
  • OPENAI_API_KEY에는 아무값이나 입력합니다.

변경된 파일 내용은 다음과 같습니다.

CHAT_CACHE_PATH=/var/folders/z8/xfx3ln6x16x1fy6q7kpf1tzh0000gn/T/chat_cache
CACHE_PATH=/var/folders/z8/xfx3ln6x16x1fy6q7kpf1tzh0000gn/T/cache
CHAT_CACHE_LENGTH=100
CACHE_LENGTH=100
REQUEST_TIMEOUT=60
DEFAULT_MODEL=ollama/llama3
DEFAULT_COLOR=magenta
ROLE_STORAGE_PATH=/Users/anpigon/.config/shell_gpt/roles
DEFAULT_EXECUTE_SHELL_CMD=false
DISABLE_STREAMING=false
CODE_THEME=dracula
OPENAI_FUNCTIONS_PATH=/Users/anpigon/.config/shell_gpt/functions
OPENAI_USE_FUNCTIONS=false
SHOW_FUNCTIONS_OUTPUT=false
API_BASE_URL=default
PRETTIFY_MARKDOWN=true
USE_LITELLM=true
OPENAI_API_KEY=ollama

 

이제 Ollama를 이용하여 ShellGPT를 사용할 수 있습니다.

sgpt "당신은 누구인가요"
# I am ShellGPT, an AI assistant designed to help with programming and system administration tasks. I am connected to a Darwin/macOS 14.4.1 system and am using the zsh shell for command-line interactions. I can provide concise responses and offer assistance with various tasks, from basic troubleshooting to more complex system administration duties.

 

DEFAULT_MODEL 이 아닌 다른 모델을 사용하고 싶다면 아래와 같이 실행합니다.

sgpt --model ollama/phi3 "당신은 누구인가요"
# I'm ShellGPT, your OS and shell assistant...

 

ShellGPT 사용 방법

ShellGPT는 정보를 빠르게 분석하고 검색할 수 있도록 설계되었습니다. 기술 문서부터 일반적인 지식에 이르기까지 다양한 질문에 유용한 답변을 제공합니다.

sgpt "피보나치 수열이란 무엇인가요?"
# The Fibonacci sequence is a series of numbers where each number ...

 

ShellGPT는 stdin과 명령줄 인수 모두에서 프롬프트를 받을 수 있습니다. 터미널을 통해 파이핑 입력을 선호하든, 인자로 직접 지정하든 sgpt명령어를 사용하면 됩니다. 예를 들어, diff를 기반으로 git 커밋 메시지를 쉽게 생성할 수 있습니다:

git diff | sgpt "내 변경 사항에 대한 git 커밋 메시지 생성"
# Added main feature details into README.md

 

프롬프트와 함께 stdin을 사용하여 다양한 소스의 로그를 전달하여 분석할 수 있습니다. 예를 들어, 로그를 빠르게 분석하고 오류를 식별하며 가능한 해결책을 제안하는 데 사용할 수 있습니다:

docker logs -n 20 my_app | sgpt "로그 확인, 오류 찾기, 가능한 솔루션 제공"
Error Detected: Connection timeout at line 7.
Possible Solution: Check network connectivity and firewall settings.
Error Detected: Memory allocation failed at line 12.
Possible Solution: Consider increasing memory allocation or optimizing application memory usage.

 

모든 종류의 리디렉션 연산자를 사용하여 입력을 전달할 수도 있습니다:

sgpt "summarise" < document.txt
# The document discusses the impact...
sgpt << EOF
What is the best way to lear Golang?
Provide simple hello world example.
EOF
# The best way to learn Golang...
sgpt <<< "What is the best way to learn shell redirects?"
# The best way to learn shell redirects is through...

 

셸 명령어 생성 및 실행

--shell 또는 -s 옵션을 사용하면 필요한 셸 명령어를 터미널에서 바로 생성하고 실행할 수 있습니다.

sgpt --shell "find all json files in current folder"
# find . -type f -name "*.json"
# [E]xecute, [D]escribe, [A]bort: e

 

ShellGPT는 사용 중인 운영 체제와 $SHELL을 인식하여, 특정 시스템에 맞는 셸 명령어를 제공합니다. 예를 들어, 시스템 업데이트를 요청하면, 사용 중인 운영 체제에 기반한 명령어를 반환합니다. 다음은 macOS를 사용하는 예시입니다:

sgpt -s "시스템 업데이트"
# sudo softwareupdate -i -a
# [E]xecute, [D]escribe, [A]bort: e

 

같은 프롬프트를 Ubuntu에서 사용하면 다른 제안을 생성합니다:

sgpt -s "시스템 업데이트"
# sudo apt update && sudo apt upgrade -y
# [E]xecute, [D]escribe, [A]bort: e

 

Docker 사용 예:

sgpt -s "start nginx container, mount ./index.html"
# docker run -d -p 80:80 -v $(pwd)/index.html:/usr/share/nginx/html/index.html nginx
# [E]xecute, [D]escribe, [A]bort: e

 

파이프를 사용하여 입력을 sgpt에 전달하고 셸 명령어 생성:

sgpt -s "POST localhost with" < data.json
# curl -X POST -H "Content-Type: application/json" -d '{"a": 1, "b": 2}' http://localhost
# [E]xecute, [D]escribe, [A]bort: e

 

셸 매직을 사용하여 프롬프트에 파일 이름을 동적으로 전달:

ls
# 1.mp4 2.mp4 3.mp4
sgpt -s "ffmpeg combine $(ls -m) into one video file without audio."
# ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "[0:v] [1:v] [2:v] concat=n=3:v=1 [v]" -map "[v]" out.mp4
# [E]xecute, [D]escribe, [A]bort: e

 

--no-interaction 옵션을 사용하여 생성된 셸 명령어를 파이프를 통해 다른 명령어로 전달:

--no-interaction 옵션은 인터랙티브 모드를 비활성화하고 생성된 명령어를 stdout에 출력합니다. 아래 예시에서는 pbcopy를 사용하여 생성된 명령어를 클립보드에 복사합니다:

sgpt -s "find all json files in current folder" --no-interaction | pbcopy

 

셸 통합

sgpt 셸 완성 기능을 터미널에서 직접 사용할 수 있습니다. 프롬프트와 인수를 입력할 필요 없이 sgpt를 사용할 수 있으며, Bash와 ZSH 셸 모두에서 핫키를 사용하여 ShellGPT를 호출할 수 있습니다. 이 기능은 sgpt 완성을 터미널 버퍼(입력 라인)에 직접 넣어주어 제안된 명령어를 즉시 편집할 수 있게 합니다.

 

셸 통합을 설치하려면 sgpt --install-integration 명령어를 실행하고 터미널을 재시작하세요. 이 명령어는 .bashrc 또는 .zshrc 파일에 몇 줄을 추가하여 기본적으로 Ctrl+l 키를 사용하여 ShellGPT를 호출할 수 있도록 설정해줍니다. 이제 Ctrl+l을 누르면 현재 입력 라인(버퍼)이 제안된 명령어로 대체됩니다. 그런 다음 이를 편집하고 Enter를 눌러 실행할 수 있습니다.

 

코드 생성하기

--code 또는 -c 매개변수를 사용하여 순수 코드 출력을 요청할 수 있습니다.

sgpt --code "파이썬을 사용하여 fizz buzz 문제 해결"
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 --code "파이썬을 사용하여 고전적인 fizz buzz 문제 해결하기" > fizz_buzz.py
python fizz_buzz.py
# 1
# 2
# Fizz
# 4
# Buzz
# ...

 

파이프를 사용하여 입력 코드를 전달하고 수정된 코드를 받을 수 있습니다.

cat fizz_buzz.py | sgpt --code "코드의 각 줄에 대한 주석 생성"
# 1부터 100까지의 숫자를 반복
for i in range(1, 101):
    # 숫자가 3과 5로 나누어 떨어지는지 확인
    if i % 3 == 0 and i % 5 == 0:
        # 숫자가 3과 5로 나누어 떨어지면 "FizzBuzz" 출력
        print("FizzBuzz")
    # 숫자가 3으로 나누어 떨어지는지 확인
    elif i % 3 == 0:
        # 숫자가 3으로 나누어 떨어지면 "Fizz" 출력
        print("Fizz")
    # 숫자가 5로 나누어 떨어지는지 확인
    elif i % 5 == 0:
        # 숫자가 5로 나누어 떨어지면 "Buzz" 출력
        print("Buzz")
    # 숫자가 3이나 5로 나누어 떨어지지 않으면 숫자 자체를 출력
    else:
        print(i)

 

채팅 모드

ShellGPT는 각 LLM 완료 요청과 함께 대화형 대화를 생성합니다. 대화는 하나씩(채팅 모드) 또는 REPL 루프(REPL 모드)에서 상호작용적으로 발전할 수 있습니다. 두 가지 방법 모두 chat session이라는 기본 객체에 의존하며, 이 세션은 configuration file의 CHAT_CACHE_PATH에 위치합니다.

 

대화를 시작하려면 고유한 세션 이름과 프롬프트를 사용하여 --chat 옵션을 사용합니다.

sgpt --chat conversation_1 "please remember my favorite number: 4"
# I will remember that your favorite number is 4.
sgpt --chat conversation_1 "what would be my favorite number + 4?"
# Your favorite number is 4, so if we add 4 to it, the result would be 8.

 

채팅 세션을 사용하여 추가 세부 정보를 제공함으로써 GPT 제안을 반복적으로 개선할 수 있습니다. --code 또는 --shell 옵션을 사용하여 --chat을 시작할 수도 있습니다:

sgpt --chat conversation_2 --code "make a request to localhost using python"
import requests

response = requests.get('http://localhost')
print(response.text)

 

요청에 캐싱을 추가하도록 LLM에 요청해 봅시다:

sgpt --chat conversation_2 --code "add caching"
import requests
from cachecontrol import CacheControl

sess = requests.session()
cached_sess = CacheControl(sess)

response = cached_sess.get('http://localhost')
print(response.text)

 

셸 명령어에도 동일하게 적용됩니다:

sgpt --chat conversation_3 --shell "what is in current folder"
# ls
sgpt --chat conversation_3 "Sort by name"
# ls | sort
sgpt --chat conversation_3 "Concatenate them using FFMPEG"
# ffmpeg -i "concat:$(ls | sort | tr '\n' '|')" -codec copy output.mp4
sgpt --chat conversation_3 "Convert the resulting file into an MP3"
# ffmpeg -i output.mp4 -vn -acodec libmp3lame -ac 2 -ab 160k -ar 48000 final_output.mp3

 

대화 모드에서 모든 세션을 나열하려면 --list-chats 또는 -lc 옵션을 사용하세요:

sgpt --list-chats
# .../shell_gpt/chat_cache/conversation_1  
# .../shell_gpt/chat_cache/conversation_2

 

특정 대화와 관련된 모든 메시지를 표시하려면 세션 이름을 사용하여 --show-chat 옵션을 사용하세요:

sgpt --show-chat conversation_1
# user: please remember my favorite number: 4
# assistant: I will remember that your favorite number is 4.
# user: what would be my favorite number + 4?
# assistant: Your favorite number is 4, so if we add 4 to it, the result would be 8.

 

REPL 모드

REPL (read–eval–print loop) 모드는 GPT 모델과 상호작용하며 채팅할 수 있는 매우 유용한 모드입니다. REPL 모드에서 채팅 세션을 시작하려면 고유한 세션 이름과 함께 --repl 옵션을 사용하세요. 임시 REPL 세션을 시작하려면 세션 이름으로 "temp"를 사용할 수도 있습니다. --chat--repl은 동일한 기본 객체를 사용하므로, --chat으로 채팅 세션을 시작한 후 --repl로 전환하여 REPL 모드에서 대화를 계속할 수 있습니다.

sgpt --repl temp
Entering REPL mode, press Ctrl+C to exit.
>>> What is REPL?
REPL stands for Read-Eval-Print Loop. It is a programming environment ...
>>> How can I use Python with REPL?
To use Python with REPL, you can simply open a terminal or command prompt ...

 

REPL 모드는 --shell--code 옵션과 함께 사용할 수 있어, 상호작용적인 셸 명령어와 코드 생성을 매우 편리하게 해줍니다:

sgpt --repl temp --shell
Entering shell REPL mode, type [e] to execute commands or press Ctrl+C to exit.
>>> What is in current folder?
ls
>>> Show file sizes
ls -lh
>>> Sort them by file sizes
ls -lhS
>>> e (enter just e to execute commands, or d to describe them)

 

여러 줄의 프롬프트를 제공하려면 삼중 인용부호 """를 사용하세요:

sgpt --repl temp
Entering REPL mode, press Ctrl+C to exit.
>>> """
... Explain following code:
... import random
... print(random.randint(1, 10))
... """
It is a Python script that uses the random module to generate and print a random integer.

 

초기 프롬프트를 인수나 표준 입력(stdin)으로 전달하여 REPL 모드에 진입할 수도 있습니다:

sgpt --repl temp < my_app.py
Entering REPL mode, press Ctrl+C to exit.
──────────────────────────────────── Input ────────────────────────────────────
name = input("What is your name?")
print(f"Hello {name}")
───────────────────────────────────────────────────────────────────────────────
>>> What is this code about?
The snippet of code you've provided is written in Python. It prompts the user...
>>> Follow up questions...

 

함수 호출

Function calls은 OpenAI가 제공하는 강력한 기능입니다. 이를 통해 LLM이 시스템 내에서 함수를 실행할 수 있으며, 다양한 작업을 수행하는 데 사용할 수 있습니다. 기본 함수를 설치하려면 다음 명령어를 실행하세요:

sgpt --install-functions

 

ShellGPT는 함수를 정의하고 사용하는 편리한 방법을 제공합니다. 사용자 정의 함수를 만들려면 ~/.config/shell_gpt/functions 디렉토리로 이동하여 함수 이름으로 새로운 .py 파일을 생성하세요. 이 파일 내에서 다음 구문을 사용하여 함수를 정의할 수 있습니다:

# execute_shell_command.py
import subprocess
from pydantic import Field
from instructor import OpenAISchema

class Function(OpenAISchema):
    """
    쉘 명령을 실행하고 결과를 반환합니다.
    """
    shell_command: str = Field(..., example="ls -la", descriptions="실행할 쉘 명령어.")

    class Config:
        title = "execute_shell_command"

    @classmethod
    def execute(cls, shell_command: str) -> str:
        result = subprocess.run(shell_command.split(), capture_output=True, text=True)
        return f"종료 코드: {result.returncode}, 출력:\n{result.stdout}"

 

클래스 내부의 docstring 주석은 함수에 대한 설명으로 OpenAI API에 전달되며, title 속성과 매개변수 설명도 함께 전달됩니다. execute 함수는 LLM이 함수를 사용하기로 결정하면 호출됩니다. 이 경우, 시스템에서 임의의 쉘 명령을 실행할 수 있도록 허용합니다. 명령의 출력을 반환하므로, LLM은 이를 분석하고 프롬프트에 적합한지 결정할 수 있습니다. 다음은 LLM이 함수를 실행하는 예입니다:

sgpt "What are the files in /tmp folder?"
# @FunctionCall execute_shell_command(shell_command="ls /tmp")
# /tmp 폴더에는 다음 파일과 디렉토리가 있습니다:
# test.txt
# test.json

 

만약 어떤 이유로 함수(execute_shell_command)가 오류를 반환하면, LLM은 출력에 기반하여 작업을 수행하려고 시도할 수 있습니다. 예를 들어, 시스템에 jq가 설치되어 있지 않은 상태에서 LLM에게 JSON 파일을 파싱하라고 요청하면:

sgpt "parse /tmp/test.json file using jq and return only email value"
# @FunctionCall execute_shell_command(shell_command="jq -r '.email' /tmp/test.json")
# 시스템에 jq가 설치되어 있지 않은 것 같습니다. brew를 사용하여 설치해 보겠습니다.
# @FunctionCall execute_shell_command(shell_command="brew install jq")
# jq가 성공적으로 설치되었습니다. 파일을 다시 파싱해 보겠습니다.
# @FunctionCall execute_shell_command(shell_command="jq -r '.email' /tmp/test.json")
# /tmp/test.json 파일의 이메일 값은 johndoe@example입니다.

 

프롬프트에서 여러 함수 호출을 체인으로 연결하는 것도 가능합니다:

sgpt "Play music and open hacker news"
# @FunctionCall play_music()
# @FunctionCall open_url(url="https://news.ycombinator.com")
# 음악이 재생 중이며, Hacker News가 브라우저에서 열렸습니다. 즐기세요!

 

이것은 함수 호출을 사용하는 간단한 예에 불과합니다. 이 기능은 다양한 복잡한 작업을 수행하는 데 사용할 수 있는 매우 강력한 기능입니다. GitHub Discussions의 카테고리에서 함수 공유 및 논의를 위한 전용 공간을 마련해 두었습니다. LLM이 파괴적인 명령을 실행할 수 있으므로, 사용 시 항상 주의하시기 바랍니다❗️

 

역할

ShellGPT는 사용자 정의 역할을 생성할 수 있는 기능을 제공하여 코드 생성, 쉘 명령어 실행 또는 특정 요구 사항을 충족할 수 있습니다. 새로운 역할을 생성하려면 --create-role 옵션과 역할 이름을 사용하세요. 역할에 대한 설명과 기타 세부 정보를 입력하라는 메시지가 표시됩니다. 이는 ~/.config/shell_gpt/roles 디렉토리에 역할 이름으로 JSON 파일을 생성합니다. 이 디렉토리 내에서 shell, code, default와 같은 기본 sgpt 역할도 편집할 수 있습니다. 사용 가능한 모든 역할을 나열하려면 --list-roles 옵션을 사용하고, 특정 역할의 세부 정보를 표시하려면 --show-role 옵션을 사용하세요. 다음은 사용자 정의 역할의 예입니다:

sgpt --create-role json_generator
# 역할 설명 입력: 유효한 JSON만 응답으로 제공하세요.
sgpt --role json_generator "random: user, password, email, address"
{
  "user": "JohnDoe",
  "password": "p@ssw0rd",
  "email": "johndoe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  }
}

역할 설명에 "APPLY MARKDOWN"이라는 단어가 포함되어 있으면(대소문자 구분), 채팅이 마크다운 형식을 사용하여 표시됩니다.

 

요청 캐시

--cache(기본값) 및 --no-cache 옵션을 사용하여 캐시를 제어할 수 있습니다. 이 캐시는 모든 sgpt 요청에 대해 OpenAI API에 적용됩니다:

sgpt "what are the colors of a rainbow"
# 무지개의 색상은 빨강, 주황, 노랑, 초록, 파랑, 남색, 보라입니다.

다음 번에 동일한 쿼리를 입력하면 로컬 캐시에서 즉시 결과를 얻을 수 있습니다. 이전 요청에서 --temperature(또는 --top-probability)를 제공하지 않았기 때문에 sgpt "what are the colors of a rainbow" --temperature 0.5는 새로운 요청을 만듭니다.

 

이것은 OpenAI GPT 모델을 사용하여 할 수 있는 몇 가지 예에 불과하며, 특정 사용 사례에 유용하게 사용할 수 있을 것입니다.

 

런타임 구성 파일

런타임 구성 파일 ~/.config/shell_gpt/.sgptrc에서 몇 가지 매개변수를 설정할 수 있습니다:

# API 키, OPENAI_API_KEY 환경 변수를 정의하는 것도 가능합니다.
OPENAI_API_KEY=your_api_key
# 백엔드 서버의 기본 URL. "default"로 설정하면 --model에 따라 URL이 결정됩니다.
API_BASE_URL=default
# 채팅 세션당 최대 캐시 메시지 수.
CHAT_CACHE_LENGTH=100
# 채팅 캐시 폴더.
CHAT_CACHE_PATH=/tmp/shell_gpt/chat_cache
# 요청 캐시 길이(수량).
CACHE_LENGTH=100
# 요청 캐시 폴더.
CACHE_PATH=/tmp/shell_gpt/cache
# 요청 타임아웃 시간(초).
REQUEST_TIMEOUT=60
# 기본으로 사용할 OpenAI 모델.
DEFAULT_MODEL=gpt-3.5-turbo
# 쉘 및 코드 완성의 기본 색상.
DEFAULT_COLOR=magenta
# --shell 모드일 때, 입력이 없을 경우 기본으로 "Y"를 선택.
DEFAULT_EXECUTE_SHELL_CMD=false
# 응답 스트리밍 비활성화
DISABLE_STREAMING=false
# 마크다운을 보기 위한 pygment 테마 (기본/역할 설명).
CODE_THEME=default
# 함수가 있는 디렉토리 경로.
OPENAI_FUNCTIONS_PATH=/Users/user/.config/shell_gpt/functions
# LLM이 함수를 사용할 때 함수의 출력을 출력.
SHOW_FUNCTIONS_OUTPUT=false
# LLM이 함수를 사용할 수 있도록 허용.
OPENAI_USE_FUNCTIONS=true
# LiteLLM 사용 강제 (로컬 LLM용).
USE_LITELLM=false
  • DEFAULT_COLOR에 대한 가능한 옵션: black, red, green, yellow, blue, magenta, cyan, white, bright_black, bright_red, bright_green, bright_yellow, bright_blue, bright_magenta, bright_cyan, bright_white.
  • CODE_THEME에 대한 가능한 옵션: https://pygments.org/styles/

 

전체 인수 목록

╭─ Arguments ──────────────────────────────────────────────────────────────────────────────────────────────╮
│   prompt      [PROMPT]  완성을 생성할 프롬프트.                                                         │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Options ────────────────────────────────────────────────────────────────────────────────────────────────╮
│ --model            TEXT                       사용할 대형 언어 모델. [기본값: gpt-4-1106-preview]        │
│ --temperature      FLOAT RANGE [0.0<=x<=2.0]  생성된 출력의 무작위성. [기본값: 0.0]                      │
│ --top-p            FLOAT RANGE [0.0<=x<=1.0]  가장 높은 확률의 토큰(단어)을 제한. [기본값: 1.0]          │
│ --md             --no-md                      마크다운 출력 예쁘게. [기본값: md]                         │
│ --editor                                      프롬프트를 제공하기 위해 $EDITOR 열기. [기본값: no-editor] │
│ --cache                                       완성 결과 캐시. [기본값: cache]                            │
│ --version                                     버전 표시.                                                 │
│ --help                                        이 메시지 표시 후 종료.                                    │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Assistance Options ─────────────────────────────────────────────────────────────────────────────────────╮
│ --shell           -s                      쉘 명령어 생성 및 실행.                                        │
│ --interaction         --no-interaction    --shell 옵션에 대한 대화형 모드. [기본값: interaction]        │
│ --describe-shell  -d                      쉘 명령어 설명.                                                │
│ --code            -c                      코드만 생성.                                                   │
│ --functions           --no-functions      함수 호출 허용. [기본값: functions]                            │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Chat Options ───────────────────────────────────────────────────────────────────────────────────────────╮
│ --chat                 TEXT  id를 사용하여 대화 계속, 빠른 세션을 위해 "temp" 사용. [기본값: None]      │
│ --repl                 TEXT  REPL (Read–eval–print loop) 세션 시작. [기본값: None]                       │
│ --show-chat            TEXT  제공된 채팅 id의 모든 메시지 표시. [기본값: None]                          │
│ --list-chats  -lc            모든 기존 채팅 id 나열.                                                     │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯
╭─ Role Options ───────────────────────────────────────────────────────────────────────────────────────────╮
│ --role                  TEXT  GPT 모델의 시스템 역할. [기본값: None]                                     │
│ --create-role           TEXT  역할 생성. [기본값: None]                                                  │
│ --show-role             TEXT  역할 표시. [기본값: None]                                                  │
│ --list-roles   -lr            역할 나열.                                                                 │
╰──────────────────────────────────────────────────────────────────────────────────────────────────────────╯

 

Docker

OPENAI_API_KEY 환경 변수를 사용하고 캐시를 저장할 도커 볼륨을 사용하여 컨테이너를 실행하세요:

docker run --rm \
           --env OPENAI_API_KEY="your OPENAI API key" \
           --volume gpt-cache:/tmp/shell_gpt \
       ghcr.io/ther1d/shell_gpt --chat rainbow "what are the colors of a rainbow"

 

별칭과 OPENAI_API_KEY 환경 변수를 사용한 대화 예시:

alias sgpt="docker run --rm --env OPENAI_API_KEY --volume gpt-cache:/tmp/shell_gpt ghcr.io/ther1d/shell_gpt"
export OPENAI_API_KEY="your OPENAI API key"
sgpt --chat rainbow "what are the colors of a rainbow"
sgpt --chat rainbow "inverse the list of your last answer"
sgpt --chat rainbow "translate your last answer in french"

 

제공된 Dockerfile을 사용하여 직접 이미지를 빌드할 수도 있습니다:

docker build -t sgpt .

 


 

이 글은 Shell GPT 레포지토리의 README.md를 참고하여 작성되었습니다.

 

반응형