Update wiki page 'Step 04'
117
Step-04.md
117
Step-04.md
@@ -1,106 +1,11 @@
|
||||
# Step 04. 블록 해체 및 분류 (Block Decomposition)
|
||||
|
||||
## 목적
|
||||
파일 전체가 아닌 블록 단위로 해체하여 Judge-Standard 기준으로 각 블록의 성격을 판단한다.
|
||||
하나의 파일에서 프롬프트, 도메인, 코드도메인, 제외가 동시에 나올 수 있다.
|
||||
|
||||
## 판단 전 반드시 숙지
|
||||
분류 기준은 Judge-Standard 위키를 따른다.
|
||||
아래는 오판을 방지하기 위한 핵심 주의사항이다.
|
||||
|
||||
### 프롬프트 판단 시 주의
|
||||
- .txt / .md 파일 전체가 프롬프트일 수 있다 → 파일 전체 내용을 읽고 판단한다
|
||||
- "당신은 ~입니다", "You are ~", "Act as ~" 로 시작하는 섹션 → 프롬프트 후보일 수 있으나, Judge-Standard 3요소(행동 지시, 가변 블록 포함)를 모두 충족하는지 반드시 추가 확인한다. 해당 문구만으로 프롬프트로 단정하지 않는다
|
||||
- API 호출 코드(`openai.ChatCompletion.create()`, `client.chat.completions.create()` 등)는 프롬프트가 아니다 → 제외
|
||||
- 한 줄짜리 인라인 f-string(`f"다음을 번역해줘:\n{text}"`)은 프롬프트가 아니다 → 제외
|
||||
- `messages` 리스트 내부의 `content` 값만 추출하여 판단한다
|
||||
|
||||
### 도메인 판단 시 주의
|
||||
- 도메인의 범위는 Judge-Standard를 따른다. 미리 한정하지 않는다
|
||||
- CSS/HTML/JS도 재사용 가능하면 도메인이다
|
||||
- .txt / .md 파일 안의 CSS 블록, HTML 구조, JS 함수도 도메인이 될 수 있다
|
||||
|
||||
### 코드도메인 판단 시 주의
|
||||
- Python def / class 단위로 독립 완결되는 것만 해당한다
|
||||
- 경로 설정, API 키, import 문만 있는 블록은 제외
|
||||
- if __name__ == "__main__" 블록은 제외
|
||||
|
||||
## 파일 유형별 해체 방식
|
||||
|
||||
### .txt / .md 파일
|
||||
- 파일 전체 내용을 읽는다
|
||||
- 섹션(##) 단위로 분리하여 각각 판단한다
|
||||
- 파일 전체가 하나의 프롬프트인 경우도 있다 (예: 작성_가이드.txt)
|
||||
- 파일 안에 CSS/HTML/JS 블록이 섞여있으면 해당 블록도 별도 추출한다
|
||||
|
||||
### .py 파일
|
||||
- 멀티라인 문자열 변수(`"""..."""`)
|
||||
- `PROMPT_`, `SYSTEM_`, `system_prompt` 등 프롬프트 관련 변수명의 값
|
||||
- `messages=[...]` 내부 content 값
|
||||
- `def` / `class` 단위 함수·클래스
|
||||
- 위 단위로 분리하여 각각 판단한다
|
||||
|
||||
### .html 파일
|
||||
- `<style>` 태그 → 도메인 후보
|
||||
- `<script>` 태그 → 도메인 후보
|
||||
- 레이아웃 구조 → 도메인 후보
|
||||
- 섹션별로 분리하여 판단한다
|
||||
|
||||
### .json / .yaml 파일
|
||||
- `system`, `prompt`, `messages` 키의 값 → 프롬프트 후보
|
||||
|
||||
## 혼재 파일 처리 원칙
|
||||
하나의 파일에서 여러 분류가 나오면 블록별로 독립 추출하여 각 목적 폴더에 저장한다
|
||||
|
||||
예시: 작성_가이드.txt (1개 파일)
|
||||
- "당신은 전문 퍼블리싱 편집 디자이너입니다..." 섹션 → 프롬프트
|
||||
- CSS 블록 전체 → 도메인
|
||||
- HTML 구조 (box-cover, box-toc 등) → 도메인
|
||||
- JavaScript 페이지네이션 로직 → 도메인
|
||||
|
||||
예시: step3_domain.py (1개 파일)
|
||||
- `def sample_from_pdf(...)` 함수 → 코드도메인
|
||||
- `def sample_from_xlsx(...)` 함수 → 코드도메인
|
||||
- `OPENAI_API_KEY = "sk-..."` → 제외 [SKIP: Config]
|
||||
- `client.chat.completions.create(...)` 호출부 → 제외
|
||||
|
||||
## 통과 기준
|
||||
- 파일 전체 복사 0건 (반드시 블록 단위 추출)
|
||||
- API 호출 코드가 프롬프트 폴더에 혼입 0건
|
||||
- 한 줄짜리 인라인 문자열이 프롬프트로 분류 0건
|
||||
- .txt / .md 파일 내 실제 프롬프트 누락 0건
|
||||
|
||||
## 다음 단계
|
||||
- 분류 결과 사용자 보고 후 승인 → Step-05로 이동
|
||||
- 오판 발견 시 → 재실행
|
||||
|
||||
---
|
||||
|
||||
## 진행현황 이슈 코멘트 템플릿
|
||||
```
|
||||
### [Step-04] 블록 해체 및 분류 - YYYY-MM-DD
|
||||
|
||||
[완료] 프롬프트로 분류된 블록 수:
|
||||
[완료] 도메인으로 분류된 블록 수:
|
||||
[완료] 코드도메인으로 분류된 블록 수:
|
||||
[완료] 제외 처리된 블록 수:
|
||||
[MANUAL: Review Required] 판단 불가 목록:
|
||||
[MANUAL: Too Short] 목록:
|
||||
[확인] 사용자 승인 여부:
|
||||
|
||||
→ 결과: 통과 / 재실행
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Gitea 등록 (MCP 호출)
|
||||
1. "진행현황" 이슈 번호 확인
|
||||
2. 코멘트 템플릿을 채운다
|
||||
3. create_issue_comment 호출
|
||||
|
||||
문제 발생 시:
|
||||
1. create_issue 호출 → 제목: [Step-04] 문제 요약
|
||||
2. 해당 이슈에 create_issue_comment 3회 호출
|
||||
- 코멘트 1: 원인 분석
|
||||
- 코멘트 2: 변경 대상 및 이유
|
||||
- 코멘트 3: 해결 방향 및 임시 조치
|
||||
# Step 04. 의미 기반 블록 해체 및 분류
|
||||
## 1. 목적 (Objective)
|
||||
파일의 기술적 형식이 아닌 '언어적 의도(Intent)'를 분석하여 Prompt(실행문)와 Domain(지식)을 근본적으로 분리.
|
||||
## 2. 수행방법 (Methodology)
|
||||
- NLP 의도 분석: 문장 내 서술어 밀도를 체크하여 '명령/지시' 성격이 강한 경우만 Prompt 후보로 선별.
|
||||
- 데이터 환원: 단순 리스트, 로그, 소스 코드 등은 즉시 Domain으로 확정 분류.
|
||||
## 3. 처리원칙 (Principles)
|
||||
- '자의적 해석 금지': 단순히 특정 키워드가 있다고 프롬프트로 분류하지 말 것.
|
||||
- '의미 중심': AI가 수행할 'Task'가 명확히 담겨 있는가? 라는 질문에 답할 수 있어야 함.
|
||||
## 4. 통과 기준 (Success Criteria)
|
||||
- Prompt 후보군에 순수 데이터 파일이 0개여야 함.
|
||||
Reference in New Issue
Block a user