OpenAI에서 개발한 ChatGPT가 출시된 지 반년이 조금 지났습니다. 반년 동안 ChatGPT를 필두로 여러 인공지능(AI) 모델이 하루가 멀다하고 등장하는 중이며, 다양한 산업에서 파동을 일으키고 있습니다. 우리는 이를 견뎌내기 위해 빠르게 대처하고 있지만, 마치 빠르게 달리는 열차를 쫓는 느낌을 받습니다.
이렇게 끊임없이 학습과 적응이 필요한 상황에서, 생산성 향상을 위해 많은 사람이 ChatGPT를 사용하고 있습니다. 마케팅 팀은 ChatGPT로 새로운 인사이트를 얻고, 고객 서비스(CS) 팀은 ChatGPT를 이용하여 고객 질문에 답변을 더욱 빠르게 제공할 수 있습니다.
DevOps 엔지니어도 ChatGPT를 업무에 활용할 줄 알아야 합니다. 엔지니어는 그 누구보다도 발빠르게 새로운 기술을 학습하고 변화하는 환경에 적응해야 하기 때문입니다. ChatGPT가 바로 그 ‘새로운 기술’입니다. DevOps 엔지니어가 ChatGPT로 효율적이고, 생산적인 작업 흐름을 만들려면 어떻게 해야 할까요?
ChatGPT 사용법
ChatGPT는 전용 UI를 사용해 대화형으로 상호작용할 수도 있고, OpenAI 플랫폼에서 제공하는 API를 활용해 상호작용할 수도 있습니다. 이 글에서는 API를 사용해 ChatGPT를 활용하는 방법을 알아보겠습니다.(API의 자세한 사항은 OpenAI ChatGPT Documentation을 참조하세요.)
아래의 코드는 ChatGPT API를 사용해 코드를 생성해달라는 요청을 보내고 응답을 파일로 저장하는 간단한 Python 스크립트입니다. 메시지는 입력으로 받은 prompt
파라미터를 사용합니다. 텍스트를 제외한 format
형식의 코드만 요청하고, 응답받아 file_name
이름의 파일로 저장합니다. 모델은 text-davinci-003
을 사용합니다.
code_generate.py
OPENAI_API_KEY
: OpenAI에서 발급받은 API Key를 사용합니다.
import os
import requests
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument("--prompt", type=str, help="The prompt to send to the OpenAI API")
parser.add_argument("--format", type=str, help="file format of response from OpenAI API")
parser.add_argument("--file_name", type=str, help="Name of the file to save script")
return parser.parse_args()
def create_request_headers(api_key):
return {
"Content-Type": "application/json",
"Authorization": "Bearer " + api_key
}
def create_request_data(args):
return {
"model": "text-davinci-003",
"prompt": f"{args.prompt} in {args.format} script. Provide only code, no text",
"max_tokens": 3000,
"temperature": 0.5
}
def write_to_file(file_name, text):
with open(file_name, "w") as file:
file.write(text)
def main():
args = parse_args()
api_endpoint = "https://api.openai.com/v1/completions"
api_key = os.getenv("OPENAI_API_KEY") # User > View API Keys > Create New secret key
request_headers = create_request_headers(api_key)
request_data = create_request_data(args)
response = requests.post(api_endpoint, headers=request_headers, json=request_data)
if response.status_code == 200:
response_text = response.json()["choices"][0]["text"]
write_to_file(args.file_name, response_text)
else:
print(f"Request failed with status code: {str(response.status_code)}")
if __name__ == "__main__":
main()
아래는 두 번째 스크립트입니다. 이미 존재하는 파일이나 code_generate.py
로 생성한 코드에 ChatGPT를 적용하는 Python 스크립트입니다. prompt
형식이 조금 달라진 것을 제외하면 요청 부분은 거의 비슷합니다. 또한, input
, output
파라미터로 입출력 파일을 지정할 수 있습니다.
file_process.py
OPENAI_API_KEY
: OpenAI에서 발급받은 API Key를 사용합니다.
import os
import requests
import argparse
def parse_args():
parser = argparse.ArgumentParser()
parser.add_argument('--input', type=str, required=True, help='The input file to translate')
parser.add_argument('--output', type=str, required=True, help='The output file to save translation')
parser.add_argument("--prompt", type=str, help="The prompt to send to the OpenAI API")
return parser.parse_args()
def create_request_headers(api_key):
return {
"Content-Type": "application/json",
"Authorization": "Bearer " + api_key
}
def create_request_data(args):
with open(args.input, 'r') as file:
document = file.read()
return {
"model": "text-davinci-003",
"prompt": f"{document}\n{args.prompt} ",
"max_tokens": 3000,
"temperature": 0.5
}
def write_to_file(file_name, text):
with open(file_name, "w") as file:
file.write(text)
def main():
args = parse_args()
api_endpoint = "https://api.openai.com/v1/completions"
api_key = os.getenv("OPENAI_API_KEY")
request_headers = create_request_headers(api_key)
request_data = create_request_data(args)
response = requests.post(api_endpoint, headers=request_headers, json=request_data)
if response.status_code == 200:
response_text = response.json()["choices"][0]["text"]
write_to_file(args.output, response_text)
else:
print(f"Request failed with status code: {str(response.status_code)}")
if __name__ == "__main__":
main()
스크립트가 준비되었으니 이제 ChatGPT로 무엇을 할 수 있는지 살펴보겠습니다.
DevOps 워크플로에 ChatGPT 적용하기
1. 문서화
DevOps 팀은 많은 문서를 작성합니다. ChatGPT를 활용하면 문서화 프로세스를 자동화하여 문서를 더 빨리 만들 수 있습니다. 예를 들어, ChatGPT에 “DevOps 초급자용 튜토리얼 문서를 작성해달라”고 요청하는 상황을 가정해봅시다. 이때 “write a detailed tutorial for DevOps beginners”
라는 프롬프트를 사용하고, 출력되는 파일 형식은 “markdown”
으로 지정합니다. 저장될 파일 이름은 “tutorial.md”
로 지정합니다. 명령어는 다음과 같습니다.
- CLI 명령어
python3 code_genetate.py --prompt "write a detailed tutorial for devops beginners" --format "markdown" --file_name "tutorial.md"
- 위의 결과로 아래와 같은
tutorial.md
파일이 만들어졌습니다.
# Introduction to DevOps
DevOps is a set of practices that combines software development (Dev) and IT operations (Ops). It is a culture, movement, or practice that emphasizes the collaboration and communication of both software developers and other information-technology (IT) professionals while automating the process of software delivery and infrastructure changes.
# Prerequisites
Before you get started with DevOps, you should have a basic understanding of the following:
* Linux/Unix command line
* Basic scripting (Bash, Python, etc.)
* Version control systems (Git, SVN, etc.)
* Continuous Integration/Continuous Delivery (CI/CD)
* Infrastructure as Code (IaC)
# Setting Up a DevOps Environment
## Step 1: Install a Virtual Machine
First, you will need to install a virtual machine on your computer. This will allow you to run a Linux operating system and use it to set up a DevOps environment.
### Installing VirtualBox
1. Download and install [VirtualBox](https://www.virtualbox.org/wiki/Downloads).
2. Launch the VirtualBox application.
3. Click on the “New” button in the top left corner.
4. Enter a name for your virtual machine and select the type of operating system you want to install.
5. Allocate RAM and hard disk space for the virtual machine.
6. Click on the “Create” button to finish the installation.
## Step 2: Install DevOps Tools
Once you have installed a virtual machine, you can start installing the necessary DevOps tools.
### Installing Git
1. Download and install [Git](https://git-scm.com/downloads).
2. Open a terminal window and type `git --version` to verify the installation.
### Installing Jenkins
1. Download and install [Jenkins](https://jenkins.io/download/).
2. Open a terminal window and type `java -jar jenkins.war` to start the Jenkins server.
3. Go to `http://localhost:8080` in your web browser to access the Jenkins dashboard.
### Installing Docker
1. Download and install [Docker](https://docs.docker.com/get-docker/).
2. Open a terminal window and type `docker --version` to verify the installation.
### Installing Ansible
1. Download and install [Ansible](https://docs.ansible.com/ansible/latest/installation_guide/intro_installation.html).
2. Open a terminal window and type `ansible --version` to verify the installation.
## Step 3: Configure the DevOps Environment
Once you have installed all the necessary DevOps tools, you can start configuring your environment.
### Setting Up a Git Repository
1. Create a directory for your project: `mkdir my-project`.
2. Initialize a Git repository in the directory: `git init`.
3. Add the files to the repository: `git add .`.
4. Commit the files: `git commit -m "Initial commit"`.
### Setting Up Jenkins
1. Log in to your Jenkins dashboard.
2. Create a new job for your project.
3. Configure the job to pull the code from the Git repository.
4. Set up the job to run automated tests and deployments.
### Setting Up Docker
1. Create a `Dockerfile` for your project.
2. Build the Docker image: `docker build -t my-project .`.
3. Run the Docker container: `docker run -d --name my-project my-project`.
### Setting Up Ansible
1. Create an `ansible.cfg` file for your project.
2. Create an `inventory` file to define the hosts.
3. Create a `playbook.yml` file to define the tasks.
4. Run the playbook: `ansible-playbook -i inventory playbook.yml`.
# Conclusion
By following these steps, you should now have a working DevOps environment. You can now start automating your software delivery and infrastructure changes.