생성형 AI와 협업하기
LLM 전성시대
그야말로 AI 전성시대다, 하루가 다르게 AI의 새로운 모델들이 발표되고, 갈수록 기능이 특화되고 또 다양화되고 있다. 이제 너 나 할 것 없이 한두개 AI는 친숙하게 사용할 수 있고, 업무에도 적극 활용하고 있다. 나만 하더라도 아침에 컴퓨터를 켜고 맨 처음 실행시키는게 GPT 이고 GPT와 인사하며 하루를 시작한다. “AI가 없었던 시절에 어떻게 일을 해었나?”하고 내 생활속에 깊이 들어와 있는 AI에 감사함을 느낀다. 그러면서도 막상 구체적인 업무에서 하고 있는 일을 GPT에게 시키려면 막연하고 어려움을 느끼게된다. 이 글에서는 GPT와 같이 코딩하고 데이터를 분석하면서 느꼈던 경험을 나누고자 한다. 워낙 다양한 상황이 가능하기 때문에 최근에 내가 경험한 일을 중심으로 구제적인 어떤 상황을 상정하고 내가 AI와 협업하는 과정을 예를 들어 설명한다.
상황 1 : 간단한 코딩 및 디버깅 하기
단순한 코딩과 디버깅을 AI와 같이 수행하는 것은 이미 너무 익숙하고 진부한 주제 이다. 워밍업하는 의미에서 간단하게 언급한다. 이 글을 보는 분들이 모두 다 아는 iris 데이터를 가지고 GPT-4o와 협력적으로 코딩하는 상황을 진행해보자. 내가 다음과 같이 프롬프트에 입력했다.
나 : “너와 협업하며 코딩하는 실습을 진행해보고 싶다. 코딩 주제는 iris 데이터로 EDA 작업하는 과정이다. 내가 말로 지시하면 너는 R로 코드를 작성하고 실행해서 결과를 리턴하라.결과를 내가 검토한 다음, 수정지시를 하면 코드를 수정하고 다시 실행시켜 새로운 결과를 반환하라. 나의 의도를 이해헀나?”
이렇게 지시하면, GPT는 R로 코딩을 해서 반환한다. 그러면 내가 그 코드를 복사해서 R IDE 환경인 studio에 붙여넣고 실행을 시켜 결과를 눈으로 확인해야 한다. 만일 GPT 스스로 코드를 실행시키고 소스와 실행 결과를 함께 리턴하면, 내가 결과만 보고 다시 보완 지시하면 될 것 같은데 하는 의문이 들어 GPT에게 다시 질문을 던졌다.
나 : “실행은 왜 하지 않지? 실행은 내가 해야하는 건가?” 그러자 GPT는
GPT : “당신 말이 맞아요. 이 환경에서는 R 코드를 직접 실행할 수 없으므로 R 설정이나 RStudio와 같은 IDE에서 코드를 실행해야 합니다. 코드를 실행한 후 상자 그림이 좋아 보이는지 또는 수정이나 추가 분석이 필요한지 알려주십시오. 저는 EDA 프로세스의 조정이나 다음 단계를 돕기 위해 왔습니다.”
왼쪽 그래프가 최초 GPT의 코드 수행 결과이다. 내가 또 지시했다.
나 : “그럼 R studio 등 ,IDE 환경을 모르는 사람은 너와 협력해서 작업하기 어렵다는 뜻이다. 맞나?”
GPT : “네, 당신 말이 맞아요. 이 환경에서는 R 코드를 직접 실행할 수 없습니다. 즉, RStudio와 같은 IDE나 R 실행을 지원하는 설정에 익숙하지 않은 사용자는 코드 실행과 같은 작업을 위해 나와 협력하는 것이 어려울 수 있습니다.”
아직까지는 GPT와 협업을 하더라도 내가 익숙한 IDE를 켜 놓고 소스를 복사/붙여넣기 해가면서 순차적으로 작업을 수행해야 한다는 뜻이다. 그래프를 원하는 대로 보완하기 위해 추가적인 지시를 했다.
나 : “1. 제목과 축을 한글로 번역하고, 2.박스프롯에 nothch를 추가하라 3. 중앙값 텍스트를 우측에 표시하고 폰트를 키워라”
이렇게 해서 다시 그린 그래프가 우측 그래프이다.

상황 2 : 캡쳐 이미지를 주고 데이터 만들어 가시화하기
업무나, 프로젝트들을 수행하다 보면, 다른 보고서나 책 등의 표를 참조하고 활용할 일이 생긴다. 예를 들어 신문기사에서 다음과 같은 현황표를 읽다가 이미지로 캡쳐했다고 하자.

이 현황표를 가지고 어떤 가시화를 시켜서 내 보고서에 활용하고자 하는 상황을 상정해보자. AI가 없었다면 일일이 입력해서 처리해야 했을 것이다. 이제 GPT에 이 캡쳐한 이미지를 주고 데이터 프레임으로 만들어 달라고 한 다음 필요한 처리를 하면 된다. 데이터를 생성할때 파일로 만들어 다운로드 받을 수 있게 만들라고 할 수도 있고, 소스에 데이터 프레임으로 생성하라고 시킬 수도 있다.
나 : “첨부된 이미지를 데이터프레임으로 만들어 소스에서 바로 활용할 수 있게하라.”
다음은 GPT가 만들어준 소스를 청크에 붙여 넣어 출력한 결과이다.
data <- data.frame(
Year = c(2015, 2016, 2017, 2018, 2019, 2020, 2021, "Total"),
SW = c(0, 0, 4, 14, 12, 10, 6, 46),
관제 = c(0, 0, 0, 0, 1, 2, 4, 7),
교육 = c(7, 23, 34, 43, 36, 29, 37, 209),
방제 = c(0, 0, 0, 5, 9, 8, 6, 28),
안전 = c(0, 0, 1, 0, 3, 1, 1, 6),
영상 = c(0, 3, 13, 10, 20, 10, 15, 71),
운용 = c(0, 1, 2, 3, 0, 0, 1, 7),
정비 = c(0, 1, 4, 11, 23, 15, 17, 71),
조종 = c(0, 7, 12, 16, 11, 11, 8, 65),
기타 = c(0, 0, 3, 3, 7, 14, 13, 40),
합계 = c(7, 35, 73, 105, 122, 100, 108, 550)
)
# Display the data frame
kable(data, format ="markdown", caption = "GPT가 만들어준 드론 자격 등록현황 ")
Year | SW | 관제 | 교육 | 방제 | 안전 | 영상 | 운용 | 정비 | 조종 | 기타 | 합계 |
---|---|---|---|---|---|---|---|---|---|---|---|
2015 | 0 | 0 | 7 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 7 |
2016 | 0 | 0 | 23 | 0 | 0 | 3 | 1 | 1 | 7 | 0 | 35 |
2017 | 4 | 0 | 34 | 0 | 1 | 13 | 2 | 4 | 12 | 3 | 73 |
2018 | 14 | 0 | 43 | 5 | 0 | 10 | 3 | 11 | 16 | 3 | 105 |
2019 | 12 | 1 | 36 | 9 | 3 | 20 | 0 | 23 | 11 | 7 | 122 |
2020 | 10 | 2 | 29 | 8 | 1 | 10 | 0 | 15 | 11 | 14 | 100 |
2021 | 6 | 4 | 37 | 6 | 1 | 15 | 1 | 17 | 8 | 13 | 108 |
Total | 46 | 7 | 209 | 28 | 6 | 71 | 7 | 71 | 65 | 40 | 550 |
데이터가 준비되었으니, 그래프를 그려보자. 사실 데이터를 다루는 사람들에게 현황표의 “합계”란은 필요가 없으므로 생략하면 되는데, 여기서는 AI와 협업하는 것을 보여주기 위해 그대로 살리고 진행하였다.
나 : 위 데이터로 연도별 자격증 종류별 취득자 수에 대한 막대그래프를 그리려고한다. 할수있겠나? 어떤 순서로 작업을 하려고 하는지 먼저 내게 너의 계획을 알려주고 내가 승인하면 코딩을 시작하라.”
GPT : “R에서 막대 그래프를 만들기 위해 따라야 할 작업 순서는 다음과 같습니다.
- 필요한 라이브러리 로드: 막대 그래프를 그리려면 ggplot2를 사용하세요.
- 데이터 준비: 플로팅 목적으로 ‘전체’ 행을 ‘NA’로 변환하고 필터링합니다.
- 데이터 재구성: ’tidyr’ 또는 ’reshape2’를 사용하여 데이터를 와이드 형식에서 긴 형식으로 변환하면 수년에 걸쳐 다양한 인증 유형을 쉽게 표시할 수 있습니다.
- 막대 그래프 만들기: ggplot2를 사용하여 x축이 연도를 나타내고 각 막대 스택이 다른 유형의 인증을 나타내는 막대 그래프를 만듭니다.
- 그래프 사용자 정의: 레이블을 추가하고 색 구성표를 조정하고 그래프를 쉽게 읽을 수 있는지 확인하세요. 이 계획이 괜찮다면 알려주시면 R 코드를 진행하겠습니다!”
GPT의 계획이 내가 작업하는 방법과 같아 다음과 같이 승인했다.
나 : 좋다 실시하라.”
그렇게 해서 작성한 그래프의 색상을 보정하는 작업과 제목을 한글로 바꾸는 작업으로 완성한 그래프이다.
data <- data[data$Year != "Total", -12]
# Reshaping the data to long format
data_long <- gather(data, key = "Certification_Type", value = "Count", -Year)
# Creating the bar graph
ggplot(data_long, aes(x = Year, y = Count, fill = Certification_Type)) +
geom_bar(stat = "identity", position = "stack") +
scale_fill_brewer(palette = "Set3") + # Using a balanced and clear color palette
labs(title = "연도별 드론 자격종류별 취득자 현황 ",
x = "연도", y = "인원수(명)",
fill = "자격 종류") +
theme_minimal()

이렇게 간단하게 이미지를 캡쳐해서 데이터화하고 그것을 가시화 하는것 까지 쉽게 할 수 있는 시대가 되었다.
Lesson Learned
GPT와 협력하며 코딩을하고 데이터를 분석한지는 제법되었다. 일의 효율성이나 속도는 이전과 비교가 되지 않을 정도로 빨라지고, 생산성이 향상된것 만은 틀림없다. 그러면서도 마음 한구석이 찝찝하다. 자꾸 GPT에게 의지하려는 나를 발견하곤 놀라곤 한다. 알고리즘을 고민하지 않고 먼저 GPT에게 물어보려고 하고, 익숙하게 사용하던 함수와 명령어들을 기억해보려고 하지 않고 AI에게 물어 보기부터 한다. 인간의 두뇌는 저장된 기억을 다시 꺼내 쓰면서 기억이 강화된다고 하는데, 요즘에는 기억해내려고 노력 조차 하지 않고 다짜고짜 AI에게 물어 보기부터 한다. 디버깅하는 것은 더 심각하다. 에러가 나거나 결과가 내가 상상하던 결과와 다르게 나오면, 무엇이 문제인지 추론하고 추적하기 보다는 GPT에게 물어보기부터 한다.
글쎄 다른 사람들에게는 능력있어 보일 지 모르나, 나는 바보가 되어 가는 느낌이 든다. 나만 그런건가?