book-movie

책: 소프트웨어 개발에 ChatGPT 사용하기

주먹불끈 2024. 9. 16. 20:56

개요

제이펍 IT 전문서 리뷰어 활동으로 “소프트웨어 개발에 ChatGPT 사용하기”를 리뷰한다.

알라딘 링크: http://aladin.kr/p/zqA2G

기대와 걱정

LLM, ChatGPT를 제목에 달고 나오는 책이 쏟아지는 상황에 단순한 사용기를 엮은 경우도 많고, 조금만 시간이 지나도 LLM의 성능이 몇 계단씩 나아지기에 걱정이 되면서도, 적극적으로 ChatGPT를 활용하고 있는 소프트웨어 개발자의 노하우를 배우는 지점이 있을 것이라는 기대를 가지고 읽게 되었다.

TL;DR

40년이 넘는 경력의 소프트웨어 개발자이며 여러 개발 서적을 집필한 저자 “오노 사토시”가 소프트웨어 실무의 다양한 영역에서 ChatGPT를 사용해본 경험을 공유해주는 좋은 책이다. 이미 잘 활용하고 있는 부분도 있을 것이고, 이렇게 사용할 수도 있겠구나 싶은 부분도 만날 것이다.

나 자신은 ChatGPT를 포함한 다양한 AI 도구들의 도움을 많이 받으며 개발을 하고 있는데, 의외로 주위에서 사용하지 않거나 기본적인 질문과 답만을 사용하는 경우를 종종 본다. 이 책이 그런 분들에게 영감을 주고 많이들 시도하는 계기를 마련해주었으면 한다.

덧붙여서, 책에서 귀멸의 칼날, 최애의 라이브, 북두신권, 바람의 검심에 빗댄 이야기가 나오는데 이런 경쾌함이 기술서의 무게를 덜어주었고, 그러면서도 각 장의 제사(題辭)는 아인슈타인, 개발자 겸 해군제독, 노자의 도덕경, 레비스트로스를 넘나들며 저자의 넓고 깊은 지식 내공을 느끼게 해주었다.

책 리뷰

소프트웨어 개발이라는 영역에서의 다양한 ChatGPT의 활용을 다룬 책이다보니 인상적이었던 활용을 위주로 언급해보려 한다.

트랜스포머

ChatGPT의 활용을 이야기하기 앞서 LLM이 어떻게 동작하는지에 대한 최소한의 마중물을 준비해두었다. 트랜스포머의 개념에 대한 소개와 그 출발점이 되는 주요 논문을 언급해두어 관심있는 이들이 더 찾아가볼 수 있도록 해주었다.

테스트코드를 먼저 요청하라(33p)

무릎을 쳤다. 원하는 코드를 작성해달라는 요구는 많이 했었다. 필요하다면 생성한 코드에 대한 테스트코드를 부탁한 적도 있었다. 하지만 생각해보니 테스트코드를 먼저 요청하면 얻는 이점이 많다. ChatGPT에게 우리의 요구사항을 좀더 명확히 말해주는 것이다.

프롬프트 + 생성해준 코드(75p)

ChatGPT에게 조금 더 이해하기 쉽게 요청하라는 말로 들렸다. 물론 LLM이 하루가 다르게 성장하다보니 언젠가는 이런 것도 군더더기가 될 수 있겠다. 하지만 질문과 답이 지나치게 많이 오가면 우리의 요청에 대해 어디에 좀더 집중해서 답을 해야 할지 명확하지 않을 수 있기에 집중해야할(attention) 코드를 프롬프트에 함께 넣어 요청하면 우리가 원하는 답을 좀더 쉽게 얻어낼 수 있다. 아무래도 찰떡같이 말하면 찰떡같이 알아들을 확률이 높아진다.

기계어도 역어셈블 할 수 있다(92p)

Python을 Go로, JavaScript를 Ruby로 변환할 수는 있다 생각했었다. 자신이 잘 알고 있는 언어로 만든 프로그램을 다른 언어로 만들어보는 건 좋은 언어공부의 방법이라 생각했었다. 그런데 생각해보니 기계어 역시 다른 언어로 번역이 가능하다는 것에 정신이 번쩍 들었다. 역어셈블을 하기 힘들게 난독화하는 일종의 보안도 LLM의 머지않은 미래에는 무용지물이 될 수 있겠다.

docs as code - 코드로 작성할 수 있다면 ChatGPT도 할 수 있다(134p)

mermaid로 다양한 다이어그램을 만들어 달라거나, dbdiagram.io(129p)에 Entity-Relationship Diagram(ERD)을 그려달라 요청해본 적이 있었고 만족스러웠다. 어느정도 기본적인 틀만 생성해줘도 세세한 부분을 조금만 조절하면 원하는 결과를 얻을 수 있었다.

책에서는 Python 의 diagrams 라이브러리를 소개하는데 클라우드 구성도(cloud infrastructure diagram)를 코드로 표현할 수 있는 라이브러리이다. 그리고, 코드로 작성할 수 있다면 ChatGPT도 할 수 있다.

마법의 프롬프트 - 다르게 시도해줘(169p)

ChatGPT의 장점중 하나는 질리지도 지치지도 않는다는 것이다. 생성한 코드가 동작은 하더라도 원하는 성향, 철학, 스타일과 다르다면 단 한 문장으로도 다양한 해법을 얻어낼 수 있다.

“같은 사양으로 다른 코드를 생성해주세요.”

TDD는 ChatGPT에게 few-shot learning 이다(174p)

few-shot learning 이란 AI에게 몇몇 예시를 들어주고 그처럼 하라고 말해주는 것이다. 프롬프트에 이를 넣어주면 좀더 원하는 결과에 가까운 응답을 받을 수 있다. TDD는 바로 그러한 역할을 해주는 것이다.

소크라테스처럼 질문해줘 - Socratic tutor(192p)

최근 NotebookLM 이라는 구글의 서비스를 알게 되었다. 입력한 정보들을 기반으로 두 명이서 진행하는 팟캐스트를 만들어주는 기능이 있는데 심지어 내가 작성한 기술 문서라 하더라도 이렇게 팟캐스트 형식으로 생성하여 듣다보면 이해가 더욱 깊어지는 경험을 하였다. 참고로 아직은 영어로만 가능하다. Socratic tutor란 특정한 주제와 내용을 알려주고 그에 대해 ChatGPT가 소크라테스인양 나에게 질문을 하게 하여 좀더 이해를 돕기도 하고 충분히 이해하지 못한 부분이 어딘가인지도 생각해보게 도와준다.

이 둘을 접목하면 학습에 큰 진전을 얻을 수 있겠다는 생각이 들었다. 떠오르는 단계는 다음과 같다.

  1. 허겁지겁 공부를 하고 요약을 해둔다. 벼락치기 시험공부를 상상해도 좋다.
  2. 정리해둔 내용을 NotebookLM 에게 주어 팟캐스트를 생성하게 하여 듣는다. 서비스에는 또한 입력한 정보들에 대해 질문할 수 있는 기능도 있으니 이를 활용해도 좋다.
  3. 마지막으로 정리해둔 내용을 소크라테스처럼 나에게 질문해달라 한다. 시험을 치기 직전에 친구들끼리 서로 문제를 내어본 경험을 떠올려도 좋다. 무엇을 얼마나 이해하고 있는지, 부족한 부분이 어디인지 알 수 있을 것이다.

학습에의 활용

ChatGPT에게 배우고 싶은 영역을 알려주며 커리큘럼이나 학습의 단계를 요청할 수도 있다.

API의 활용

사내 데이터베이스, 랭체인, 라마인덱스, 에이전트 등의 키워드들을 만날 수 있는데 아무리 LLM이 발전하더라도 학습할 수 없고, 접근할 수 없는 영역들에 대한 대응이나, 좀더 자동화되어 세세한 지시없이도 일을 해주는 미래에 대한 아이디어를 얻을 수 있을 것이다.

반응형