작업을 자동화하는 스크립트 생성하기
지난해 IT 업계에서 “가장 인기 있는 프로그래밍 언어는 영어”라는 말이 화제가 된 적이 있습니다. 대형언어모델에 영어로 지시해 코드를 생성할 수 있어서 나온 말입니다. 물론 한국어로도 가능합니다.
이번에 소개할 “출력 자동화(Output Automater)” 패턴은 대형언어모델을 이용해 다양한 스크립트(Script)와 기타 자동화 아티팩트(Automation Artifact)를 생성하는 방법입니다.
스크립트란 일련의 명령어나 코드의 집합을 말합니다. 스크립트는 컴퓨터 프로그램이나 스크립트 엔진에 의해 직접 실행됩니다. 스크립트의 주요 목적은 반복적인 작업을 자동화하고, 사용자와 시스템 간의 상호작용을 간소화하는 것입니다. 예를 들어, 파일을 다운로드하거나, 데이터를 분석하고, 시스템 설정을 변경하는 등의 작업을 스크립트로 수행할 수 있습니다. 기타 자동화 아티팩트란 스크립트 외에 자동화 과정에 사용되는 다양한 템플릿, 설정 파일 등을 뜻합니다.
출력 자동화 패턴은 사용자가 특정 형태의 출력을 자동으로 생성하기 위해 구체적인 지시를 내리는 상호작용 패턴입니다. 이 패턴은 특히 엔지니어나 개발자에게 아주 유용하며, 일반 사용자도 이를 잘 이용하면 복잡한 작업을 단순화할 수 있습니다. 이 패턴으로 생성할 수 있는 결과물의 종류는 아주 다양한데, 먼저 예시를 하나 살펴보죠.
다음은 관계형 데이터베이스 관리 시스템에서 사용하는 SQL 스크립트를 출력하는 프롬프트 예시입니다.
프롬프트
당신은 “SQL 전문가”로 행동합니다. 하단의 내용을 수행해 주세요.
- 작업1: 사용자 이름, 이메일, 가입 날짜를 저장하는 테이블을 생성합니다. 테이블 이름은 users이며, 다음 필드를 포함해야 합니다: id (자동 증가하는 기본 키), username (문자열), email (문자열), signup_date (날짜).
- 작업2: 예시 데이터 3개를 무작위로 만들어 테이블에 삽입해 주세요.
- 위의 작업들을 수행하는 하나의 SQL 스크립트를 출력해 주세요.
챗GPT(GPT-4)
작업1과 작업2를 수행하기 위한 SQL 스크립트를 아래에 제공합니다.
이 스크립트는 먼저 users 테이블을 생성하고, id 필드를 자동 증가하는 기본 키로 설정합니다. username, email, signup_date 필드는 각각 문자열과 날짜 타입으로 지정됩니다. 그 후에, 세 개의 예시 데이터를 테이블에 삽입합니다.
이번 프롬프트는 GPT-3.5, 클로바, 제미나이에서도 작동합니다.
이처럼 사용자가 구체적인 조건과 요구사항을 제시하면, 모델은 이를 분석하여 요구된 출력물을 자동으로 생성합니다. 출력 자동화 패턴은 최소한 하나 이상의 단계를 포함하는 출력을 자동으로 생성하기 위해 사용하며, 다양한 형태의 출력을 포함할 수 있습니다.
즉, 이 패턴은 “일련의 단계를 자동화하는 것”을 목적으로 합니다. 기본 문구는 다음과 같습니다.
“[작업 단계]를 수행하는 [스크립트 또는 기타 자동화 아티팩트]를 출력해 주세요.”
구체적인 작업과 지침을 반영해 프롬프트를 작성하는데, [스크립트 또는 기타 자동화 아티팩트]에 사용할 수 있는 출력물의 종류에는 다음과 같은 것들이 있습니다(개발자나 엔지니어가 아니라면 이 목록은 스킵해도 됩니다).
Python 스크립트: 데이터 처리, 파일 시스템 조작, 네트워크 통신, 웹 스크래핑, 데이터 분석 및 시각화, 머신러닝 모델 훈련 및 평가 등 다양한 작업을 자동화할 수 있습니다.
Bash 스크립트: Linux 또는 macOS 환경에서 파일 관리, 시스템 설정 변경, 소프트웨어 설치 및 업데이트, 배치 작업 실행 등을 위한 자동화 스크립트를 생성할 수 있습니다.
PowerShell 스크립트: Windows 환경에서 파일 시스템 조작, 시스템 관리, 네트워크 작업, Windows 설정 및 애플리케이션 관리 등을 위한 스크립트를 생성할 수 있습니다.
SQL 스크립트: 데이터베이스 관리, 데이터 조작 및 조회, 데이터베이스 스키마 변경 등을 위한 스크립트를 생성할 수 있습니다.
JavaScript (Node.js) 스크립트: 웹 애플리케이션의 서버 측 로직, API 요청 처리, 파일 시스템 조작, 데이터 처리 등을 자동화할 수 있습니다.
HTML/CSS/JavaScript: 웹 페이지와 관련된 작업, 예를 들어 자동으로 정적 웹 페이지를 생성하거나 사용자 인터페이스 요소를 추가하는 등의 작업을 위한 코드를 생성할 수 있습니다.
Ansible Playbooks: 소프트웨어 배포, 설정 관리, 시스템 구성 자동화 등을 위한 IT 자동화 도구 Ansible을 사용하는 작업을 자동화할 수 있습니다.
Dockerfile 및 Docker Compose 파일: 애플리케이션의 배포 및 실행을 위한 컨테이너 환경을 정의하고, 여러 컨테이너의 조정 및 관리를 위한 작업을 자동화할 수 있습니다.
GitHub Actions 워크플로우: 소프트웨어 개발 과정에서 CI/CD 파이프라인 구축, 코드 테스트 및 배포, 이슈 관리 등을 자동화하기 위한 스크립트를 생성할 수 있습니다.
Ruby 스크립트: 웹 애플리케이션 개발, 데이터 처리 및 자동화 작업 등을 위한 스크립트 생성이 가능합니다.
REST API 클라이언트 스크립트: Python, JavaScript(Node.js), Ruby 등을 사용하여 RESTful API 서비스와 통신하기 위한 클라이언트 스크립트를 생성할 수 있습니다.
Cloud Infrastructure-as-Code (IaC) 스크립트: AWS CloudFormation, Azure Resource Manager Templates, Terraform 등을 사용하여 클라우드 리소스를 선언적으로 정의하고 관리하는 스크립트를 생성할 수 있습니다.
데이터 파이프라인 스크립트: 데이터 추출, 변환, 로딩 작업을 자동화하기 위한 스크립트, Apache Airflow DAGs, AWS Glue Jobs 등을 생성할 수 있습니다.
Grafana 대시보드 설정: 모니터링 및 시각화 플랫폼인 Grafana를 사용하여 데이터 시각화 대시보드의 구성을 자동화할 수 있는 설정 파일을 생성할 수 있습니다.
이 목록은 GPT-4 기준이며 극히 일부에 불과합니다. 이외에도 다양한 스크립트와 기타 자동화 아티팩트를 출력 가능하니, 여러분이 사용하려는 모델에서 여러분의 필요에 따라 가능한 결과물을 직접 확인해 보시기 바랍니다.
출력 자동화 패턴의 핵심은 다음의 두 가지 주요 요소에 있습니다.
1. 구체적인 요구사항의 제시: 사용자는 모델에 정확하고 명확한 지침을 제공해야 합니다. 이 지침은 생성하고자 하는 출력의 형태, 필요한 데이터 혹은 로직의 구조, 결과물의 포맷 등을 포함할 수 있습니다.
2. 자동화된 출력 생성: 제공된 지침을 바탕으로, 모델은 요구사항을 충족하는 출력물을 자동으로 생성합니다. 이 과정은 사용자가 직접 작업을 수행하는 것보다 빠르고, 오류가 적을 수 있으며, 반복적인 작업의 자동화를 가능하게 합니다.
추가 예시로, Windows 운영체제에서 여러 작업에 이용 가능한 PowerShell 스크립트를 생성하는 프롬프트를 살펴보죠.
프롬프트
당신은 “Windows 전문가”로 행동합니다. 하단의 내용을 수행해 주세요.
- 작업1: 다음의 정보를 수집합니다: CPU 정보, 메모리 사용량, 디스크 사용량, 현재 실행 중인 프로세스
- 작업2: 수집된 정보를 C: 드라이브 루트에 SystemReport.html 파일로 저장해 사용자가 쉽게 확인할 수 있도록 해야 합니다.
- 위의 작업들을 수행하는 하나의 PowerShell 스크립트를 출력해 주세요.
챗GPT(GPT-4)
작업을 수행하기 위한 PowerShell 스크립트를 아래와 같이 제공합니다. 이 스크립트는 요청하신 대로 CPU 정보, 메모리 사용량, 디스크 사용량, 현재 실행 중인 프로세스를 수집하고, 이 정보를 'SystemReport.html' 파일로 C: 드라이브 루트에 저장합니다.
이 스크립트를 실행하기 전에, 실행 정책이 스크립트 실행을 허용하는지 확인해야 합니다. PowerShell에서 스크립트 실행 정책을 확인하거나 변경하기 위해 Get-ExecutionPolicy 또는 Set-ExecutionPolicy 명령어를 사용할 수 있습니다. 관리자 권한이 필요할 수 있으므로 PowerShell을 관리자로 실행해야 할 수 있습니다.
스크립트를 파일로 저장하고 PowerShell에서 실행하거나, PowerShell ISE(통합 스크립팅 환경)에서 직접 붙여 넣어 실행할 수 있습니다. 실행 후, C: 드라이브 루트에서 'SystemReport.html' 파일을 찾아보면, 수집된 시스템 정보를 확인할 수 있습니다.
예시의 스크립트 내용은 캡처본이라 일부 내용이 잘려져 있습니다. 이 스크립트를 실행하실 분은 예시의 프롬프트로 직접 모델에 요청한 후 출력된 스크립트를 복사해서 사용하세요.
스크립트 실행 방법: 출력된 스크립트를 .ps1 파일에 저장한 후에, 관리자 권한의 PowerShell 환경에서 스크립트 실행 정책을 허용한 다음(Set-ExecutionPolicy Unrestricted), 스크립트 파일을 실행하면 됩니다. 혹 한글이 깨지면 파일을 ANSI 인코딩으로 저장한 후 이용합니다. 테스트 후에는 보안을 위해 Set-ExecutionPolicy Restricted로 정책을 원상복구합니다.
언제나처럼 대형언어모델의 특성상 결과물이 항상 제대로 작동한다고 보장할 수는 없으니, 반드시 직접 내용을 확인하고 검증한 후에 사용하는 걸 추천합니다.
출력 자동화 패턴의 가장 큰 이점은 시간과 노력을 절약할 수 있다는 것입니다. 일련의 작업을 자동으로 실행함으로써, 엔지니어와 개발자는 더 중요한 문제에 집중할 수 있으며, 일반 사용자는 프로그래밍 지식이 없어도 복잡한 작업을 비교적 쉽게 수행할 수 있습니다. 또한 작업의 정확성을 향상시키고, 일관성을 유지하는 데도 도움을 줍니다.
이제 우리의 업무 경쟁력은 AI를 이용해 얼마나 효율적으로 자신의 작업을 자동화하느냐에 달려있다고 봅니다. 기계가 할 수 있는 건 모두 기계에 맡기고, 앞으로의 인간에게는 아이디어의 발화(=아이디어를 구체적인 말이나 글로 표현하는 것)와 AI 결과물을 튜닝하고 필터링하고 통합하는 역량이 더욱 중요해질 것입니다. 어쩌면 그것이 새로운 시대의 창의력이 아닐까 합니다.
(낭만적인 관점에서) 자동화는 반복되는 일에서 인간을 해방시켜,
창의력이 꽃피울 수 있는 공간을 마련해 줍니다.