AI 업무 활용

업무용 스크립트 요청문에 입력·출력·오류 원칙 담기

“자동화해 줘”를 실행 가능한 작업 설명으로 바꿉니다. 민감정보 없는 합성 샘플과 손으로 확인한 기대 결과를 붙여, 팀별 작업 기록 집계 스크립트를 요청하는 문장을 완성합니다.

목차 보기

이런 분께간단한 파일 정리나 집계를 AI에 요청하려는 비개발 실무자

준비사항
  • 자동화할 일을 한 문장으로 정하고 대상 파일 형식을 확인합니다.
  • 실제 자료 대신 직접 만든 3~5개 행의 합성 샘플을 준비합니다.
  • 원하는 결과를 손으로 먼저 계산합니다. 이 글은 코드 실행·보안 검토가 아니라 요청문 설계에 집중합니다.

01코드를 받기 전에 작업 설명을 완성하기

좋은 요청문은 긴 역할 지시보다 구체적인 업무 규칙을 담습니다. “파일을 잘 정리해 줘”만으로는 읽을 폴더, 결과 이름, 중복 처리, 덮어쓰기 여부가 정해지지 않습니다. 이 글에서는 한 주의 합성 작업 기록을 팀별로 합치는 작은 일로 범위를 제한합니다. 결과는 재사용할 수 있는 요청문과 입력·기대 결과 파일입니다.

02업무 문장을 여섯 항목으로 나누기

항목이 예제에서 정한 내용
목적팀별 완료 건수·작업 시간·건당 시간을 확인
입력현재 폴더의 UTF-8 input.json
출력새 output.json; 기존 파일이 있으면 중단
계산팀별 합계를 구한 뒤 시간 ÷ 완료 건수
예외0건이면 평균 null; 잘못된 행은 전체 중단
허용 범위로컬 파일만; 원본 보존; 외부 접속 없음

“건당 시간”이 실제로 무엇을 뜻하는지도 적어야 합니다. 이 합성 예제에서는 입력 minutes 전체를 해당 행의 completed 건수에 대응하는 작업 시간으로 정의합니다. 대기 시간이나 미완료 작업 시간을 포함한다면 이 평균의 의미가 달라지므로 먼저 업무 정의를 고칩니다.

03요청문을 작성하는 순서

  1. 자동화 범위를 하나의 결과로 좁힙니다. 파일 수집, 집계, 이메일 발송을 한 번에 섞지 말고 이번 결과를 팀별 집계 파일로 정합니다.
  2. 입력의 키 이름, 자료형, 단위를 적습니다. 완료 건수는 정수, 시간은 분 단위 정수처럼 분명히 씁니다.
  3. 실명과 사내 경로를 지운 원본 대신 합성 샘플을 만듭니다. 이름만 바꿔도 거래 내역이나 특이한 값으로 식별될 수 있으므로 예제 전체를 새로 작성합니다.
  4. 샘플의 기대 결과를 직접 계산합니다. 합계 후 나눌지 행별 평균을 낼지 이 단계에서 결정합니다.
  5. 오류, 빈 입력, 0으로 나누는 경우, 기존 출력 파일의 처리 원칙을 적습니다.
  6. 요청문을 보내기 전 서로 충돌하는 지시를 찾습니다. 모든 값은 정수라고 쓰면서 빈칸은 알아서 0으로 바꾸라고 적지 않습니다.

04입력과 기대 결과를 한 쌍으로 만들기

기록 ID완료 건수작업 시간
S001설계3건90분
S002설계2건50분
O001운영4건80분
H001지원0건0분

설계 팀은 5건, 140분이므로 건당 시간은 28분입니다. 행별 건당 시간 30분과 25분의 단순 평균 27.5분을 쓰면 작업 건수의 차이가 반영되지 않습니다. 운영 팀은 4건, 80분, 건당 20분입니다. 지원 팀의 0건은 계산 가능한 평균이 없다는 뜻이므로 null로 표시합니다.

input-sample.json과 expected-output.json은 이런 차이를 보여 주는 한 쌍입니다. JSON은 구조화된 데이터를 담는 형식이며, null은 숫자 0과 다릅니다. 이 구분은 Python 공식 json 문서의 값 대응 설명에서도 확인할 수 있습니다.

05바로 수정해 쓸 수 있는 요청문

text
다음 조건을 만족하는 로컬 Python 스크립트를 작성해 주세요.

[업무 목적]
한 주의 작업 기록을 팀별로 합쳐 완료 건수, 작업 시간 합계(분), 건당 작업 시간(분/건)을 확인합니다.
이 요청의 모든 기록은 합성 샘플입니다. 실명, 고객 정보, 계약 내용, 사내 경로, 계정 키는 포함하지 않습니다.

[실행 환경과 범위]
Python 3 표준 라이브러리만 사용합니다. 외부 패키지 설치, 인터넷 접속, 유료 API 호출, 이메일 전송은 하지 않습니다.
현재 작업 폴더의 input.json만 읽습니다. 하위 폴더 탐색, 원본 수정, 파일 삭제는 하지 않습니다.
새 output.json을 만듭니다. output.json이 이미 있으면 덮어쓰지 말고 이유를 알려주며 종료합니다.

[입력 형식]
UTF-8 JSON 배열입니다. 각 행에는 record_id, team, completed, minutes 네 키만 있습니다.
record_id는 중복되지 않는 비어 있지 않은 문자열입니다.
team은 설계, 운영, 지원 가운데 하나입니다. 알 수 없는 팀은 임의로 바꾸지 않습니다.
completed와 minutes는 0 이상의 정수입니다. 문자열 숫자, true/false, null, 누락 값은 허용하지 않습니다.
입력 배열은 비어 있어도 됩니다. 한 행의 오류라도 있으면 전체 집계를 중단합니다.

[입력 샘플]
[
  {"record_id":"S001","team":"설계","completed":3,"minutes":90},
  {"record_id":"S002","team":"설계","completed":2,"minutes":50},
  {"record_id":"O001","team":"운영","completed":4,"minutes":80},
  {"record_id":"H001","team":"지원","completed":0,"minutes":0}
]

[처리 규칙]
팀별 completed와 minutes를 각각 합합니다.
minutes_per_completed = 팀 작업 시간 합계 / 팀 완료 건수 합계입니다.
행별 평균을 다시 평균하지 않습니다. 건수가 0이면 minutes_per_completed는 JSON null입니다.
평균은 계산 후 Decimal의 ROUND_HALF_UP 방식으로 소수 둘째 자리까지 반올림해 JSON 숫자로 저장합니다.
출력에는 입력에 나타난 팀만 넣고, 팀 순서는 설계 → 운영 → 지원으로 고정합니다.
빈 입력의 출력은 빈 배열 []입니다.

[기대 결과]
[
  {"team":"설계","total_completed":5,"total_minutes":140,"minutes_per_completed":28.0},
  {"team":"운영","total_completed":4,"total_minutes":80,"minutes_per_completed":20.0},
  {"team":"지원","total_completed":0,"total_minutes":0,"minutes_per_completed":null}
]
JSON 숫자는 28과 28.0의 표기가 달라도 같은 값으로 비교합니다.

[오류 원칙]
파일 없음, 잘못된 JSON, 배열이 아닌 최상위 구조, 중복 record_id, 필수 키 누락,
추가 키, 허용되지 않은 팀, 음수/문자열/불리언 숫자를 발견하면 성공 결과를 만들지 않습니다.
오류 메시지는 행 번호(1부터 시작)와 필드 이름, 오류 이유만 출력하고 입력 내용 전체를 출력하지 않습니다.
입력 오류를 0으로 바꾸거나 잘못된 행을 조용히 건너뛰지 않습니다. 종료 코드는 실패를 나타내야 합니다.

[답변 형식]
먼저 목적, 입력, 출력, 오류 처리, 남은 가정을 짧게 요약합니다.
그 다음 완성 스크립트와 실행 방법, 이 샘플의 기대 결과를 제시합니다.
요구사항끼리 충돌하거나 업무 의미를 확정할 수 없으면 코드를 쓰기 전에 해당 쟁점만 질문합니다.
실제로 실행하지 않았다면 실행 완료라고 쓰지 않습니다.

다른 업무에 재사용할 때는 팀 이름만 바꾸지 말고 목적, 입력의 정의, 계산식, 0과 빈 값의 의미, 기대 결과를 함께 바꿉니다. 입력 샘플과 기대 결과가 어긋나면 AI가 어느 쪽을 기준으로 삼을지 불명확해집니다.

06보내기 전 확인할 것

  • 파일 이름, 읽기 범위, 출력 위치가 명시되어 있는가?
  • 모든 필드의 자료형·단위·허용 값이 정해졌는가?
  • 평균의 분모와 반올림 시점이 보이는가?
  • 누락·중복·0건·빈 배열을 서로 다르게 정의했는가?
  • 실제 민감정보가 없어도 업무 구조를 이해할 수 있는 샘플인가?
  • 샘플 결과를 사람이 설명할 수 있는가?
  • 실행하지 않은 일을 실행했다고 말하지 않도록 요청했는가?

OWASP는 입력 형식과 값의 업무상 의미를 함께 확인하도록 설명합니다. 이 글에서는 그 구분을 요청문에 옮겨 “정수인가”와 “0 이상인가”, “허용된 팀인가”를 따로 정했습니다. 요청문에 적었다는 사실만으로 반환 코드가 해당 규칙을 구현했다고 볼 수는 없습니다.

07답변이 엇갈리는 요청문의 흔한 원인

모호한 지시생기는 문제더 구체적인 표현
평균을 구해 줘행별 평균인지 전체 합계의 비율인지 불명확팀 시간 합계 ÷ 팀 완료 건수 합계
오류는 알아서 처리해 줘행을 버리거나 0으로 채울 수 있음오류가 하나라도 있으면 결과를 만들지 않고 중단
결과를 저장해 줘원본이나 기존 결과를 덮어쓸 수 있음새 output.json; 파일이 이미 있으면 중단
내 폴더를 정리해 줘대상 범위가 넓고 예상 행동이 불분명현재 폴더의 input.json 한 개만 읽기

08이 자료가 확인한 범위와 다음 단계

요청문은 구현을 위한 합의 문서입니다. 코드가 올바르게 실행되는지, 파일을 안전하게 다루는지, 실제 업무 자료와 맞는지는 받은 코드에서 별도로 확인해야 합니다. 이 자료는 합성 샘플의 기대값을 Python으로 검산했고 요청문에 필수 항목이 있는지 확인했습니다. AI 서비스에 요청하거나 생성 코드를 실행한 결과는 포함하지 않습니다.

  • request.txt: 위 전체 요청문
  • input-sample.json: 민감정보 없는 네 행의 합성 입력
  • expected-output.json: 손계산 및 Python 검산과 일치하는 기대 결과
  • prompt-checklist.txt: 요청문 작성용 점검표
  • README.txt: 자료 읽는 순서

참고자료는 2026년 9월 19일 공식 페이지에서 확인했습니다. Python과 OWASP 문서는 입력 형식과 검증 원칙의 근거이며, 특정 AI 서비스의 답변 품질을 보장하는 자료는 아닙니다.

실행·검증 기록

Windows 로컬 Python 표준 라이브러리; 공식 출처 확인일 2026-09-19

  • 합성 입력 4행의 팀별 건수·시간 합계와 평균을 독립 계산하여 expected-output.json과 비교
  • 0건인 지원 팀의 평균이 null인지 확인
  • 요청문의 입력·출력·샘플·오류·민감정보 제외 항목 및 JSON 문법 확인
검증 범위의 한계
  • AI 서비스 호출 및 코드 생성·실행을 수행하지 않음
  • 요청문만으로 생성될 코드의 정확성·보안성을 보장하지 않음

사이트 전체의 작성·검증 원칙

직접 실행할 예제 파일

코드·입력 데이터·실행 안내가 포함되어 있습니다. 압축을 풀고 README.txt부터 읽어 주세요.

예제 ZIP 다운로드

직접 작성한 연습 자료 · 원본을 따로 보관한 뒤 실행하세요.

참고 출처

설명과 예제는 직접 작성했습니다. 관련 동작과 개념은 아래 공식 자료에서 확인할 수 있습니다.