Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

IT Info

챗GPT 코드 작성법: 할 수 있는 것과 없는 것

권현욱(엑셀러) 2024. 6. 25. 14:41
반응형

들어가기 전에

챗GPT를 이용하면 꽤 괜찮은 코드를 작성할 수 있습니다. 물론 VBA 코딩도 해당됩니다. 일상적인 코딩 연습의 일부로 챗GPT를 사용하여 코드를 작성하는 방법을 소개합니다.

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft Excel MVP · Excel 솔루션 프로바이더 · 작가

이미지: 아이엑셀러 닷컴

 

※ 이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.


  • 원문: How to use ChatGPT to write code: What it can and can't do for yo
  • URL: https://www.zdnet.com/article/how-to-use-chatgpt-to-write-code/

개요

일상적인 코딩 연습의 일부로 ChatGPT를 사용하여 코드를 작성하려면 어떻게 해야 할까요? 다음은 간단한 요약입니다.

  • ChatGPT는 유용한 코드와 사용할 수 없는 코드를 모두 생성할 수 있습니다. 최상의 결과를 얻으려면 명확하고 자세한 메시지를 제공하세요.
  • ChatGPT는 처음부터 완전한 애플리케이션을 구축하는 대신 특정 코딩 작업이나 루틴을 지원하는 데 탁월합니다.
  • ChatGPT를 사용하여 특정 목적에 적합한 코딩 라이브러리를 찾아 선택하고 대화형 토론에 참여하여 옵션 범위를 좁힐 수 있습니다.
  • AI 생성 코드의 소유권에 주의하고 항상 코드의 신뢰성을 확인하세요. 생성된 출력을 맹목적으로 신뢰하지 마세요.

 

ChatGPT와의 상호작용을 대화로 처리하세요. AI의 응답을 기반으로 질문을 구체화하여 원하는 결과에 더 가까워지세요.
이제 ChatGPT를 훨씬 더 깊이 살펴보겠습니다.

 

ChatGPT는 어떤 유형의 코딩을 잘 할 수 있나요?

ChatGPT와 코딩에 관한 두 가지 중요한 사실이 있습니다. 하나는 AI가 실제로 유용한 코드를 작성할 수 있다는 것이고, 다른 하나는 완전히 길을 잃을 수도 있고, 토끼 굴에 빠질 수도 있고, 쓸모없는 쓰레기를 생산할 수도 있다는 사실입니다.

필자는 이것을 어려운 방법으로 발견했습니다. WordPress 플러그인을 완성한 후 ChatGPT가 어디까지 갈 수 있는지 알아보기로 결정했습니다. 사용자 인터페이스 요소, 상호 작용, 설정에서 제공되는 내용, 작동 방식 등에 대한 자세한 설명을 포함하여 Mac 응용 프로그램에 대한 매우 신중한 프롬프트를 작성했습니다. 그런 다음 ChatGPT에 프롬프트를 제공했습니다.

 

ChatGPT는 수많은 텍스트와 코드로 응답했습니다. 그런 다음 중간 코드가 중지되었습니다. 계속하라고 요청했을 때 더 많은 코드와 텍스트가 토해졌습니다. 계속한 후에 계속을 요청했는데 점점 더 많은 코드가 덤프되었습니다. 하지만 그 어느 것도 쓸모가 없었습니다 . 코드가 어디로 가야 하는지, 프로젝트를 어떻게 구성해야 하는지 식별하지 못했고, 생성된 코드를 주의 깊게 살펴보면 제가 요청한 주요 작업을 생략하고 "프로그램 논리가 여기에 있습니다"라는 간단한 텍스트 설명만 남겼습니다.

여러 번 반복된 테스트를 거친 후 ChatGPT에 완전한 애플리케이션 제공을 요청하면 실패할 것이라는 사실이 분명해졌습니다. 이 관찰의 결과는 코딩에 대해 아무것도 모르고 ChatGPT가 무언가를 구축하기를 원한다면 실패할 것이라는 것입니다.

ChatGPT가 성공하고 매우 잘하는 곳은 특정 루틴을 구축하고 특정 작업을 완료하기 위해 코딩하는 방법을 이미 알고 있는 사람을 돕는 것입니다. 메뉴 표시줄에서 실행되는 앱을 묻지 마세요. 그러나 ChatGPT에 메뉴 표시줄에 메뉴를 넣은 다음 이를 프로젝트에 붙여넣는 루틴을 요청하면 도구가 꽤 잘 작동할 것입니다.

ChatGPT는 엄청난 양의 도메인 관련 지식을 갖고 있는 것처럼 보이지만 지혜가 부족하다는 점을 명심하세요 . 따라서 도구는 코드를 작성할 수는 있지만 이해하기 위해 깊은 경험이 필요한 매우 구체적이거나 복잡한 문제에 대한 미묘한 차이가 포함된 코드를 작성할 수는 없습니다.

ChatGPT를 사용하여 기술을 시연하고, 작은 알고리즘을 작성하고, 서브루틴을 생성하세요. ChatGPT를 사용하면 더 큰 프로젝트를 덩어리로 나누고 해당 덩어리를 코딩하는 데 도움을 요청할 수도 있습니다. 따라서 이를 염두에 두고 ChatGPT가 코드 작성에 어떻게 도움이 될 수 있는지 몇 가지 구체적인 단계를 살펴보겠습니다.

ChatGPT를 사용하여 코드를 작성하는 방법

1. 요청 범위를 좁히고 구체화하세요

첫 번째 단계는 ChatGPT에 무엇을 요청할지 결정하는 것입니다. 하지만 아직 아무것도 묻지 마세요. 함수나 루틴에서 수행할 작업이나 코드에 통합하기 위해 배우고 싶은 내용을 결정하세요. 코드에 전달할 매개변수와 내보내려는 내용을 결정하세요. 그리고 그것을 어떻게 설명할지 살펴보세요.

이 작업을 수행하기 위해 인간 프로그래머에게 비용을 지불한다고 상상해 보세요. 그 사람에게 당신의 임무를 수행할 수 있을 만큼 충분한 정보를 제공하고 있나요? 아니면 여러분이 너무 모호하고 당신이 지불하는 사람이 질문을 하거나 당신이 원하는 것과 전혀 관련이 없는 것을 제출할 가능성이 더 높은가요?

여기에 예가 있습니다. 어떤 웹 페이지든 요약할 수 있기를 원한다고 가정해 보겠습니다. 필자는 이 기사와 같은 내용을 제공하고 잘 고려되고 적절한 짧은 요약을 받고 싶습니다. 입력 내용으로 웹페이지 URL을 지정하겠습니다. 출력은 요약이 포함된 텍스트 블록입니다.

2. ChatGPT를 사용하여 라이브러리 및 리소스 탐색

위의 예를 계속하면 웹 페이지 데이터를 추출하는 아주 오래된 방법은 HTML 단락 태그 사이에서 텍스트를 찾는 것입니다.

그러나 AI 도구의 등장으로 AI 라이브러리를 사용하여 지능적인 추출 및 요약을 수행하는 것이 더 합리적입니다. ChatGPT가 뛰어난 점 중 하나는 라이브러리와 리소스를 찾는 것입니다.

OpenAI는 우리가 원하는 것을 정확히 수행하는 GPT-3 및 GPT-4 엔진에 대한 API 액세스를 판매합니다. 하지만 이 예의 경우 거래 수수료를 지불하고 싶지 않다고 가정해 보겠습니다.

이제 PHP에서 실행되는 프로젝트에서 이러한 도구를 무료로 사용하는 방법을 알아보기 위해 ChatGPT와 상호 작용하는 방법을 살펴보겠습니다.


필자는 어떤 라이브러리가 내가 원하는 기능을 제공하는지에 대한 정보를 끌어내도록 설계된 프롬프트로 시작했습니다. 라이브러리는 특정 목적을 위해 많은 무거운 작업을 수행하는 프로그래머가 액세스할 수 있는 코드 본체입니다. 현대 프로그래밍의 큰 부분은 올바른 라이브러리를 찾고 선택하는 것이므로 이것이 좋은 출발점이 됩니다. 첫 번째 프롬프트는 다음과 같습니다.

광고나 삽입된 자료를 무시하고 웹페이지의 주요 핵심 콘텐츠에 대한 요약을 생성하는 데 사용할 수 있는 10가지 오픈 소스 AI 라이브러리(및 해당 라이브러리에서 작동하는 언어)를 설명하세요.

 

이 프롬프트는 OpenAI의 제품에 대한 언급을 포함하여 제가 원하는 것을 정확하게 제공했습니다. OpenAI가 여기서는 훌륭할 것이라고 생각하지만, 이 가상 프로젝트에서는 API 비용에 대한 예산을 책정하고 싶지 않습니다. 질문의 범위를 좁히겠습니다.

ChatGPT는 답변으로 베팅을 헤지했습니다. 내용은 다음과 같습니다. "예, AI 라이브러리 10개 모두 오픈 소스이며 무료로 사용할 수 있습니다. 그러나 일부에는 사용 제한이 있거나 추가 기능이나 리소스에 액세스하려면 비용을 지불해야 할 수 있습니다." 그래서 이를 바탕으로 쿼리를 명확히 했습니다.

다음 중 사용 제한이 없고 추가 결제나 라이선스가 필요하지 않은 라이브러리는 무엇입니까?

 

이것이 얼마나 대화의 방식으로 진행되는 지 주목하세요. 원래 질문을 다시 물어볼 필요가 없습니다. 전문가가 가까이 있고 설명을 구할 때와 같은 방식으로 드릴다운할 뿐입니다. 이 경우 ChatGPT는 8개의 라이브러리 선택권을 주었지만 그 중 어느 것도 코딩할 PHP 언어를 언급하지 않았습니다. 다음 프롬프트는 이렇습니다.

8개의 라이브러리 중 PHP와 함께 사용할 수 있는 라이브러리는 무엇입니까?

 

세 개의 라이브러리를 반환했지만 각각의 기능이 무엇인지 확신할 수 없었습니다. 또 다른 질문은 다음과 같습니다.

Sumy, Gensim 및 NLTK의 차이점은 무엇입니까?


아직 확신이 없어서 사용 계획을 명확히 한 후 질문했습니다.

웹페이지 뉴스 기사의 요약을 만들고 싶다면 어떤 라이브러리가 더 잘 작동할까요?


필자가 얻은 대답은 명확하고 희망적이었습니다. "Sumy는 텍스트에서 가장 중요한 정보를 포착하는 요약을 작성하는 작업인 텍스트 요약을 위해 특별히 설계되었습니다." 이제 PHP에서 Sumy를 사용하는 데 무엇이 관련되어 있는지 살펴보겠습니다. 나는 프로젝트의 이 부분에 대해 마지막 질문을 했습니다.

PHP에서 Sumy를 사용하는 방법을 설명해 줘.


컴퓨터에서 자유롭게 플레이하고 이러한 프롬프트를 ChatGPT 인스턴스에 붙여넣으세요. 첫 번째 단계에서는 어떤 프로그램 모듈에 대해 도움을 받을지 결정했습니다. 그런 다음 이 단계에서는 사용할 라이브러리와 이를 프로젝트에 통합하는 방법을 결정하기 위해 ChatGPT와 대화를 나누었습니다.

프로그래밍처럼 보이지 않을 수도 있지만, 프로그래밍이라고 확신합니다. 프로그래밍은 단순히 페이지에 코드 줄을 쏟아 붓는 것이 아닙니다. 프로그래밍은 다양한 리소스와 시스템을 모두 통합하는 방법과 솔루션의 모든 다양한 구성 요소와 통신하는 방법을 알아내는 것입니다. 여기서 ChatGPT는 통합 분석을 수행하는 데 도움이 되었습니다.

구글의 Gemini AI (구 Bard)도 같은 방식으로 도움을 줄 수 있을지 궁금했습니다. Gemini는 실제로 코드를 작성할 수 없지만 ChatGPT의 응답을 통해 프로그래밍의 계획 측면에 대한 추가 통찰력을 제공했습니다. 따라서 주저하지 말고 여러 도구를 사용하여 원하는 답변을 삼각측량해 보세요. 그 이야기는 다음과 같습니다. Gemini와 ChatGPT: Gemini가 코딩을 도와줄 수 있나요? 

 

필자가 그 글을 쓴 이후로 Google은 Gemini에 몇 가지 코딩 기능을 추가했지만 그다지 훌륭하지는 않습니다. 여기에서 이에 대한 내용을 읽을 수 있습니다. 저는 Google Gemini의 새로운 코딩 기술을 테스트했습니다. 잘 안 됐어요 . 그리고 최근에는 Gemini Advanced에 대해 알아봤습니다 . 아직 많은 테스트를 통과하지 못했습니다.

 

3. ChatGPT에 예제 코드 작성을 요청하세요

여기서 잠시 멈추겠습니다. 이 문서의 제목은 "ChatGPT를 사용하여 코드를 작성하는 방법"입니다. 그리고 그럴 것입니다. 하지만 우리가 실제로 하고 있는 일은 ChatGPT에 예제 코드 작성을 요청하는 것입니다.

분명히 하자면, 매우 작은 기능(예: ChatGPT가 내 아내를 위해 작성한 라인 분류기/랜더마이저 )을 작성하지 않는 한 ChatGPT는 최종 코드를 작성할 수 없습니다. 이전에 발견한 바와 같이 프롬프트가 사실상 동일하더라도 ChatGPT는 매우 예상치 못한 방식으로 제공되는 내용을 변경할 수 있습니다. 결론적으로 ChatGPT는 코드를 유지 관리하거나 수정할 수도 없습니다.

 

이러한 제한은 사용자가 직접 수행해야 함을 의미합니다. 우리가 알고 있듯이 코드의 첫 번째 초안이 최종 코드가 되는 경우는 거의 없습니다. 따라서 ChatGPT가 최종 코드를 생성할 것이라고 기대하더라도 실제로는 코드를 완료하고, 더 큰 프로젝트에 통합하고, 테스트하고, 다듬고, 디버깅하는 등의 시작점이 될 것입니다.

 

하지만 그렇다고 해서 예제 코드가 쓸모없다는 뜻은 아닙니다. 전혀 쓸모가 없습니다. 앞서 설명한 프로젝트를 기반으로 작성한 프롬프트를 살펴보겠습니다. 첫 번째 부분은 다음과 같습니다.

summarine_article이라는 PHP 함수를 작성하세요.


입력으로 summary_article은 ZDNET.com 또는 Reuters.com과 같은 뉴스 관련 사이트의 기사에 대한 URL로 전달됩니다.

필자는 ChatGPT에게 사용해야 할 프로그래밍 언어를 알려주고 있습니다. 입력 내용도 알려주지만, 그러는 동안 ChatGPT가 기사 스타일을 이해할 수 있도록 두 사이트를 샘플로 제공합니다. 솔직히 ChatGPT가 그 지침을 무시하지 않았는지 잘 모르겠습니다. 다음으로, 대부분의 작업을 수행하는 방법을 알려줍니다.

summary_article 내에서 제공된 URL에서 웹페이지 콘텐츠를 검색하세요. PHP 내에서 Sumy 라이브러리와 필요한 기타 라이브러리를 사용하여 광고나 포함된 자료를 무시하고 기사의 본문을 추출한 다음 약 50단어로 요약합니다. 요약이 완전한 문장으로 구성되어 있는지 확인하세요. 필요한 경우 50단어 이상으로 이동하여 마지막 문장을 완성할 수 있습니다.

 

이것은 필자가 직원에게 지시하는 방법과 매우 유사합니다. 나는 그 사람이 Sumy에만 국한된 것이 아니라는 것을 알기를 바랍니다. 다른 도구가 필요하면 그것을 사용하기를 바랐습니다.

또한 요약으로 원하는 내용에 대한 경계를 만들기 위해 대략적인 단어 수를 지정했습니다. 루틴의 이후 버전에서는 해당 숫자를 매개변수로 사용할 수 있습니다. 그런 다음 나는 결과적으로 내가 원하는 것을 말하면서 끝냈습니다.

처리가 완료되면 요약_기사를 코드화하여 요약을 일반 텍스트로 반환합니다.


결과 코드는 매우 간단합니다. ChatGPT는 기사 내용을 검색하기 위해 다른 라이브러리(Goose)를 호출했습니다. 그런 다음 해당 요약을 50단어로 제한하여 Sumy에 전달한 다음 결과를 반환했습니다. 그러나 기본 사항이 작성되면 다시 돌아가서 조정을 추가하고 두 라이브러리에 전달된 내용을 사용자 정의하고 결과를 제공하는 것은 프로그래밍의 단순한 문제입니다.

 

이미지: zdnet

 

흥미로운 점 하나. 2023년 초에 처음 이 테스트를 시도했을 때 ChatGPT는 2021년 이후의 URL을 사용하여 작성한 루틴에 대한 샘플 호출을 만들었습니다. 당시 2023년 3월에 ChatGPT의 데이터 세트는 2021년까지만 사용되었습니다. 이제 ChatGPT 지식 기반이 확장되었습니다. 하지만 내 요점은 ChatGPT가 알 수 없는 샘플 링크를 구성했다는 것입니다.

https://www.reuters.com/business/retail-consumer/teslas-musk-says-fremont-california-factory-may-be-sold-chip-shortage-bites-2022-03-18/

 

Reuters 사이트와 Wayback Machine을 통해 해당 URL을 확인했는데 존재하지 않습니다. 절대로 ChatGPT가 정확하다고 가정하지 마세요. 그것이 제공하는 모든 것을 항상 다시 확인하세요.

 

자주 묻는 질문

Q1. ChatGPT가 프로그래머를 대체하나요?

지금은 아닙니다. 적어도 아직은 아닙니다. ChatGPT 프로그램은 재능 있는 1학년 프로그래밍 학생 수준이지만 게으릅니다. 이 도구는 초급 프로그래머의 필요성을 줄일 수 있지만 현재 수준에서는 초급 프로그래머(심지어 경험이 더 많은 프로그래머도)가 코드를 작성하고 정보를 찾는 데 더 쉽게 도움이 될 것이라고 생각합니다. 확실히 시간을 절약해 주지만 적어도 현재로서는 자체적으로 수행할 수 있는 프로그래밍 프로젝트가 거의 없습니다.

 

Q2. ChatGPT에서 코딩 답변을 얻으려면 어떻게 해야 하나요?

그냥 물어보세요. 위에서 원하는 답변의 범위를 좁히기 위해 대화형 토론 대화 상자를 사용하는 방법을 소개했습니다. ChatGPT로 작업할 때 하나의 질문이 마법처럼 모든 작업을 수행할 것이라고 기대하지 마십시오. 하지만 ChatGPT를 도우미와 리소스로 사용하면 매우 유용한 정보를 많이 얻을 수 있습니다. 물론, 해당 정보를 테스트해 보세요.

Q3. ChatGPT에서 생성된 코드는 오류가 없다고 보장되나요?

그렇지 않습니다. 인간 프로그래머가 작성한 코드도 믿을 수 없습니다. 필자의 경우에도 필자가 작성한 어떤 코드도 신뢰하지 않습니다. 코드는 코드 제작 과정에서 엄청나게 결함이 있는 상태로 나옵니다. 항상 버그가 있습니다. 완료하기 전에 테스트하고, 테스트하고, 다시 테스트해야 합니다. 그런 다음 선택된 몇 명의 희생자를 대상으로 알파 테스트를 진행합니다. 그런 다음 더 넓은 사용자 커뮤니티를 대상으로 베타 테스트를 진행하세요. 결국에도 버그가 있을 것입니다. AI가 이 코딩 작업을 수행한다고 해서 버그 없는 코드를 수행할 수 있다는 의미는 아닙니다. 믿지 마라. 항상 확인하세요. 그리고 여전히 버그가 완전히 없을 수는 없습니다.

 

Q4. ChatGPT에 문의할 때 프로그래밍 문제에 대해 얼마나 자세하게 설명해야 하나요?

해석의 여지를 더 많이 남겨둘수록 AI는 더 많이 자신의 길을 갈 것입니다. 프로그래밍하는 동안 도움을 주기 위해 ChatGPT에 메시지를 표시할 때, 필자는 학생 중 한 명이나 저를 위해 일하는 사람에게 프로그래밍 작업을 할당한다고 상상합니다. 그 사람에게 첫 번째 초안을 작성하기에 충분한 세부 정보를 제공했습니까? 아니면 그 사람이 나에게 수많은 추가 질문을 해야 합니까? 더 나쁜 것은 그 사람이 지도력이 너무 부족해서 완전히 잘못된 방향으로 갈 것인가? 여기서 게으르지 마십시오. ChatGPT를 사용하면 프로그래밍 시간 또는 며칠을 절약할 수 있지만(저에게는 그렇습니다), 처음부터 유용한 지침을 제공하는 경우에만 가능합니다.

Q5. ChatGPT를 사용하여 코드를 작성하면 누가 소유하나요?

이 질문에 확실히 답할 수 있는 판례법은 아직 많지 않습니다. 미국, 캐나다, 영국에서는 인간의 손에 의해 생성된 저작권이 있는 것을 요구하므로 AI 도구로 생성된 코드는 저작권이 없을 수 있습니다. 훈련 코드의 출처와 결과 코드가 사용되는 방식에 따른 책임 문제도 있습니다.

 

Q6. ChatGPT는 어떤 프로그래밍 언어를 알고 있나요?

필자는 PHP, Python, Java, Kotlin, Swift, C# 등과 같은 일반적인 최신 언어를 테스트했습니다. 하지만 COBOL, Fortran, Forth, LISP, ALGOL, RPG(롤플레잉 게임이 아닌 report program generator), 심지어 IBM/360 어셈블리 언어와 같은  모호한 암흑 시대 언어로 코드를 작성하는 도구가 있었습니다(VBA도 당연히 가능합니다).

Q7. ChatGPT가 데이터 분석 및 시각화 작업에 도움을 줄 수 있나요?

ChatGPT는 코드 없이도 많은 작업을 수행할 수 있습니다. 이와 관련해서는 [여기]를 확인하세요.

 

생성된 차트와 테이블에 대한 작업도 수행했습니다. 하지만 여기서 재미있어집니다. 위 글에서 ChatGPT Plus에 "인구별 세계 상위 5개 도시의 막대그래프를 만들어 달라"고 요청했더니 그렇게 되었습니다. 하지만 코드를 원하시나요? 다음과 같이 질문해 보세요.

Swift에서 인구 기준으로 세계 상위 5개 도시의 막대 차트를 만드세요. 온라인에서 인구 데이터를 가져옵니다. 필요한 라이브러리를 모두 포함했는지 확인하세요.


"in Swift"를 추가하면 프로그래밍 언어가 지정됩니다. 데이터의 출처를 지정하고 ChatGPT Plus에 라이브러리를 포함하도록 강제함으로써 프로그램에 필요한 다른 리소스를 가져오는 방법을 알고 있습니다. 그렇기 때문에 AI의 도움을 받아 프로그래밍을 하려면 기본적으로 프로그래밍에 대한 지식이 필요합니다. 하지만 그렇게 하면 괜찮습니다. 세 문장으로 주석이 달린 코드를 얻을 수 있기 때문입니다.

Excel과 VBA의 모든 것 아이엑셀러 닷컴 · 강사들이 숨겨 놓고 보는 엑셀러TV