프롬프트는 인공지능 분야, 특히 인공지능 언어 모델의 개발과 개선에 있어 필수적인 요소가 되었습니다. 이 블로그 게시물에서는 프롬프트의 정의, 프롬프트 엔지니어링의 기술, 효과적인 프롬프트를 만들기 위한 다양한 프레임워크에 대해 살펴봅니다. 또한 프롬프트 마켓플레이스의 등장과 적대적 프롬프트의 개념에 대해서도 논의할 것입니다.

프롬프트란 무엇인가요?

프롬프트는 AI 언어 모델에 제공되는 텍스트 입력으로, 응답을 생성하거나 작업을 완료하기 위한 시작점 역할을 합니다. 프롬프트는 일반적으로 컨텍스트(배경 정보)와 명령(특정 요청 또는 질문)으로 구성됩니다.

프롬프트 엔지니어링이란 무엇인가요?

프롬프트 엔지니어링은 AI 언어 모델 성능을 최적화하고 보다 정확하고 관련성 있으며 유용한 응답을 생성하기 위해 프롬프트를 설계하고 개선하는 프로세스입니다.

프롬프트 작성을 위한 기본 지침

  • 대화 스타일 조정하기: 원하는 출력에 따라 적절한 어조와 스타일을 선택합니다.
  • 명확하고 간결한 표현: 모호한 표현을 최소화하고 간단한 언어를 사용하여 메시지를 전달하세요.
  • 열린 질문보다 닫힌 지시: 개방형 질문 대신 구체적인 지침을 제공하세요.
  • 지시 사항과 맥락을 명시하세요: 작업을 명확하게 정의하고 관련 배경 정보를 제공하세요.

더 나은 프롬프트 작성을 위한 프레임워크

  • Zero Shot Prompting: AI 모델이 사전 예제 없이 응답을 생성합니다.
  • One-Shot Prompting: AI 모델이 하나의 예시를 사용하여 응답을 안내합니다.
  • Few-Shot Prompting: AI 모델은 몇 가지 예제를 사용하여 작은 데이터셋에서도 높은 성능을 발휘할 수 있는 모델을 학습시키기 위한 기술
  • CoT (Chain-of-Thought): 프롬프트를 더 작은 단계 또는 시퀀스로 세분화하는 기법입니다.
  • Zero-Shot CoT (Chain of Thought): 제로 샷 프롬프트와 CoT 접근 방식을 결합합니다.
  • Self-Consistency: AI가 생성한 콘텐츠가 스스로 일관성을 유지하도록 보장합니다.
  • Generated Knowledge Prompting: AI가 생성한 지식을 후속 프롬프트의 컨텍스트로 활용합니다.

프롬프트 엔지니어링과 함께 떠오르는 트렌드

  • 프롬프트 마켓플레이스: 프롬프트와 명령의 교환을 용이하게 하는 플랫폼.
  • 눈에 띄는 프롬프트 마켓플레이스: 이 분야에서 점점 더 많은 플랫폼이 등장하고 있습니다.
  • 적대적 프롬프트: 악성 프롬프트로 AI를 해킹하는 행위.
  • 프롬프트 인젝션: 합법적인 프롬프트에 적대적인 입력을 삽입하여 AI의 응답을 조작하는 행위.
  • 프롬프트 유출: 프롬프트를 통해 민감한 정보를 유출하는 AI의 경향을 악용하는 행위.
  • 탈옥: 교묘하게 조작된 프롬프트를 통해 AI 모델에 대한 제한을 우회하는 행위.
  • 적대적 프롬프트 탐지기: 악의적인 프롬프트를 탐지하고 완화하는 도구 및 기법.

프롬프트와 프롬프트 엔지니어링은 AI 언어 모델의 효과와 효율성에 중요한 역할을 합니다. AI 기술이 계속 발전함에 따라 프롬프트 설계의 복잡성을 이해하고 프롬프트 마켓플레이스 및 적대적 프롬프트와 같은 새로운 트렌드에 대한 최신 정보를 파악하는 것이 필수적입니다. 그래야만 AI의 잠재력을 최대한 활용할 수 있습니다.

반응형

리눅스 서버를 다루다보니, 터미널을 매일사용하고 있습니다. 저는 기본으로 fish, tmux. alacritty 을 이용해서 작업을 하고 있습니다. 제가 사용하는 것들의 주요 특징들은 가볍고 빠릅니다.
iterm2는 전혀 성에 차지 않습니다. wasp와 같은 터미널 프로그램은 쓸만합니다. 하지만, 기본기로 돌아가면 alacritty 사용을 권하고 싶습니다. (rust 로 작성되어 있다는 점도 무시할 수 없습니다.)

현재 사용중인 stack

오늘부터 도전!

자주가는 reddit.comr/unixpron에는 커스텀화 된 화면들을 공유하고 자신들의 설정을 공유하는 곳입니다. 리눅스 사용자들을 위한 곳입니다. 리눅스도 같이 사용하고 있는 저에게는 지루한 랩탑을 좋은 놀이깜으로 만들어주는 곳입니다. (리눅스에 대해서도 학습하면서...)
아래 적용하려고 하는 도구들도 이 곳에서는 많이 사용하는 것들입니다.

여기서 최신 도구들을 몇개 사용해 보려고 합니다. 선정이유는 다들 rust로 작성되어 있는 점입니다. rust를 사랑하는 개발자로서 이 세팅은 반드시(!) 좋을 것 같습니다.

아래 TOOLS 를 사용하려고 하고, 장점에 대해서 설명하려고 합니다.

  • nushell
  • startship
  • zellij

nushell

rust로 작성된 최신 데이터 지향 쉘입니다. 기본적인 구성만으로 자동완성 및 기타 유용한 기능을 사용하기 위해 여러 설정을 할 필요가 없습니다.

아직 사용하기에는 여러문제들이 보임.

설치

$ brew install nushell
.......
$ nu
✘  ~  nu
No environment config file found at /Users/forteleaf/Library/Application Support/nushell/env.nu
Would you like to create one with defaults (Y/n):

Config file created at: /Users/forteleaf/Library/Application Support/nushell/env.nu
No config file found at /Users/forteleaf/Library/Application Support/nushell/config.nu
Would you like to create one with defaults (Y/n):

Config file created at: /Users/forteleaf/Library/Application Support/nushell/config.nu
     __  ,
 .--()°'.' Welcome to Nushell,
'|, . ,'   based on the nu language,
 !_-(_\    where all data is structured!

Please join our Discord community at https://discord.gg/NtAbbGn
Our GitHub repository is at https://github.com/nushell/nushell
Our Documentation is located at http://nushell.sh
Tweet us at @nu_shell

Nushell has been around for:
3yr 4month 3wk 1day 23hr 37min 48sec 769ms 498µs

You can disable this banner using the config nu command
to modify the config.nu file and setting show_banner to false.

let-env config {
    show_banner: false
    ...
}

장점

  1. Linux, macOS, Window 에서 작동
  2. nu pipeline은 구조화 된 데이터를 사용.
    안전하게 선택, 필터링, 정렬을 사용
  3. 강력한 플러그인

단점

  1. command 학습이 필요함.
    shell이름을 확인하려고 했는데....

    `echo $SHELL`
    Error: nu::parser::variable_not_found (link)
    
    × Variable not found.
    ╭─[entry #12:1:1]
    1 │ echo $SHELL
    ·      ───┬──
    ·         ╰── variable not found
    ╰────

nushell는 데이터 표현을 테이블 저장합니다. 마치 DB의 쿼리를 이용해서 물러오는 것 같습니다. 기본 zsh, fish, bash 등에 익숙해 있다면 생소한`cui
화면 처럼 보이기도 합니다.

/Users/forteleaf/vagrant〉ls                                                                                                                             09/28/2022 11:43:33 PM
╭───┬──────────┬──────┬───────┬──────────────╮
│ # │   name   │ type │ size  │   modified   │
├───┼──────────┼──────┼───────┼──────────────┤
│ 0 │ kubeset  │ dir  │ 320 B │ 2 months ago │
│ 1 │ window10 │ dir  │ 128 B │ 2 months ago │
╰───┴──────────┴──────┴───────┴──────────────╯
  1. 미완성적인 부분
    기존에 것들과 차이가 나고 PATH등 설정을 새로 해야함

starship

  • 호환성 우선
  • RUST 를 이용한 최고의 퍼포먼스와 안정성
  • 세심한 CUSTOM

Starship은 간단한 yaml 파일에 매우 다양한 구성 옵션을 제공 합니다. 그러나 nushell과 마찬가지로 처음에는 구성이 필요하지 않습니다. 모든 기본값이 이미 설정되어 있습니다! 바로 사용할 수 있는 멋진 구성 사전 설정을 제공합니다.

Starship은 다른 여러 도구 및 기술과 자동으로 통합됩니다. 패키지 버전을 표시하고(예: Poetry 프로젝트에 있을 때) AWS 리전, kubernetes 컨텍스트 및 네임스페이스를 표시할 수 있습니다. 간단히 말해서 모든 것과 작동합니다. 여기에서 전체 통합 목록을 살펴보십시오.


현재는 pastel Powerline으로 설정해서 사용하고 있습니다.

rust 로 작성되어 있어서 빠르다고 생각했지만, 별 차이를 느낄 수 없었습니다.

zellij

tmux와 매우 유사한 기능을 가지고 있습니다. 이쁜 라인이 생겨서 화면을 구분할 수 있는 큰 장점이 있습니다. 그런데 이로 인해서 볼 수 있는 text가 조금은 줄어듭니다. 한줄 정도 차이지만, 신경이 쓰입니다.

설치

$ brew install # Zellij
or
# zsh
bash <(curl -L zellij.dev/launch)

# fish
bash (curl -L zellij.dev/launch | psub)

장점

  • 기존에 사용하던 tmux의 단축키가 호환
  • 이쁨
  • layout 저장 (tmuxinator를 사용하고 있어서 ....)
  • pane 이동 기능이 직관적이고 편리

단점

  • tmuxinator 를 사용하고 있는데 이와 같은게 안 보임
  • ctrl+p 로 과거 실행했던 메뉴를 찾는데, 단축키가 설정되어 있음(pane 설정용)
    별도의 세팅을 해야되는 아쉬움
  • synchronize-pane 기능이 없다. 2021년에 기능이 추가 됨

기존에 사용하던 tmux의 단축키의 익숙함 때문에 zellij 에 적응이 안됩니다. 그리고, 기본 repository 에서 tmux 를 실행할 수 있는데, 굳이 zellij 를 설치해서 사용할 필요가 있을까 싶습니다.

반응형

'개발 > 리눅스' 카테고리의 다른 글

arch ctrl <-> caps lock swap  (0) 2023.01.02
freebsd | minidlna 구축  (0) 2022.10.13
ansible - 자동화의 시작  (0) 2022.07.14
Gitlab-CE 업그레이드  (0) 2022.07.05
LINUX | Linus Torvalds 가 우분투, 데비안을 싫어하는 이유  (0) 2020.07.13

+ Recent posts