일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- sierra
- BIQU
- 컨트롤러
- 아이폰
- AirPods
- beta
- 터치바
- 맥북프로
- Tarantula
- 시에라
- 버그
- Linux
- tevo
- macos
- Mac
- catalina
- iOS 13
- 애플
- 맥
- mojave
- high sierra
- 정식버전
- 업데이트
- IOS
- 3D 프린터
- 에어팟
- Fedora
- 3D프린터
- 모하비
- asahi linux
- Today
- Total
elsa in mac
터미널 에뮬레이터에서 chatGPT를 이용해 보자 본문
터미널을 주력으로 사용하는 유저들은 대부분의 일들을 터미널에서 하고 싶어합니다.
이유는 몇 가지가 있습니다.
- 마우스를 사용하지 않고 키보드만 사용하여 업무나 일들을 처리하고 싶다.
- 터미널 실행은 매우 빠르고, 어차피 늘 띄워 놓고 있다.
- 뭔가를 하기 위해 꼭 별도의 앱이나 웹브라우저를 띄워야 하나 ? 화면도 좁은데...
- 리소스도 많이 소모하지 않기에 베터리 소모도 줄고, 컴터도 빠릿하다..
암튼 뭐 각설하고..
시대가 시대인 만큼 AI가 유행이고 AI를 업무에 사용하는 것은 이제 일상이 되어 가고 있습니다. 이런 시대적 흐름에 따라 터미널에서 chatGPT를 사용하고자 하는 열망도 있나 봅니다.
이번 포스트에서는 Terminal Emulator 에서 chatGPT를 사용하는 방법을 간단히 소개하고자 합니다.
다양한 뮤료 LLM을 지원하는 pytgpt
소개할 터미널 기반 chatGPT CLI는 tgpt(terminal GPT)를 기반으로 사용자 환경을 보다 업그레이드한 pytgpt 입니다.
chat-GPT는 원래 웹브라우저 기반이기 때문에 사용자의 질문에 대한 응답을 markdown 형식으로 보내 줍니다. 알고 계시듯이, 대부분의 terminal emulator들은 markdown 형식에 대한 rendering 기능을 지원하지 않습니다. 따라서, 완전 text기반의 tgpt를 사용할 경우에는 markdown 문서가 있는 그대로 출력되게 됩니다.
강조문자, 이태릭체, source code의 syntax hightlighting 들을 처리할 수 없죠.. 이와 같은 불편함을 해소하기 위해 나온것이 pygpt 입니다.
pytgpt는 python의 rich library를 이용하여, markdown을 터미널에서 rendering할 수 있습니다. 아래의 동영상은 pytgpt의 실제 동작을 보여 줍니다.
python 기반이기 때문에, linux, window, macOS 모두 지원합니다.
설치 및 사용 방법
설치 방법은 간단합니다.
pip install --upgrade python-tgpt
사용 방법은 옵션이 꽤 다양한데, 자세한 정보는 해당 github에서 확인해 보시기 바랍니다.
이번 포스트에서는 OpenAI의 GPT-4o mini를 기반으로 하는 duckduckgo AI chat을 provider로 사용하는 방법만 제시 합니다.
ytgpt interactive --provider DDG
아래의 스샷을 보면, 사용할 수 있는 provider들이 굉장히 많은 것을 알 수 있습니다. 물론, 특정 LLM의 경우에는 가입을 하고, API_key를 사용해야 사용할 수 있는 것들도 있습니다.
기존에 웹 브라우저에서 무료 chat-GPT를 사용하는 수준의 사용자라면 그냥 DDG provider를 사용하면 됩니다.
pytgpt의 경우에는 웹서버 기반의 서비스 기능도 지원합니다. 하지만, terminal에서 사용할 것이라는 본래의 취지를 생각해 본다면 개인적으로는 필요치 않은 기능입니다. 그럴꺼면 그냥 chat-GPT 사용하면 되니까..
단점은 없을까 ?
내 단점도 있습니다. 우선은 multi-line 입력이 직접 지원되지 않습니다. 그래서 소스코드나 어떤 문구를 드래그 하고, Copy & Paste로 질문을 던질 수가 없습니다. 개발자도 이러한 문제가 있는 것을 알기에 pytgpt 내부에 몇가지 내부 명령어 set을 준비해 놓고 있습니다.
위의 스샷에서 볼 수 있듯이, help를 입력하면 Documented command 라는 명령어 셋을 확인할 수 있습니다. 위에 언급한 multi-line copy & paste를 이용한 질문을 사용하려면 그냥 해당 code나 구문을 drag하고 copy 한 후, with_copied 를 명령하면 일단 입력이 됩니다.
위의 스삿을 보면, The rich~ - out of box. 부분까지가 copy 한 문자열 입니다. 그리고, promt의 첫번째 라인을 보면 with_copied라고 명령한 것을 알 수 있습니다. 그럼 맨 아래와 같이 Do you wish to proceed[y/N] 라고 물어 보게 되죠, N는 취소, y는 진행이겠죠 ?
y를 하면 일단 chatGPT가 입력한 문자열이나 코드에 대한 자신의 분석을 내 놓게 되고, 그 다음에 해당 문구에 대해 질의를 하면 됩니다. 이런 부분이 좀 번거롭다고 볼 수 있습니다.
불편한것은 아닌데, 번거롭다 보니 이을 개선하기 위해 소스코드를 좀 수정했습니다.
# console.py
#--------------------------------------
@busy_bar.run()
def do_with_copied(self, line):
"""Attach last copied text to the prompt
Usage:
from_copied:
prompt = {text-copied}
from_copied Debug this code:
prompt = Debug this code {newline} {text-copied}
"""
issued_prompt = (
f"{line}\n{clipman.get()}" if bool(line.strip()) else clipman.get()
)
# 한줄을 띄고 표시하도록 수정
click.secho(f"\n{issued_prompt}", fg="yellow")
# 추가 질문을 입력받기
additional_question = click.prompt(f"{Fore.CYAN}추가할 내용을 입력하세요", type=str)
# if click.confirm("Do you wish to proceed"):
# self.default(issued_prompt)
# 추가 질문이 비어있지 않은 경우에만 self.default() 실행
if additional_question.strip():
issued_prompt += f"\n{additional_question}"
self.default(issued_prompt)
아.. 참고로 위의 스샷들은 여러분이 pytgpt를 설치했을 때랑 좀 다르게 보일 것입니다. 원래는 아래와 같은 화면 구성을 보여 줍니다.
소스코드를 개인적으로 수정을 한 것인데요.. 이유는 출력된 결과 중 원하는 부분을 drag & copy 할때, 저 Box 문자들이 함께 복사하 되기 때문입니다. 몰론, copy_this 명령을 내리면 내용을 clipboard로 복사를 해 줍니다. code와 설명이 함께 포함된 경우, code만 복사하고 싶다면 우선 code라는 명령을 내려 code 부분만 출력하게 한 후, 이어서 copy_this 명령을 내리면 됩니다.
python를 사용할 줄 아는 유저라면, 이 부분도 그냥 출력결과에 code가 포함된 경우에 무조건 자동으로 clipboard에 copy 하도록 수정하면 좀 더 편리할 듯 합니다. 소스코드는 OS나 python 환경에 따라 다를 수 있는데, 저의 경우에는 ~/.local/lib/python3.13/site-packages/pytgpt 에 위치합니다.
chatGPT 를 이용하기 위해 무거운 web-browser를 실행할 필요가 없이, 간단하게 terminal에서 빠르게 사용할 수 있다는 것이 가장 큰 장점이며 한국어 사용에도 무리가 없다는 점도 좋습니다.
'Terminal' 카테고리의 다른 글
noevim(nvim) 을 배우고 싶다구요 ? cheat sheet 참고 하세요.. ^^ (0) | 2024.10.25 |
---|---|
kitty terminal, neovide와 유사한 cursor trail 기능 추가 (0) | 2024.10.22 |
Lo-Fi 음악을 가장 쉽고 간편하게 듣는 방법 - lowfi (2) | 2024.10.04 |
wezterm 의 multiplexing 기능을 사용해 보자. (0) | 2024.09.14 |
Linux, Chromium 에서 가끔씩 한글의 자모가 분리되는 문제를 해결하는 방법 (0) | 2024.09.11 |