AI가 우리의 일상과 업무 방식에 깊숙이 자리 잡으면서, 프로그래밍의 패러다임도 큰 변화를 맞이하고 있습니다. 과거의 소프트웨어 개발은 입력과 출력이 확실하게 정의된 논리적 과정에 초점을 맞췄지만, AI 코파일럿이 등장하며 이러한 틀이 점점 무너지고 있습니다. AI 기반 프로그래밍은 확률적이고 비선형적인 접근을 요구하며, 이에 따라 프롬프트 엔지니어링이라는 새로운 기술 분야가 주목받고 있습니다.
데이터 분석가로서 저도 AI의 영향을 많이 받고 있으며, 본격적인 프로그래밍을 논할 단계는 아니지만 간단한 코딩에서도 AI 도움을 받고는 합니다. 그래서 이번 글에서는 <AI 시대의 프로그래머>라는 책에서 특히 프롬프트 엔지니어링의 정의와 적용 방법에 집중해서 간단히 정리해 보겠습니다.
CHAPTER 1|개발자에게 열린 새로운 세상
자연어로 프롬프트를 입력하면 원하는 코드가 생성되는 시대가 성큼 다가왔습니다. 기존의 소프트웨어 개발은 확실성을 기반으로 이루어졌습니다. 프로그램에 특정 입력을 제공하면 항상 동일한 출력이 나오는 것을 기대했죠. 하지만 AI 프로그래밍 툴은 확률 기반으로 작동합니다. 입력값에 따라 다양한 출력을 생성하며, 때로는 예상하지 못한 결과를 도출하기도 하죠. 이런 방식은 개발자에게 기존의 선형적 사고방식에서 벗어날 것을 요구하며 다양한 창의적인 가능성을 열었습니다.
1.1 진화와 혁신
"최근 가장 큰 인기를 끈 새로운 프로그래밍 언어는 영어입니다."
안드레이 카파티(오픈AI 창립 멤버)
오픈 AI 창립 멤버이자 프로그래밍계의 인플루언서인 카파티는 GitHub Copilot을 활용해 코딩 속도가 혁신적으로 빨라졌으며, 현재 자신의 코딩의 80%를 AI가 작성하고 있다고 말했습니다. 이제 개발자는 직접 코드를 작성하기보다 프롬프트 작성과 수정에 더 많은 시간을 할애하게 되었다고요. 이처럼 AI 기반 코딩 도구는 개발자의 작업 방식을 근본적으로 바꾸고 있으며 GitHub Copilot을 비롯한 다양한 AI 프로그래밍 툴이 혁신의 속도를 가속화되고 있습니다.
1.2 생성형 AI
- AI: 인간 지능으로 할 수 있는 작업을 모방하는 모든 시스템을 포괄하는 상위 개념
- 머신러닝: 명시적인 프로그래밍이나 규칙 기반의 해석을 넘어, 알고리즘을 기반으로 방대한 데이터를 다양한 방법론으로 분석하여 인사이트를 도출
- 딥러닝: 인간 두뇌를 모방한 알고리즘인 인공 신경망 레이어가 쌓여 작동되는 방식. 빅데이터 처리와 이미지 및 음성 인식, NLP 등에서 우수한 성능을 발휘
- 생성형 AI: 학습된 방대한 데이터를 기반으로 새로운 결과물을 생성하는 인공지능
- 거대 언어 모델(LLM): 특히 텍스트 데이터를 학습하여, 이를 기반으로 새로운 텍스트를 생성할 수 있는 모델로 GPT, Gemini, Claude, Llama 등이 있습니다.
- 특히 GPT-4 이후의 GPT 등은 텍스트뿐만 아니라 이미지, 오디오, 비디오 등 다양한 유형의 데이터의 학습 및 생성이 가능한 멀티모달 기능을 탑재하여 파운데이션 모델(foundation model)로 분류되기도 합니다. 이를 통해 LLM은 더욱 다양한 직업의 니즈에 맞게 파인 튜닝될 수 있게 되었습니다.
CHAPTER 2|AI 어시스턴트의 작동 원리
2.1 주요 기능
AI 어시스턴트 프로그래밍 도구로는 대표적으로 앞서 언급한 깃허브 코파일럿을 비롯해 탭나인, 코디움 AI, 아마존 Q 디벨로퍼 등이 있습니다. 각 툴은 각자의 특성이 있지만, 한편으로 코드 제안 및 분석, 제시된 컨텍스트 기반의 코드 자동 완성, 버그 감지와 수정, 일상 업무의 자동화 등 공통되거나 유사한 기능을 갖고 있습니다.
2.4 역량 수준
- 레벨0~2: 개발자가 주체가 되는 인간 주도 코드 작업 단계. 레벨 0은 AI 어시스턴트 없이 개발자가 모든 작업을 직접 수행하며, 레벨 1 은 개발자가 전체 프로그램을 주도하며 AI는 코드 작성에 도움을 주고, 레벨 2는 AI가 주어진 코드베이스와 주변 컨텍스트를 이해하며 적합한 코드를 생성하지만 여전히 모든 과정을 개발자가 지켜봐야 한다.
- 레벨3~4: 이 단계부터 코딩을 AI가 주도. 레벨 3에서는 인간이 대략적인 목표를 설정하면 AI가 이에 대해 여러 가지 작업을 수행하며 인간에게 코드의 최종 승인만 받으면 되는 수준. 주니어 개발자에게 작업을 맡긴 것과 같은 단계. 나아가 레벨 4에서는 사람이 코드를 최종 승인할 필요 없이 복잡한 작업을 스스로 처리. 최고 수준의 엔지니어에게 기대할 법한 신뢰도를 목표로 하며 AI는 단순히 반응하기보다 선제적으로 코드에 문제가 발생할 때마다 이를 발견하고 해결.
- 레벨5: AI가 완전한 자율성을 띄며 개발자의 지시가 아닌 스스로가 설정한 목표에 따라 개발을 진행.
- 현재 깃허브 코파일럿 등의 도구는 레벨 3 정도에 머물러 있으나 엄청난 속도로 발전하고 있다.
CHAPTER 3|프롬프트 엔지니어링
프롬프트 엔지니어링은 AI 모델이 인간의 언어를 이해하고 적절한 결과를 생성하도록 입력값을 설계하는 기술입니다. 이는 머신러닝과 자연어 처리(NLP)의 하위 분야로, AI와 인간이 효과적으로 소통할 수 있는 프롬프트(입력값)를 작성하는 데 초점을 둡니다.
3.1 예술과 과학
프롬프트 엔지니어링은 단순한 기술이 아닌, 예술과 과학이 결합된 영역입니다. 전통적인 소프트웨어 개발에서는 규칙과 논리를 따르며, 오류가 발생하면 컴파일러가 이를 알려주는 예측 가능한 환경에서 작업합니다. 반면 프롬프트 엔지니어링에서 AI가 원하는 방식으로 응답하도록 유도하려면 적절한 단어와 어조를 선택하고, 대화를 의도하는 방향으로 이끌어가는 창의적인 감각과 직관이 필요합니다. 이는 자유롭고 예측 불가한 측면을 가지며, 최선의 결과를 위해 다양한 프롬프트를 실험하고 수정하는 반복적 과정을 요구한다는 점에서도 예술적 특성을 가집니다.
또한, 프롬프트 엔지니어링은 AI 모델의 작동 원리를 깊이 이해하고, 결과의 정확성, 예측 가능성, 재현 가능성을 확보해야 하는 과학적 접근도 필요합니다. 쿼리를 세세하게 쪼개서 다양한 프롬프트를 실험하고, 결과를 분석하는 작업이 필요하죠. 그러나 이 분야에 정답이나 만능 공식은 없습니다. AI와 머신러닝 기술은 끊임없이 진화하고 있어, 프롬프트 엔지니어링은 항상 움직이는 과녁을 조준하는 과정과도 같습니다.
3.3 프롬프트
- 컨텍스트: 응답을 제공할 때 LLM이 수행할 페르소나 또는 역할을 지정
ex) 당신은 전문 비즈니스 매칭 컨설턴트로서 고객사를 분석하고 파트너가 될만한 회사를 추천 및 매칭시켜 주는 일을 합니다. - 지시: 다음으로 요약, 번역 또는 분류와 같은 주요 명령
- 여러 지시가 한번에 내려질 시 이를 적절하게 정렬하거나 분절해야 함. - 입력 데이터: LLM이 그 정보를 처리해 더 나은 응답을 생성하도록 참고할 콘텐츠
- 출력 형식: 파이썬, 자바, C++ 등의 문법에 따른 테이블, 마크다운/HTML 등
- 네 요소가 항상 모두 필요하지는 않지만, 일반적으로 프롬프트에 구체적인 정보를 제공할수록 좋은 결과가 나온다.
3.5 지시
지시의 유형
- 추천 1차적으로 필요 산업군, 재정 및 매출 규모, 평판(감성 분석 등)에 따라 파트너사 추천. 이후 프롬프트를 통해 추천 대상 압축.
- 요약: 주요 아이디어와 요점은 그대로 유지한 채 긴 텍스트를 짧은 버전으로 압축
ex) 추천 파트너사의 최신 긍/부정 기사를 요약하여 제시 - 텍스트 분류: AI에 일련의 텍스트를 제공하여 레이블로 태그를 지정하는 방법을 학습시킴.
ex) 감성 분석: 파트너사 관련 기사, 제품 및 앱 관련 평가, 평점 등의 긍/부 비율 제시 및 키워드 분석(워드 클라우드)
* 기업명을 구글에 검색 시 키워드 및 감성 분석도 가능하겠으나 이는 노이즈가 지나치게 발생할 수 있음
3.8 모범 사례
프롬프트를 잘 쓰는 법
- 구체적으로 작성하기: 세부사항은 양이 많고 명확하게 하여 환각을 방지해야 한다.
예시) 데이터베이스에서 2023년 마지막 분기에 5억 원 이상을 서비스 효율화 명목으로 구매한 회사 목록을 검색하는 SQL쿼리를 개발하세요. 쿼리는 회사의 명칭, 연락처, 총지출 금액, 마지막 구매 날짜를 반환해야 합니다. 결과는 총 지출 금액을 기준으로 내림차순으로 정렬합니다. 이에 최적화된 쿼리를 작성하세요. - 약어 및 기술 용어를 명확하게 사용: 전문 용어 사용의 컨텍스트를 확실히 밝히고 약어는 최대한 풀어써야 한다.
예시) 데이터베이스와 연결하는데 오류가 발생했습니다. 어떻게 해결해야 하나요?
→ 최신버전의 파이썬을 사용해 PostgreSQL 데이터베이스에 연결하려고 하는 동안 연결 시간 초과 문제가 발생합니다. 어떻게 해결할 수 있을까요? - 제로샷 러닝과 퓨샷 러닝: 적절한 최소한의 예시 제공으로 최적의 결과 산출 가능
- 생각의 사슬(CoT): 프롬프트로 질문을 서로 연결되는 여러 단계로 세분화
5. 중립적으로 질문하기: 유도하거나 무언가를 가정하지 않고 중립적, 구체적으로 설명 및 질문
6. 예시와 비유 요청하기: 낯선 분야의 이해를 위해서는 예시 요청이 유용
CHAPTER 10|AI 시대의 개발자를 시대의 개발자를 위한 팁
10.2 AI 어시스턴트의 이점
• 작업 집중도 향상: 코딩 중 발생하는 문제를 해결하기 위해 검색에 많은 시간을 쓰지 않아도 됩니다. AI가 실시간으로 개발자의 작성 스타일을 이해하며 적절한 코드를 제안합니다.
• 반복 작업 간소화: 데이터 핸들링, API 호출, 정규식 작성, 배시 명령어 등 지루한 작업을 빠르게 처리합니다.
• 문서화 효율성: 코드에 주석을 자동으로 추가해 협업을 쉽게 하고 코드 가독성을 높입니다.
10.3 AI 어시스턴트의 유의점
• 저작권 문제: LLM은 인터넷상의 코드를 학습하며 따라서 기존 코드의 저작권에 따라 법적 이슈가 발생할 가능성이 있습니다.
• 보안 취약성: 생성한 코드의 보안 문제에 주의하고 반드시 검토와 테스트가 필요합니다.
• 개인정보 보호: AI가 학습한 데이터에 민감한 개인정보가 포함될 가능성이 있습니다.
결론: 위기를 기회로!
알파고가 바둑대결에서 이세돌 9단에게 승리한 이후로 벌써 8년이 지났습니다. 그동안 AI 덕분에 삶이 편리해진 만큼 인간이 AI에게 대체되어 할 일이 없어질 것이라는 공포도 확산되었죠. 하지만 AI 어시스턴트와 프롬프트 엔지니어링이 발달하면서 프로그래머는 단순히 코드를 작성하는 기술자가 아니라, AI와 협업하며 문제를 해결하는 설계자로 변화하고 있습니다. AI는 인간을 대체하기 위한 도구가 아니라, 개발자가 더 나은 성과를 낼 수 있도록 돕는 조력자로 자리 잡고 있습니다.
AI 어시스턴트 프로그래밍은 그 방대한 청사진 내에서는 여전히 초기 단계지만 빠르게 발전하며 무한한 가능성을 열어가고 있습니다. 저 역시 비전공자 생초보 프로그래머로서 코딩 공부를 게을리하지 않는 동시에 프롬프트 엔지니어링을 익혀 부족한 실력을 보완하고자 합니다. 여러분도 AI와의 협업이 필수적인 시대를 같이 준비하면 좋겠네요!
'DAta 이론' 카테고리의 다른 글
HyDE로 RAG 향상시키기 (1) | 2024.12.17 |
---|---|
[데이터 분석 알아보기] 2-1. 데이터 시각화는 무엇이고 왜 필요할까? (0) | 2024.08.15 |
[데이터 분석 알아보기] 2-1. 머신러닝_ML의 의미와 종류 (0) | 2024.08.12 |
[데이터 분석 알아보기] 2-2.직관적인 데이터 시각화 만들기 (1) | 2024.08.09 |
[데이터 분석 알아보기] 1-1. 데이터 전처리_사용자 행동 데이터 분석 (0) | 2024.08.06 |