#1 AI를 사용하기 시작했습니다.
최근 인기를 끌고 있는 AI를 쓰기 시작했습니다. AI 활용 시 고려해야 할 핵심 사항을 정리했습니다.
요즘 AI가 대세입니다. 우선 월 20달러 정도의 비용으로 ChatGPT, Claude Code, Gemini를 결제했습니다. 딱히 가벼운 대화를 즐기려는 목적은 아니었기에, 이 도구들을 이용해 어디까지 웹사이트와 시스템을 구축할 수 있을지 실험해 보았습니다. 첫 인상은... 와, 진짜로 되는구나! 였습니다. 이 검은 토끼(Black Rabbit) 사이트 역시 AI를 기반으로 구축되었습니다. 어떠신가요? 제법 그럴싸해 보이지 않나요?
아무튼, AI에 대한 전반적인 내용을 간략히 정리해 보았습니다.
[요약 개요: 중요]
현재의 AI들은 LLM(대규모 언어 모델)을 채택하고 있습니다. 학습 과정을 단순하게 설명하자면, 방대한 정보 속에서 '확률적으로 다음에 올 단어를 예측하는' 단순한 작업을 반복하는 것입니다. 트랜스포머 아키텍처 디자인과 학습 방법(사전 학습, 미세 조정, RLHF 등) 자체는 이해되고 제어되고 있지만, 모델이 커질수록 일종의 블랙박스가 되어갑니다. 따라서 인간은 그 '메커니즘'을 이해하고 있을 뿐, '왜 그런 출력을 내놓았는지'에 대한 자세한 인과관계를 완벽하게 파악하지는 못합니다.
이것이 의미하는 바는 AI의 답변이 논리적으로 구축된 것이 아니라, 방대한 데이터에서 추출한 경향성에 기반하여 작성되었다는 점입니다(매우 정교하게 아는 체하는 행위). 따라서 AI에게 부여하는 프롬프트(지시문)를 통해 정확한 답변을 얻어내기 위한 기술들이 존재합니다.
솔직히 말씀드려 이미지, 디자인, 영상, 오디오처럼 시각적이거나 직관적인 분야라면 괜찮지만, 프로그래밍 같은 영역에서는 내부 구조가 상당히 허술해질 수 있습니다. 겉보기에는 작동하는 것처럼 보입니다. 하지만 껍데기만 맞춰놓은 듯한 느낌을 주기 때문에, 고급 아키텍처를 적용한 최적의 코드를 작성하기는 어려울 것이라는 게 제 생각입니다.
그렇다면 구체적인 프롬프트 작성 기술은 무엇이 있을까요?
[구체적인 기술들]
- 프롬프트에 중간 추론 단계를 포함하면 LLM의 추론 능력이 향상됩니다. 예를 들어, 단순히 프롬프트에 "처리 단계를 세분화하여 설명한 다음 실행해라"라고 덧붙이는 것만으로도 LLM이 스스로 추론 과정을 생성하게 되어 정확도가 10%에서 40%로 약 30%포인트 향상됩니다.
- LLM은 입력값의 시작과 끝부분에 비해 중간 부분에 위치한 정보를 활용하는 데 어려움을 겪는 경향이 있습니다. 기존 연구 결과를 인용하자면, "과거 질의응답 실험에서 GPT-3.5-Turbo는 시작 부분에서 75.8%, 끝부분에서 63.2%의 정확도를 보였으나, 중간 부분에서는 53.8%로 떨어졌습니다. 이는 참고 문서가 없는 폐쇄형(Closed-book) 상태의 성능인 56.1%보다도 낮은 수치입니다." 따라서 인간이 지시 사항을 최대한 쪼개서 주는 것이 좋습니다.
- 권한을 부여하면 개발자로서 상식적으로 금지해야 할 사항조차 판단하지 못한 채, 임의로 운영 서버에 업로드하거나 데이터베이스를 직접 조작하는 등의 행동을 하기도 합니다. 따라서 명확한 금지 사항을 정의해 두어야 합니다. (물론 이 또한 100% 보장되지는 않습니다.)
- 가장 좋은 방법은 AI를 물리적?으로 제한하고 통제된 범위 내에서만 사용하는 것입니다. 구체적으로는 AI에게 데이터베이스 접속 정보나 권한을 주지 않아 원천적으로 DB를 직접 만질 수 없게 만드는 것입니다.
- 서비스를 온프레미스로 직접 구축하지 말고, 가능한 한 다른 블랙박스화된 서비스를 활용하여 AI의 작업 범위를 좁히고 장애 발생 시 파급 효과를 줄이십시오.
- 어떤 AI를 사용하든 먼저 사전 전제 조건을 작성해 전달할 수 있습니다. 여기에 개발 규칙을 가능한 한 자세히 작성해 두는 것이 좋습니다. AI가 이를 자동으로 읽지 않는 경우도 있으므로, 명시적으로 규칙을 로드하여 인지하도록 만드는 과정이 매우 중요합니다.
또한, 비즈니스 계약이 아닌 일반 사용 시 유의해야 할 사항도 정리했습니다.
[프롬프트 입력 시 주의사항]
비용 절감을 위해 비즈니스용 계약이 아닌 개인용으로 결제해 사용하는 경우, 입력한 프롬프트는 학습 데이터로 사용되며 제3자에게 노출될 위험이 있습니다(비즈니스 계약의 경우 데이터가 폐기되므로 보안성이 높습니다). 따라서 개인정보, 기밀 사항, 계정명, 비밀번호 등은 절대로 프롬프트에 입력해서는 안 됩니다.
실제로 AI를 쓰다 보면 동일한 지시를 반복해서 입력하게 되는 경우가 많습니다. 앞서 언급했듯이 듣는 척만 하고 실제로는 같은 실수를 반복하기 때문에, 유사한 템플릿 텍스트를 계속해서 복사해서 붙여넣게 됩니다. 따라서,
[프롬프트 반복 작성 및 초기 설정 간소화]
AI에게 반복해서 지시할 때는 내용이 비슷하거나 일부만 수정되는 경우가 많으므로, 매번 키보드로 직접 입력하는 것은 비효율적입니다. 초기 정의 파일이나 사전 설정, 템플릿 도구 등을 적극적으로 활용하는 것이 좋습니다.
어쨌든 이제 AI를 사용할 준비가 끝났습니다. AI를 활용해 코드를 작성하는 것은 기억력이 매우 좋고 절대 지치지 않지만 아는 체를 많이 하는 주니어 프로그래머와 함께 일하는 느낌입니다. 따라서 보조자로서 활용하는 것이 가장 좋으며, 대중들이 생각하듯 명령만 내리면 무엇이든 뚝딱 만들어 주는 이미지와는 조금 거리가 있다고 느껴집니다.
또한 AI는 단지 결과를 내기 위해서라면 까다롭거나 잘못된 방법이라도 가리지 않고 수행하는 '영악한' 면이 있으므로 각별한 주의가 필요합니다.