【자연 대화】드디어 자연어로 대화할 수 있게 되었는데, 왜 다시 프로그래밍으로 돌아가야 할까? — 천천히 배우는 AI029
서론
- 프롬프트에 코드를 작성하는 것은 정말 필요하지 않습니다
- 어렵게나마 자연어로 대화할 수 있게 되었는데
- 이는 자연어 프로그래밍이 아닙니다
- 프로그래밍은 프로그래머에게 맡기는 게 좋습니다
- 우리 일반인들을 힘들게 하지 말아주세요
- 프로그래머는 코드를 제대로 작성해야 합니다
- 프롬프트에 코드를 포함하면 디버깅하기도 힘듭니다
- 일반인에게 학습의 부담과 불안을 주는 것은 필요치 않습니다
- 프롬프트에 코드를 작성할 필요는 전혀 없습니다
1. 프롬프트에서 코드를 작성하는 것이 어떤 경험인지
1.1 실패한 프롬프트 사례가 우리에게 필요하지 않음을 보여줍니다
프롬프트 및 출력 결과
당신은 코드 실행 기능을 갖춘 단어 복습 카드 생성기로, 사용자 입력의 행수, 열수, 학년 및 날짜에 따라 카드를 생성합니다. 아래 코드를 참고하여 실행하십시오:
1 | import pandas as pd |
시작할 때, 사용자의 행수, 열수, 학년 및 날짜 정보를 입력 받으며, 그 후 코드를 실행하여 사용자에게 그래프를 제공합니다.
출력 결과, 코드가 실행되었습니다
그 코드입니다:
1 | import pandas as pd |
이 실패한 사례에서 우리는 몇 가지 포인트를 알 수 있습니다:
- 전통적인 프로그래밍 언어의 효과를 얻으려면 많은 노력이 필요합니다.
- 코드의 디버깅과 수정이 매우 번거롭고 복잡합니다.
- 프롬프트에 코드를 삽입할 필요성이 전혀 보이지 않습니다.
이때 누군가가 이렇게 말할 것입니다, 당신의 프로그래밍 실력이 너무 낮아서 그렇다고…
음, 맞습니다, 사실 저의 코드 작성 능력은 아주 보통입니다.
하지만 잠깐, AI가 이렇게 높은 프로그래밍 능력을 요구한다면, 이건 정말로 AIGC일까요?
또 다른 간단한 변수를 사용하는 예를 살펴보면, 실제로 이는 어떤 언어인지 알 수 없을 정도입니다.
1.2 임베디드 의사 코드의 사례
프롬프트 및 출력 결과
1 | "내 관심사 {interests}, 예산 {budget}, 여행 기간 {travel_duration}, 동행 인원 수 {number_of_companions}를 바탕으로 여행 계획을 세워주세요." "관심사는 {list_of_interests}를 포함합니다." "예산 범위는 {budget_range}입니다." "여행 기간은 {length_of_trip}일입니다." "나는 {number_of_people}명과 여행을 하며, 그들의 연령대와 관심사는 {ages_and_interests}입니다." "매일의 여행 일정에 대한 상세한 제안을 제공하고, 음식을 추천 {meal_preferences} 및 숙소 선택 {accommodation_preferences}도 포함해 주세요." |
비록 이 예제가 완벽하지는 않지만, 변수들이 포함된 프롬프트 템플릿으로 보여집니다. 이는 특정 상황에서는 효과적임을 알 수 있습니다. 이와 유사한 사례로 더 복잡한 프롬프트를 설계할 수 있으며, 더 많은 결정 요인과 변수를 추가하여 상호작용 과정을 보다 상세하게 다수 지점으로 만들 수 있습니다. 아래는 다양한 상황에 대한 복잡한 버전의 예시입니다:
상황 1: 완전한 건강식 레시피 계획
초기 프롬프트:
1 | "내 {dietary_restrictions}에 기반하여, 다음 {number_of_days}일 동안 {meal_type} 식단 계획을 세워주세요." |
상황 2: 심층 기술 제품 평가
초기 프롬프트:
1 | "나는 {product_name} 구매를 고려하고 있으며, 해당 제품의 상세 기능 {detailed_features}, 사용자 평가 {detailed_reviews}, 가격 비교 {price_comparison}, 그리고 구매 조언 {purchase_advice}를 제공해 주세요." |
상황 3: 상세한 학습 자원 계획
초기 프롬프트:
1 | "나는 {subject}를 배우고 싶습니다. 나의 학습 스타일 {learning_style}과 사용 가능한 시간 {available_time}을 고려하여 적합한 학습 자원을 추천해 주세요." |
상황 4: 세밀한 직업 전환 경로
초기 프롬프트:
1 | "현재 직업은 {current_job}이고, {industry_interest} 산업에 관심이 있습니다." |
다음으로, 간단한 논리 관계가 있다면 어떤 형태일지 살펴봅시다.
1.3 약간의 논리 관계가 있는 의사 코드/자연어가 대략 어떨지
프롬프트 및 출력 결과
1 | 입력: n |
보기에는 비교적 간단하지만, 조금 복잡하게 해보면 어떨까요?
1 | 입력: 정렬된 배열 A, 찾고자 하는 값 val |
나는 그것에게 99를 찾으라고 지시하지 않았습니다. 그것은 혼자서 찾으러 갔습니다…
위의 사례들은 과학적인 느낌이 많이 들며, 우리 대부분의 일상과는 크게 관련이 없습니다.
위의 것은 ChatGPT 3.5에서 수행된 것으로, 실제로 계산이 이루어졌는지는 논란의 여지가 있습니다. 그러나 이는 우리가 계속 탐구를 이어가는 데 방해가 되지 않습니다. 대다수의 사람들이 복잡하고 변동이 많은 프로그래밍 언어를 깊이 탐구할 필요는 없으며, 그 노력을 아낄 필요는 없습니다. 중요한 문제는, 위의 자연어와 의사 코드가 도대체 무엇인지 혼란스럽게 만든다는 점입니다. 만약 프롬프트가 복잡해지면, 실제 산업 환경에서는 문제가 매우 복잡해질 수 있습니다:
- 결과는 제어할 수 없습니다
- 위의 예에서 이미 환각 문제가 발생했습니다
- 과정은 제어할 수 없습니다
- 8000줄의 코드가 포함된 SQL 저장 프로시저와 비슷하게
- 시스템 업그레이드가 있을 때마다, 누구도 건드릴 수 없습니다
가장 큰 프롬프트는 여전히 https://github.com/JushBJJ/Mr.-Ranedeer-AI-Tutor입니다.
2. 자연어 프로그래밍이란 무엇인가
프롬프트가 등장한 이후, OpenAI와 같은 대형 모델 회사의 홍보에 따라, 뉴스계는 뜨거운 반응을 보였습니다. 기사가 떠올랐습니다!
프롬프트는 새로운 프로그래밍 언어로 오해되어, 이를 마스터하면 수없이 많은 군대를 지휘할 수 있는 것처럼 보이며, AIGC 군대도 많아져 그림 그리기, 글쓰기, 영화 촬영 등 다양한 요구를 쉽게 충족할 수 있습니다! 정말 쉽습니다!!
유일한 문제는:
- 나는 아직 배우지 못했습니다.
- 그러나 이것은 분명히 쉽다고 믿습니다.
- 하지만 현재로서는 여전히 배우지 못했습니다.
그렇다면 자연어 프로그래밍은 대체 무엇인지, 젠슨 황이 프로그래밍을 배우지 말라고 한 뜻은 무엇일까요?
그 문제는 매우 오래된 경우로 돌아갈 수 있습니다…
추적하지 않겠습니다. 간단히 말해, 우리는 컴퓨터가 문제를 해결해주기를 원하지만, 실상 그게 쉽지 않다는 점을 발견했습니다. 그래서 몇몇 과학자들은 계산에서 출발하여 문제 해결 수단과 방법을 조금씩 축적해 나갔습니다.
과학자들은 몇 가지 자연 현상을 발견하고 이를 수학 문제로 추상화하여 해결했습니다. 예를 들어, 닭과 토끼 문제를 방정식으로 해결하는 방식입니다.
점점 발전하면서, 수학자들은 문제를 점점 더 추상화해갔고, 그래서 더 많은 수학 도구를 활용하게 되었습니다. 이러한 것들은 인위적으로 계산하기는 매우 어려운 것들로, 이를 위해 컴퓨터와 프로그래밍 언어가 나왔습니다. 대부분의 사람들이 프로그래밍 언어를 배우는 과정은 데이터 유형을 이해하고, if/else를 배우고, for 루프를 이해하는 등의 과정을 포함합니다.
이것들은 컴퓨터가 문제를 해결하는 방법으로, 문제를 추상화하고 단순화하며 문제의 분산을 제한합니다. 이점은 명확합니다. 문제의 수렴과 해결 수단의 수렴이 이루어집니다. 문제의 명확한 단점도 있습니다. 어떤 문제는 수렴하기 어려운 것이 있어서, 분산을 필요로 합니다.
그래서 누군가는 프로그래밍 언어를 배우지 않아도 될 것이라고 생각하게 되었습니다. 현재로서는 문제가 복잡해질수록 오히려 프로그래밍을 하는 것이 나을 수도 있습니다! 예를 들어, 나는 포토샵을 사용할 줄 모르고 단지 그림판이나 몇 가지 간단한 온라인 도구만 아는 정도입니다. 그러나 복잡한 이미지를 처리해야 한다면 결국 포토샵을 배우는 것이 낫습니다! 문제의 역설은, 자연어 프로그래밍으로 결과를 어떻게 평가할 것인가입니다? 우리는 자연어로 프로그래밍을 했지만, 어떻게 그것이 틀리지 않았는지 평가할 수 있을까요?
우리는 모두 대형 언어 모델이 항상 단어 이어가기를 하고 있다는 말을 잘 알고 있습니다. 그래서
1 | 1+1=2 |
는 그것이 계산해서 나온 것이 아니라, 비슷한 훈련 자료를 본 후 이어지는 것입니다. 이러한 문제를 개선하기 위해, OpenAI는 작년에는 코드를 해석하는 기능을 출시하였습니다. 이는 이러한 프로그래밍을 할 줄 모르는 사람들에게 희망을 주었습니다.
3. 코드 해석기가 무엇을 할 수 있는가
간단히 말해서, OpenAI는 기존의 대형 모델에 파이썬을 실행할 수 있는 샌드박스 환경을 추가한 것으로 이해할 수 있습니다. 이를 통해 문맥의 의도를 이해하고 스스로 코드를 생성하여 실행하며, 결과를 요약해 우리에게 알려줍니다.
코드 해석기는 우리가 원하는 기능을 수행해줄 사람을 찾는 것과 같습니다. 조금 복잡한 원리적 사고는 나중에 두고. 파이썬이 할 수 있는 대부분의 작업을 수행하며, 우리가 흔히 겪는 몇 가지 전형적인 상황을 살펴보겠습니다.
아래 나열된 4개의 상황은 전문적인 도구로 수행할 수 있는 것들이지만, 이러한 상황에 새로운 선택을 시도해 볼 기회를 제공합니다. 마치 모바일 인터넷이 막 시작될 때처럼 과거의 논란을 겪고, 점차 균형을 이루어 많은 일들이 그렇게 전문가 도구를 열지 않고도 해결될 수 있습니다.
때때로 이를 10회 이상 실행했지만, 마지막에는 실패하는 상황이 있다면 조금 이상한 기분이 들기도 합니다. 얼마 전에는 TickTick의 요약을 분석해 보려 했으나 10회 이상 실패했습니다.
결론적으로, 이를 탐구하는 데 매우 적합합니다.
어떻게 이를 활성화할 수 있을까요? GPTs 내에 옵션이 있으며 체크를 하면 GPTs는 이 능력을 갖추게 됩니다. 현재 GPT4 대화에서는 파이썬 능력이나 코드 실행 능력을 사용하도록 요청하여 설명할 수 있습니다:
위의 상호작용에서 볼 수 있듯이, 전체 과정은 여전히 간단합니다.
3.1 데이터 분석 및 시각화
여기의 방법은 우리의 요구 사항을 설명하지 않고, 단순히 csv 또는 excel 파일을 제공함으로써 바로 분석하게 할 수 있으며, 그 역시 적합한 차트를 찾아낼 수 있게 됩니다. 만약 만족하지 않다면 더욱 자세히 설명할 수 있습니다.
현대 기업 및 연구 환경에서 데이터 분석과 시각화는 데이터의 트렌드와 패턴을 통찰하는 핵심 도구입니다. ChatGPT의 코드 해석기 플러그인은 pandas와 matplotlib 같은 강력한 데이터 과학 라이브러리를 지원함으로써 이 과정을 크게 단순화합니다. 사용자는 자연어로 요청하여 ChatGPT에게 데이터 작업 및 차트 생성을 지시할 수 있어 데이터 분석이 보다 직접적이고 사용자 친화적으로 이루어집니다.
예를 들어, 한 시장 분석가는 제품 판매 데이터를 분석하고 다양한 지역의 판매 성과를 보여줘야 할 수 있습니다. 코드 해석기를 통해 CSV 파일에서 판매 데이터를 읽도록 지시하고, pandas를 사용하여 각 지역의 총 판매액을 계산한 후 matplotlib으로 막대 그래프를 생성하게 할 수 있습니다. 복잡한 코드를 직접 작성할 필요 없이 데이터 분석 작업과 시각화 요구 사항을 간단히 설명함으로써 업무를 처리할 수 있습니다.
또한, 코드 해석기의 강력한 기능은 시계열 분석, 예측 모델링 및 복잡한 통계 테스트를 쉽게 수행할 수 있게 합니다. 예를 들어, 한 환경 과학자는 지난 10년 간의 기온 변화 데이터를 분석하려고 할 수 있습니다. 코드 해석기를 통해, 그들은 데이터 세트를 로드하고 원활한 회귀 모델을 적용하여 세부 경향을 시각적으로 표현하는 차트를 신속하게 생성할 수 있습니다.
차트의 경우, 일상적인 분석은 이미 Excel에서 매우 포괄적으로 다루고 있으며, 전문 도구 또한 많습니다. ChatGPT는 일반인들에게 제공하는 가치는 이러한 분석 각도 및 해석 각도에서 영감을 줄 수 있는 것이죠. 예를 들어:
여기서 문제 하나가 있다면, 차트가 중국어로 표시되면 제대로 나타나지 않을 수 있으며, 글꼴 파일을 업로드해야 할 수 있습니다. 현재로서는 이를 해결하지 못하였습니다.
3.2 파일 변환의 유연성
현재 이 방식은 그리 잘되지 않는 것 같지만, 시도해볼 수 있습니다. 저는 mp4를 mp3로 변환해보았는데, 그다지 큰 의미가 있는지 의문이 듭니다. 의미지만, 있을 뿐입니다. 이는 이미지 배경을 제거하는 것과 같습니다.
파일 형식 변환은 많은 전문 분야에서 흔히 요구되는 사항으로, 많은 문서 및 멀티미디어 파일을 처리할 때 특히 중요합니다. 코드 해석기는 파일 변환 과정을 간소화하여 큰 편의를 제공합니다. 과학 연구, 엔지니어링 설계 또는 일상적인 비즈니스 운영 측면에서도 다양한 형식 간의 신속하고 정확한 변환은 효율성을 높이는 핵심 요소입니다.
파이썬의 pandas 라이브러리를 통합함으로써, 코드 해석기는 CSV 파일에서 Excel 파일로 변환하는 것이나 그 반대의 변환을 쉽게 수행할 수 있게 됩니다. 이는 다양한 소프트웨어 플랫폼 간 데이터 이식을 필요로 하는 사용자에게 큰 혜택을 줍니다. 예를 들어, 한 재무 분석가는 재무 보고서를 Excel에서 CSV 형식으로 변환하여 추가 처리를 위해 활용해야 할 수 있습니다. 코드 해석기를 통해, 이러한 작업은 간단한 지시로 수행될 수 있습니다.
이미지 처리의 경우, 코드 해석기는 파이썬의 PIL(Pillow) 라이브러리를 사용하여 다양한 이미지 형식, 예를 들어 JPEG에서 PNG로의 변환을 수행할 수 있습니다. 이는 이미지 편집, 웹 디자인 및 인쇄 산업에서 특히 중요합니다. 디자이너나 사진가는 코드 해석기를 활용하여 신속하게 이미지 형식을 조정하여 다양한 출력 요구에 부합하게 만들 수 있습니다.
결론적으로 코드 해석기의 응용 범위는 광범위하며 강력한 기능을 가지고 있습니다. 데이터를 단순히 형식 변환하여 복잡한 분석과 시각화를 수행하는 것까지, 현대 도구로서의 실용성과 혁신성을 보여줍니다. 이러한 기능은 작업 효율성을 높여주며 비전문 사용자가 전문 지식이 필요한 작업을 더 쉽게 처리할 수 있게 도와줍니다. 기술이 발전하고 사용자 요구가 계속 확장됨에 따라, 코드 해석기가 더 많은 분야에서 그 독특한 가치를 발휘할 것으로 기대됩니다.
3.3 코드 개발 및 프로토타입 설계
코드 해석기는 소프트웨어 개발 및 프로토타입 설계에 혁신적인 도구를 제공하여 개발자가 코드 조각을 신속하게 반복하고 테스트할 수 있게 해줍니다. 즉각적인 피드백과 실행 환경을 제공함으로써 코드 해석기는 개발자가 알고리즘과 기능을 실시간으로 검증할 수 있게 하여 개발 주기를 크게 단축시키고 효율성을 높이게 됩니다. 이는 초기 개발에서 특히 유용하며 개념을 검증하거나 새로운 아이디어를 테스트해야 할 때, 즉시 결과를 얻을 수 있어 전통적인 개발에서의 컴파일 및 실행 대기 시간을 회피할 수 있게 됩니다.
예를 들어, 개발자는 코드 해석기를 사용하여 웹 페이지를 스크래핑하는 스크립트 프로토타입을 신속하게 생성하고 다양한 파싱 전략을 테스트하거나 데이터 통합 프로세스가 기대한 대로 작동하는지를 검증할 수 있습니다. 단순한 명령을 통해 코드 해석기는 즉시 스크립트를 실행하고 출력을 보여주며 디버깅 정보를 제공함으로써 개발자가 문제를 즉시 파악하고 조정할 수 있게 합니다.
- 웹 콘텐츠 로딩:
requests
라이브러리를 사용하여 목표 웹사이트에서 HTML 콘텐츠를 가져옵니다. - HTML 파싱:
BeautifulSoup
과 같은 라이브러리를 사용하여 HTML을 파싱하여 필요한 데이터를 추출합니다. - 데이터 처리: 추출된 데이터를 정리하고 포맷하여 추가 분석이나 저장합니다.
- 결과 표현: 데이터를 출력하거나 시각화하여 스크래핑 결과의 정확성을 검증합니다.
1 | import requests |
이러한 상황에서는 테스트와 검증 작업을 수행하는 데 도움을 줄 수 있으며, 그것에 비해 큰 공정을 초기화하거나 설정할 필요가 없습니다. 물론 최종적으로 그렇게 해야겠지만, 이 덕분에 시간을 절약할 수 있습니다.
또한, 코드 해석기는 다양한 라이브러리 및 모듈을 지원하여 가장 최신의 개발 도구와 언어 기능을 활용할 수 있게 해줍니다. 예를 들어, TensorFlow나 PyTorch를 사용하여 머신러닝 모델의 신속한 프로토타입 개발을 가능하게 합니다. 이로 인해 새로운 기술을 탐구하는 속도가 빨라지며, 개발자에게는 안전한 실험 환경을 제공하여 기존 개발 설정을 손상시킬 우려 없이 새로운 도구를 실험하고 배울 수 있습니다.
3.4 복잡한 수학 문제 해결
코드 해석기는 프로그래밍 및 소프트웨어 개발을 위한 강력한 도구일 뿐만 아니라 복잡한 수학 문제를 해결하는 데 효과적인 보조 도구도 됩니다. numpy 및 scipy와 같은 과학 계산 라이브러리를 통합함으로써, 코드 해석기는 기본적인 산술 연산에서 복잡한 수학적 모델링 및 통계 분석에 이르기까지 광범위한 수학적 연산을 수행할 수 있습니다.
과학 연구 및 엔지니어링 분야에서 연구자와 엔지니어는 종종 방대한 데이터를 복잡하게 처리해야 합니다. 이에는 선형 대수 연산, 푸리에 변환, 통계 데이터 분석 등이 포함되며, 코드 해석기는 이러한 연산을 신속하게 수행하고 직관적인 결과 출력을 제공하여 사용자가 연산이 정확한지, 데이터에서 나타나는 경향이나 패턴을 즉시 확인할 수 있게 합니다.
예를 들어, 한 환경 과학자는 기후 변화가 지역 온도에 미치는 영향에 대해 연구하고자 합니다. 코드 해석기를 통해, 그들은 과거 온도 데이터를 로드하고 통계 모델을 적용하여 온도 변화를 분석하고, 결과를 시각화하기 위해 그래프를 생성할 수 있습니다. 이러한 즉각적인 피드백과 강력한 계산 능력은 연구자들이 데이터 분석과 해석에 더 집중할 수 있도록 도와줍니다.
3D 표면 | 프랙탈 |
---|---|
위의 이러한 사례들은 현실에서 이미 성숙한 해결책들로 존재합니다.
4. 코드 해석기의 원리 분석
내가 물어봤습니다
1 | 파이썬의 능력을 활용하여, 샌드박스의 리눅스 전체 버전 정보 및 파이썬 버전 정보를 알려주세요. 마지막으로 두 개의 명령을 실행하여 더 자세한 정보를 얻고, 모든 결과를 보여주세요. 이 두 개의 명령은: uname -a lsb_release -a입니다. |
답변
현재 샌드박스 환경에서 다음의 시스템 및 파이썬의 상세 정보를 얻었습니다:
리눅스 전체 버전 정보:
Linux-4.4.0-x86_64-with-glibc2.36
파이썬 버전 정보:
3.11.8 (main, Mar 12 2024, 11:41:52) [GCC 12.2.0]
uname -a
명령 결과:Linux 3dfa9ec0-11da-496f-831c-878f4773c1c6 4.4.0 #1 SMP Sun Jan 10 15:06:54 PST 2016 x86_64 GNU/Linux
- 이는 리눅스 커널 버전 4.4.0이 2016년에 구축되었으며 x86_64 아키텍처를 사용하고 있음을 나타냅니다.
lsb_release -a
명령 결과:Distributor ID: Debian Description: Debian GNU/Linux 12 (bookworm) Release: 12 Codename: bookworm
- 이는 현재 운영 체제가 Debian GNU/Linux이며, 버전 번호는 12, 코드네임은 bookworm임을 나타냅니다.
여기서 우리는 파이썬을 실행할 수 있는 샌드박스라는 것을 알 수 있으며, 실제로 명확한 제한이 있습니다:
- 인터넷 접속 금지
- 테스트 결과 curl은 접근할 수 있는 것 같습니다
- 명령은 120초 초과 금지
- 너무 오래 걸리면 바로 중단됩니다
- root 접근 금지
- 이는 일부 소프트웨어 설치에 영향을 줄 수 있습니다
이 글의 목적은 프롬프트에 코드를 작성할 필요가 없음을 설명하는 것이며, 이를 잘 활용하는 것이 더 좋습니다.
5. 결론: 코드 해석기의 미래 가능성
코드 해석기는 혁신적인 도구로써 여러 분야에서 응용 가능성과 실질적인 가치를 보여주고 있습니다. 데이터 과학, 소프트웨어 개발, 복잡한 수학 문제 해결 및 프로토타입 설계의 신속한 반복에서 코드 해석기는 작업 효율성을 높이는 데 기여하며, 연구 및 개발에 전례 없는 유연性과 속도를 제공합니다. 미래를 바라보면, 인공지능 기술의 지속적인 발전과 함께 코드 해석기가 더 깊이 있는 머신러닝 통합, 자동화된 테스트 생성, 그리고 클라우드 협업과 같은 기능들을 통합할 것으로 기대됩니다. 이로 인해 코드 해석기의 응용 범위가 더욱 확장되고 현대 기술에서의 영향력도 심화될 것입니다.