brunch

You can make anything
by writing

C.S.Lewis

by 호몽 이용호 Sep 04. 2024

26가지 프롬프트 엔지니어링 원칙 ㉓ 스크립트 요청

손에 잡히는 인공지능

[여러 파일 프로젝트 스크립트 요청 프롬프트 개념도]


이번에는 스물세 번째 원칙, “여러 파일 프로젝트 스크립트 요청: 여러 파일로 구성된 프로젝트를 위한 스크립트를 요청한다.”에 대해 이야기 해보기로 한다.


이 원칙을 적용한 프롬프트와 적용하지 않은 프롬프트 예시를 제시하겠다. 이 원칙은 사용자가 복잡한 프로젝트 구조를 가진 소프트웨어 개발 작업에 대해 AI 모델에 구체적인 스크립트 생성을 요청할 때 명확한 지침을 제공한다. 관련 논문에 따르면 이 원칙 적용 시 정확도가 약 55% 개선이 된다고 한다. 이번에도 이 원칙을 적용여부에 따른 결과의 정확도 개선을 실험해보기로 한다.


이번 실험에 사용한 이 원칙을 적용한 예시와 적용하지 않은 예시는 다음과 같다.

원칙을 적용하지 않은 예시:

"데이터 분석 도구 만들어줘."

원칙을 적용한 예시:

"파이썬을 사용한 데이터 분석 프로젝트를 위해 데이터 로딩, 데이터 정제, 데이터 분석을 위한 스크립트 파일들을 분리해 생성해줘."


분석 결과는 아래와 같다.


이 결과를 통해 원칙 적용 후 모든 항목에서 상당한 개선이 이루어졌음을 확인할 수 있다. 특히 전체 프로세스 자동화와 코드 구조화, 확장성 측면에서 큰 향상이 있었다. 여러 가지 원칙 중 이것은 반드시 사용해야할 프롬프트 원칙이라 할 수 있다.


[원칙 미적용 결과]


데이터 분석 도구를 만들기 위해서는 먼저 어떤 목적과 기능을 필요로 하는지에 대한 명확한 정의가 필요해. 어떤 데이터를 분석할 것인지, 주요 목표가 무엇인지, 그리고 어떤 분석 방법을 사용할 것인지에 따라 도구의 설계가 달라질 수 있어. 기본적인 데이터 분석 도구를 만들기 위해서는 몇 가지 중요한 기능이 필요해:

데이터 입력 및 로딩 기능: CSV, Excel, SQL 데이터베이스 등 다양한 데이터 소스에서 데이터를 불러올 수 있는 기능이 필요해.

데이터 정제 및 변환 기능: 결측값 처리, 중복 제거, 데이터 타입 변환 등 데이터를 분석하기 전에 필요한 전처리 기능이 중요해.

데이터 시각화 기능: 막대 그래프, 꺾은선 그래프, 산점도, 히스토그램 등의 시각화를 통해 데이터를 직관적으로 이해할 수 있도록 도와주는 기능이 필요해.

통계 분석 및 모델링 기능: 기본적인 통계 분석(평균, 중간값, 분산 등)과 더불어 회귀 분석, 군집 분석, 분류 등의 고급 분석 기법을 제공할 수 있어야 해.

결과 보고 기능: 분석 결과를 리포트 형식으로 출력하거나, 프레젠테이션 자료로 변환할 수 있는 기능이 있으면 유용해.

이제 Python을 사용해 간단한 데이터 분석 도구를 만드는 예시를 보여줄게. 이 도구는 사용자가 CSV 파일을 업로드하고, 기본적인 데이터 통계와 시각화를 제공할 수 있어.

<<python 코드>>

import pandas as pd

import matplotlib.pyplot as plt

import seaborn as sns

def load_data(file_path):

try:

data = pd.read_csv(file_path)

print(f"Data loaded successfully! Shape: {data.shape}")

return data

except Exception as e:

print(f"Error loading data: {e}")

return None

def basic_statistics(data):

print("Basic Statistics:")

print(data.describe())

def visualize_data(data, columns):

for column in columns:

plt.figure(figsize=(10, 6))

sns.histplot(data[column], kde=True)

plt.title(f'Distribution of {column}')

plt.show()

def main():

file_path = input("Enter the path to your CSV file: ")

data = load_data(file_path)

if data is not None:

basic_statistics(data)

columns = input("Enter columns to visualize (comma separated): ").split(',')

visualize_data(data, columns)

if __name__ == "__main__":

main()

주요 기능 설명:

load_data: CSV 파일을 로드하는 함수로, 데이터가 정상적으로 로드되었는지 확인한 후 데이터 프레임을 반환해.

basic_statistics: 데이터의 기본 통계를 출력해.

visualize_data: 선택된 열에 대해 히스토그램과 KDE(Kernel Density Estimation)를 함께 보여주는 시각화를 제공해.

사용 방법:

이 스크립트를 Python으로 실행한 후, CSV 파일 경로를 입력하면 데이터를 로드해.

데이터가 로드되면, 기본 통계 정보를 확인할 수 있어.

시각화할 열을 입력하면 해당 열의 분포를 그래프로 볼 수 있어.

이 도구는 매우 기본적인 수준이지만, 이를 바탕으로 더 복잡한 기능들을 추가해나갈 수 있어. 예를 들어, 특정 통계 분석을 자동화하거나 머신러닝 모델을 적용하는 기능을 추가할 수 있어. 만약 더 구체적인 기능이나 사용자 인터페이스가 필요하다면, 그에 맞는 설계를 제안해 줄 수도 있어.

어떤 부분을 더 구체화하고 싶은지 알려줘!


[원칙 적용 결과]


파이썬을 사용한 데이터 분석 프로젝트를 체계적으로 진행하기 위해, 프로젝트를 여러 단계로 나누고 각 단계를 담당하는 스크립트 파일을 생성하는 것이 좋다. 이를 통해 코드의 유지보수와 확장이 용이해지고, 재사용성이 높아진다. 아래는 프로젝트를 구성하는 데 필요한 파일들을 분리하여 생성하는 예시다.

1. 프로젝트 폴더 구조

먼저, 프로젝트 폴더 구조를 정리해보자:

<<bash 코드>>

data_analysis_project/

│├── data/ # 원본 데이터 파일들이 위치하는 폴더

├── scripts/ # 각 단계별 파이썬 스크립트를 저장하는 폴더

│ ├── load_data.py # 데이터 로딩 스크립트

│ ├── clean_data.py # 데이터 정제 스크립트

│ ├── analyze_data.py # 데이터 분석 스크립트

│ └── main.py # 전체 프로세스를 실행하는 메인 스크립트

│└── results/ # 분석 결과를 저장하는 폴더

2. load_data.py - 데이터 로딩 스크립트

이 파일에서는 데이터를 로드하는 기능을 구현한다. 파일로부터 데이터를 읽어오는 작업을 수행하며, CSV, Excel, SQL 등 다양한 형식을 처리할 수 있다.

<<python 코드>>

# scripts/load_data.py

import pandas as pd

def load_csv_data(file_path):

"""

주어진 파일 경로에서 CSV 데이터를 로드하는 함수.

"""

try:

data = pd.read_csv(file_path)

return data

except Exception as e:

print(f"Error loading data from {file_path}: {e}")

return None

if __name__ == "__main__":

file_path = "../data/sample_data.csv"

data = load_csv_data(file_path)

print(data.head())

3. clean_data.py - 데이터 정제 스크립트

데이터를 로딩한 후, 데이터를 정제하는 스크립트이다. 결측값 처리, 중복 제거, 데이터 타입 변환 등의 작업을 수행한다.

<<python 코드>>

# scripts/clean_data.py

def clean_data(data):

"""

데이터 정제 작업을 수행하는 함수.

"""

# 결측값 처리

data = data.dropna()

# 중복 데이터 제거

data = data.drop_duplicates()

# 필요한 경우, 데이터 타입 변환

# 예: data['column_name'] = data['column_name'].astype('int')

return data

if __name__ == "__main__":

from load_data import load_csv_data

# 데이터를 로드하고 정제하는 과정

file_path = "../data/sample_data.csv"

data = load_csv_data(file_path)

if data is not None:

clean_data = clean_data(data)

print(clean_data.head())

4. analyze_data.py - 데이터 분석 스크립트

정제된 데이터를 가지고 분석을 수행하는 스크립트이다. 통계 분석, 시각화, 머신러닝 모델링 등 다양한 작업을 수행할 수 있다.

<<python 코드>>

# scripts/analyze_data.py

import matplotlib.pyplot as plt

def analyze_data(data):

"""

데이터를 분석하고 결과를 시각화하는 함수.

"""

# 간단한 통계 분석 예시

summary = data.describe()

print(summary)

# 데이터 시각화 예시

data.hist(bins=50, figsize=(20, 15))

plt.savefig("../results/data_histogram.png")

plt.show()

if __name__ == "__main__":

from clean_data import clean_data

from load_data import load_csv_data

# 데이터를 로드하고, 정제하고, 분석하는 과정

file_path = "../data/sample_data.csv"

data = load_csv_data(file_path)

if data is not None:

clean_data = clean_data(data)

analyze_data(clean_data)

5. main.py - 메인 스크립트

모든 단계를 한 번에 실행할 수 있도록 구성한 메인 스크립트이다. 이 스크립트는 위의 각 스크립트를 순서대로 호출하여 전체 파이프라인을 자동화한다.

<<python 코드>>

# scripts/main.py

from load_data import load_csv_data

from clean_data import clean_data

from analyze_data import analyze_data

def main():

file_path = "../data/sample_data.csv"

# 데이터 로딩

data = load_csv_data(file_path)

if data is not None:

# 데이터 정제

clean_data = clean_data(data)

# 데이터 분석

analyze_data(clean_data)

if __name__ == "__main__":

main()

요약

이 구조는 데이터를 분석하기 위한 전반적인 프로세스를 단계별로 분리하여 구현한 것이다. 각각의 스크립트는 독립적으로 실행될 수 있고, main.py 파일을 통해 전체 파이프라인을 자동화할 수 있다. 필요에 따라 각 단계에서 추가적인 기능을 구현할 수 있으며, 이를 통해 복잡한 데이터 분석 작업도 체계적으로 처리할 수 있다.


추가로 아래는 “여러 파일 프로젝트 스크립트 요청” 원칙에 대한 여러 가지 사례이니 참조하기 바란다.


원칙을 적용하지 않은 예시:

"웹사이트 만들어줘."

"데이터베이스와 연동하는 앱 개발해줘."

"게임 개발 시작해줘."

"이메일 서비스를 위한 백엔드 개발해줘."

"사진을 편집할 수 있는 프로그램 만들어줘."

"온라인 쇼핑몰을 구축해줘."

"모바일 앱 개발 시작해줘."

"기업용 소프트웨어 개발해줘."

"사용자 인터페이스 디자인해줘."


원칙을 적용한 예시:

"여러 페이지를 가진 반응형 웹사이트를 위한 HTML, CSS, JavaScript 파일들을 생성해줘. 각 파일은 특정 기능을 담당해야 해."

"MySQL 데이터베이스와 연동하는 Python 기반 웹 애플리케이션을 위한 스크립트 파일을 만들어줘. 데이터베이스 접근을 위한 파일과 웹 서버 파일을 분리해줘."

"Unity를 사용한 2D 플랫폼 게임 프로젝트를 시작할 수 있도록 게임 오브젝트 관리를 위한 C# 스크립트 파일을 생성해줘."

"Node.js를 사용하여 이메일을 보내고 받을 수 있는 서비스를 위한 서버 스크립트와 데이터베이스 스크립트를 분리해서 작성해줘."

"사진 편집 기능을 가진 데스크톱 애플리케이션을 위해 이미지 처리를 담당하는 Python 스크립트 파일과 GUI 디자인을 위한 파일을 분리해 생성해줘."

"e-커머스 웹사이트 프로젝트를 위해 상품 관리, 사용자 관리, 결제 시스템을 위한 PHP 스크립트 파일들을 각각 생성해줘."

"Android 모바일 앱 개발을 위해 사용자 인터페이스, 데이터베이스 접근, API 요청을 처리하는 Java 파일들을 구조화해서 제공해줘."

"기업용 리소스 관리 시스템을 위한 C# 기반의 여러 프로젝트 파일을 생성해줘. 각 파일은 재고 관리, 직원 관리, 재무 보고 기능을 담당해야 해."

"사용자 경험을 중심으로 한 웹 애플리케이션의 프론트엔드 개발을 위해 HTML, CSS, JavaScript로 구성된 파일들을 각각의 기능에 맞게 작성해줘."


이 예시들은 사용자가 복잡한 프로젝트를 위해 여러 파일로 구성된 스크립트를 요청할 때, 구체적이고 명확한 지침을 AI 모델에 제공하는 것의 중요성을 보여줍니다. 원칙을 적용함으로써, 사용자는 AI 모델로부터 더 정교하고 잘 구조화된 프로젝트 파일을 얻을 수 있습니다.


연작 칼럼의 내용의 연속성을 이해하기 쉽게 목차를 아래에 다시 적는다.

1. 본론만 말하기: 간결하고 직접적으로 요청을 표현한다.

2. 청중 설정: 의도한 청중을 명확히 정하고 질문한다.

3. 세분화: 복잡한 작업을 간단한 단계로 나누어 질문한다.

4. 긍정 지시문 사용: 부정문 대신 긍정문을 사용하여 요청한다.

5. 어린이 청자 설정: 어린 아이에게 설명하듯이 요청을 한다.

6. 팁 제공: 더 나은 답변을 위한 팁을 약속한다.

7. 예시 추가: 구체적인 예시를 제공한다.

8. 구분된 구성: 지시, 예시, 질문을 명확하게 구분한다.

9. 임무 설정: 명확한 임무나 목표를 제시한다.

10. 협박 사용: AI에게 불이익을 주겠다고 협박한다.

11. 인간적인 방식으로 대답하기: 자연스럽고 인간적인 방식으로 답변을 요구한다.

12. 단계별로 생각하기: 단계별로 문제를 해결하도록 요청한다.

13. 편견 제거 요청: 편향되지 않은 답변을 요구한다.

14. 질문시키기: 충분한 정보를 얻을 때까지 질문하도록 요청한다.

15. 테스트 추가: 테스트를 추가하여 답변의 정확성을 높입니다.

16. 역할 부여: AI에게 특정 역할을 부여한다.

17. 구분 기호 사용: 특정 단어나 구문을 강조한다.

18. 반복 사용: 중요한 단어를 반복하여 강조한다.

19. CoT와 예시 제공: 구체적인 예시를 통해 정보를 제공한다.

20. 출력 문구 지정: 원하는 출력 형식을 명시한다.

21. 필요한 모든 정보 추가: 필요한 모든 정보를 포함하도록 요청한다.

22. 텍스트 개선 요청: 주어진 텍스트를 개선하도록 요청한다.

23. 여러 파일 프로젝트 스크립트 요청: 여러 파일로 구성된 프로젝트를 위한 스크립트를 요청한다.

24. 제시어 기반 글쓰기: 특정 시작 문구를 기반으로 이어서 글을 쓰도록 요청한다.

25. 키워드 제시: 특정 키워드를 포함한 텍스트 생성을 요청한다.

26. 동일 언어 사용: 주어진 텍스트와 유사한 언어 스타일로 답변을 요청한다.  


| 작가 프로필

이용호 작가는 스마트공장에서 주로 사용되는 ‘AI 머신비전’ 전문회사인 ‘호연지재’를 경영하고 있으면서 다양한 분야에 관심이 많아 SKT ifland와 SBA 크리에이티브 포스 인플루언서로 활동하고 있다. 특히 ‘머신비전’에서 인공지능 딥러닝에 의한 영상처리기술을 자주 적용하다보니 10년 이상 연구한 AI 분야에 대해서도 해박한 지식을 가지고 있다.


칼럼니스트는 메타버스 이프랜드에서 정기적으로 “인공지능관련 새로운 소식과 기술”을 상세히 전하는 ‘호몽캠프’를 110회 이상 꾸준히 진행하였다.


주요 강의 분야는 “챗GPT 시대 생산성을 300% 높여주는 인공지능”, “머신비전에서의 인공지능 활용”, “손에 잡히는 인공지능”, “스마트폰 AI 활용하기”, “시니어와 MZ세대간의 소통”등이 있으며, 저서로는 『손에 잡히는 인공지능』, 『나는 시니어 인플루언서다』가 있다.

브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari