# πŸŽ™οΈ νŠΉκ°• λ°œν‘œ λŒ€λ³Έ 슀크립트 β€” 1. Engineering λ³Έ λ¬Έμ„œλŠ” `1_engineering.md` μŠ¬λΌμ΄λ“œμ— λŒ€μ‘ν•˜λŠ” λ°œν‘œμš© λŒ€λ³Έ μŠ€ν¬λ¦½νŠΈμž…λ‹ˆλ‹€. μ²­μ€‘μ˜ 이해λ₯Ό 돕기 μœ„ν•΄ μΉœμ ˆν•œ ꡬ어체 μ‘΄λŒ“λ§λ‘œ μž‘μ„±λ˜μ—ˆμŠ΅λ‹ˆλ‹€. --- ### 🎴 Slide 1: 1μž₯ 타이틀 및 κ°œμš” * **μŠ¬λΌμ΄λ“œ 제λͺ©**: 1. AI μ—μ΄μ „νŠΈ κ΅¬ν˜„μ„ μœ„ν•œ 3λŒ€ 핡심 μ—”μ§€λ‹ˆμ–΄λ§ 기법 * **λŒ€λ³Έ**: > "그럼 이제 본격적으둜 1μž₯, **AI μ—μ΄μ „νŠΈ κ΅¬ν˜„μ„ μœ„ν•œ 3λŒ€ 핡심 μ—”μ§€λ‹ˆμ–΄λ§ 기법**을 μ‚΄νŽ΄λ³΄κ² μŠ΅λ‹ˆλ‹€. > λ‹¨μˆœνžˆ λ˜‘λ˜‘ν•œ AI λͺ¨λΈμ„ κ°€μ Έμ˜¨λ‹€κ³  ν•΄μ„œ μ•Œμ•„μ„œ μΌν•˜λŠ” μ—μ΄μ „νŠΈκ°€ μ™„μ„±λ˜μ§€λŠ” μ•ŠμŠ΅λ‹ˆλ‹€. > λͺ¨λΈμ„ μ •λ°€ν•˜κ²Œ μ œμ–΄ν•˜κ³ , μ‹€μ‹œκ°„ λŒ€ν™” 정보λ₯Ό κ΄€λ¦¬ν•˜λ©°, μ‹€μ œ 물리적 ν™˜κ²½μ— μ—°κ²°ν•˜κΈ° μœ„ν•΄ μ„Έ κ°€μ§€ μ—”μ§€λ‹ˆμ–΄λ§ λΆ„μ•Όκ°€ 유기적으둜 μž‘λ™ν•΄μ•Ό ν•©λ‹ˆλ‹€. > 첫 λ²ˆμ§ΈλŠ” 머리λ₯Ό μ„ΈνŒ…ν•˜λŠ” **ν”„λ‘¬ν”„νŠΈ μ—”μ§€λ‹ˆμ–΄λ§**, 두 λ²ˆμ§ΈλŠ” 기얡을 κ΅¬μ„±ν•˜λŠ” **μ»¨ν…μŠ€νŠΈ μ—”μ§€λ‹ˆμ–΄λ§**, μ„Έ λ²ˆμ§ΈλŠ” μ‹€μ œ μ†λ°œμ„ λ‹¬μ•„μ£ΌλŠ” **ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§**μž…λ‹ˆλ‹€. > 각 기법이 ꡬ체적으둜 μ–΄λ–€ 의미λ₯Ό κ°€μ‘ŒλŠ”μ§€ μ‹€μ œ 사둀와 ν•¨κ»˜ μ§šμ–΄λ³΄κ² μŠ΅λ‹ˆλ‹€." --- ### 🎴 Slide 2: 1️⃣ ν”„λ‘¬ν”„νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ (Prompt Engineering) * **μŠ¬λΌμ΄λ“œ 제λͺ©**: 1️⃣ ν”„λ‘¬ν”„νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ (Prompt Engineering) * **λŒ€λ³Έ**: > "첫 번째 κΈ°λ‘₯인 **ν”„λ‘¬ν”„νŠΈ μ—”μ§€λ‹ˆμ–΄λ§**μž…λ‹ˆλ‹€. > 졜근 AI λͺ¨λΈλ“€μ΄ λΉ„μ•½μ μœΌλ‘œ λ°œμ „ν•˜κ³  자체적인 μΆ”λ‘  λŠ₯λ ₯이 ν–₯μƒλ˜λ©΄μ„œ, μ˜ˆμ „λ§ŒνΌ λ‹¨μ–΄λ‚˜ 기호 ν•˜λ‚˜μ— μ§‘μ°©ν•˜λŠ” λ―Έμ‹œμ μΈ ν”„λ‘¬ν”„νŠΈ 트릭의 κ°€μΉ˜λŠ” 쀄어듀고 μžˆμŠ΅λ‹ˆλ‹€. > ν•˜μ§€λ§Œ ν”„λ‘¬ν”„νŠΈλŠ” μ—¬μ „νžˆ **AI μ—μ΄μ „νŠΈ ν™œμš©μ˜ μ‹œμž‘μ μ΄μž κ°€μž₯ μ€‘μš”ν•œ λΌˆλŒ€**μž…λ‹ˆλ‹€. μ—μ΄μ „νŠΈ μ‹œμŠ€ν…œμ„ 섀계할 λ•Œ ν”„λ‘¬ν”„νŠΈμ— λ°˜λ“œμ‹œ λ°˜μ˜ν•΄μ•Ό ν•˜λŠ” μ„Έ κ°€μ§€ 고렀사항이 μžˆμŠ΅λ‹ˆλ‹€. > μ²«μ§ΈλŠ” **μ—­ν•  및 페λ₯΄μ†Œλ‚˜ μ§€μ‹œ**μž…λ‹ˆλ‹€. μ—μ΄μ „νŠΈκ°€ μ–΄λ–€ μ „λ¬Έ 지식 λ²”μœ„μ™€ 행동 κ·œμΉ™μ„ κ³ μˆ˜ν•΄μ•Ό ν•˜λŠ”μ§€ 경계λ₯Ό μ§€μ •ν•΄ μ£ΌλŠ” κ²ƒμž…λ‹ˆλ‹€. > λ‘˜μ§ΈλŠ” **ꡬ체적인 μž‘μ—… μ˜ˆμ‹œ 제곡, 즉 Few-shot**μž…λ‹ˆλ‹€. μ—μ΄μ „νŠΈκ°€ λ‚΄λ†“λŠ” 닡변이 μ˜ˆμ™Έ 없이 μΌκ΄€λœ 양식과 톀을 μœ μ§€ν•˜λ„λ‘ λͺ¨λ²” μ˜ˆμ‹œλ₯Ό μ œκ³΅ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. > μ…‹μ§ΈλŠ” **μžκ°€ 검증 방법 μ œμ‹œ**μž…λ‹ˆλ‹€. μ—μ΄μ „νŠΈ 슀슀둜 결과물을 κ²€μ‚¬ν•˜κ²Œ ν•˜κ±°λ‚˜, μ™ΈλΆ€ μ‹œμŠ€ν…œμ΄ μ‹€ν–‰ κ²°κ³Όλ₯Ό ν™•μΈν•˜κ³  μ•ˆμ „ν•˜κ²Œ ν†΅μ œν•  수 μžˆλ„λ‘ μ •ν˜•ν™”λœ 좜λ ₯ 규격(예: 톡과 μ‹œ `[VERDICT: PASS]` λͺ…μ‹œ μš”κ΅¬)을 μ‹¬μ–΄λ‘λŠ” κ²ƒμž…λ‹ˆλ‹€. 이 μ„Έ μš”μ†Œκ°€ κ· ν˜•μ„ 이루어야 λΉ„λ‘œμ†Œ μ‹ λ’°ν•  수 μžˆλŠ” 쒋은 ν”„λ‘¬ν”„νŠΈκ°€ μ™„μ„±λ©λ‹ˆλ‹€." --- ### 🎴 Slide 2-1: πŸ’‘ μ‹€μ œ ν”„λ‘¬ν”„νŠΈ ꡬ쑰 μ˜ˆμ‹œ (ReAct 사고 방식) * **μŠ¬λΌμ΄λ“œ 제λͺ©**: πŸ’‘ μ‹€μ œ ν”„λ‘¬ν”„νŠΈ ꡬ쑰 μ˜ˆμ‹œ (ReAct 사고 방식) * **λŒ€λ³Έ**: > "κ·Έλ ‡λ‹€λ©΄ 이 고렀사항듀이 반영된 μ‹€μ œ ν”„λ‘¬ν”„νŠΈ κ΅¬μ‘°λŠ” μ–΄λ–¨κΉŒμš”? > λŒ€ν‘œμ μΈ 기법이 λ°”λ‘œ 화면에 λ³΄μ΄λŠ” **ReAct(Reason + Action) 사고 방식**을 κ°•μ œν•˜λŠ” ν…œν”Œλ¦Ώμž…λ‹ˆλ‹€. > μš°λ¦¬λŠ” μ—μ΄μ „νŠΈμ—κ²Œ λ‹¨μˆœνžˆ '문제λ₯Ό 풀어라' ν•˜κ³  결과만 묻지 μ•ŠμŠ΅λ‹ˆλ‹€. > λŒ€μ‹  'Thought(문제λ₯Ό ν’€κΈ° μœ„ν•œ κ³„νšμ„ λ¨Όμ € μ„Έμš°κ³ ) ➑️ Action(λ„€κ°€ 직접 μ‹€ν–‰ν•  λ„κ΅¬μ˜ μΈμžκ°’μ„ JSON으둜 적고) ➑️ Observation(λ„κ΅¬μ˜ μ‹€μ œ μ‹€ν–‰ κ²°κ³Όλ₯Ό 눈으둜 보고 뢄석해라)'μ΄λΌλŠ” 단계적 μƒκ°μ˜ 길을 μ—΄μ–΄μ€λ‹ˆλ‹€. > μ΄λ ‡κ²Œ κ΅¬μ‘°ν™”λœ 사고 κ°€μ΄λ“œλ₯Ό ν”„λ‘¬ν”„νŠΈμ— κ°•μ œν•¨μœΌλ‘œμ¨, AIκ°€ μ„£λΆˆλ¦¬ 엉터리 닡을 찍지 μ•Šκ³ , μ‹ μ€‘ν•˜κ²Œ 도ꡬλ₯Ό μ‹€ν–‰ν•˜λ©° κ·Έ κ²°κ³Όλ₯Ό ν† λŒ€λ‘œ 정닡을 ν–₯ν•΄ μ°¨κ·Όμ°¨κ·Ό λ‚˜μ•„κ°€κ²Œ μ œμ–΄ν•  수 μžˆμŠ΅λ‹ˆλ‹€." --- ### 🎴 Slide 3: 2️⃣ μ»¨ν…μŠ€νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ (Context Engineering) * **μŠ¬λΌμ΄λ“œ 제λͺ©**: 2️⃣ μ»¨ν…μŠ€νŠΈ μ—”μ§€λ‹ˆμ–΄λ§ (Context Engineering) * **λŒ€λ³Έ**: > "두 번째 κΈ°λ‘₯은 **μ»¨ν…μŠ€νŠΈ μ—”μ§€λ‹ˆμ–΄λ§**μž…λ‹ˆλ‹€. > AI λͺ¨λΈμ˜ κΈ°μ–΅ 곡간인 'μ»¨ν…μŠ€νŠΈ μœˆλ„μš°'λŠ” λ¬΄ν•œν•˜μ§€ μ•Šκ³  λΉ„μš©μ΄ λ“­λ‹ˆλ‹€. > λ”°λΌμ„œ λŒ€ν™” 흐름을 μ••μΆ•ν•˜μ—¬ μœ μ§€ν•˜κ³ , μˆ˜λ§Žμ€ μ†ŒμŠ€μ½”λ“œλ‚˜ λ¬Έμ„œ μ€‘μ—μ„œ μ§€κΈˆ λ‹Ήμž₯ ν•„μš”ν•œ 핡심 λ°μ΄ν„°λ§Œ μ μ‹œμ— ν•„ν„°λ§ν•˜μ—¬ κ½‚μ•„μ£ΌλŠ” 기술이 ν•„μˆ˜μ μž…λ‹ˆλ‹€. > μŠ¬λΌμ΄λ“œ 였λ₯Έμͺ½μ˜ μ—μ΄μ „νŠΈ μƒνƒœ 보쑴 μ˜ˆμ‹œλ₯Ό λ³΄κ² μŠ΅λ‹ˆλ‹€. > μ—μ΄μ „νŠΈλŠ” μ‚¬μš©μžμ™€ 주고받은 20번의 κΈ΄ λŒ€ν™” λ‚΄μš©μ„ 날것 κ·ΈλŒ€λ‘œ λͺ¨λΈμ— λ˜μ§€μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. > λŒ€μ‹  ν˜„μž¬ μž‘μ—… IDκ°€ 무엇인지, μ§€κΈˆ μž‘μ—… λ””λ ‰ν„°λ¦¬λŠ” 어디인지, λ°œμƒν•œ μ—λŸ¬ λ‘œκ·ΈλŠ” 무엇인지, 그리고 이미 끝낸 μž‘μ—…κ³Ό λ‹€μŒμ— ν•  일은 무엇인지 등을 JSON ν˜•νƒœμ˜ κ΅¬μ‘°ν™”λœ 데이터 μƒνƒœλ‘œ μ••μΆ•ν•˜κ³  μš”μ•½ν•˜μ—¬ λ³΄μ‘΄ν•©λ‹ˆλ‹€. > μ΄λ ‡κ²Œ μƒνƒœλ₯Ό 효율적으둜 μΊμ‹±ν•˜κ³  μ •μ œν•˜μ—¬ λͺ¨λΈμ— μ•Œλ €μ€ŒμœΌλ‘œμ¨, λΆˆν•„μš”ν•œ λΉ„μš©μ„ 쀄이고 λ‹΅λ³€μ˜ 정확도λ₯Ό κ·ΉλŒ€ν™”ν•  수 μžˆμŠ΅λ‹ˆλ‹€." --- ### 🎴 Slide 4: 3️⃣ ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§ (Harness Engineering) * **μŠ¬λΌμ΄λ“œ 제λͺ©**: 3️⃣ ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§ (Harness Engineering) * **λŒ€λ³Έ**: > "λ§ˆμ§€λ§‰ μ„Έ λ²ˆμ§ΈλŠ” μ—μ΄μ „νŠΈμ—κ²Œ μ§„μ§œ μ‹€ν–‰ λŠ₯λ ₯을 λΆ€μ—¬ν•˜λŠ” **ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§**μž…λ‹ˆλ‹€. > 아무리 λͺ¨λΈμ΄ ν›Œλ₯­ν•œ μˆ˜μ • κ³„νšμ„ μ„Έμ›Œλ„, μ‹€μ œ λ””μŠ€ν¬μ— μ €μž₯ν•˜κ±°λ‚˜ μ½”λ“œλ₯Ό μ»΄νŒŒμΌν•  수 μ—†λ‹€λ©΄ μ—μ΄μ „νŠΈλΌκ³  λΆ€λ₯Ό 수 μ—†μŠ΅λ‹ˆλ‹€. > ν•˜λ„€μŠ€λŠ” λͺ¨λΈμ΄ λ‚΄λ¦° νŒλ‹¨μ„ 감지해 μ‹€μ œ 컴퓨터 λͺ…λ Ήμ–΄(ls, python3 run λ“±)둜 λ³€ν™˜ν•΄ μ‹€ν–‰ν•˜κ³ , κ·Έ μ‹€ν–‰ κ²°κ³Όλ₯Ό λ‹€μ‹œ λͺ¨λΈμ—κ²Œ 바인딩해 μ£ΌλŠ” μΈν„°νŽ˜μ΄μŠ€ μΈν”„λΌμž…λ‹ˆλ‹€. > μŠ¬λΌμ΄λ“œμ˜ λ‹€μ΄μ–΄κ·Έλž¨μ„ λ³΄μ‹œλ©΄ 흐름이 잘 λ³΄μž…λ‹ˆλ‹€. > λͺ¨λΈμ΄ 'Action: 파일 λͺ©λ‘μ„ 보고 μ‹Άμ–΄'라고 ν…μŠ€νŠΈλ‘œ λ‚΄λ†“μœΌλ©΄, μ—μ΄μ „νŠΈ ν•˜λ„€μŠ€ μ‹œμŠ€ν…œμ΄ 이λ₯Ό κ°€λ‘œμ±„μ„œ(Intercept) μ‹€μ œ 격리된 컴퓨터 ν™˜κ²½(Docker μƒŒλ“œλ°•μŠ€ λ“±)μ—μ„œ λͺ…령을 μˆ˜ν–‰ν•©λ‹ˆλ‹€. > 그리고 κ·Έ μ‹€ν–‰ κ²°κ³Όλ₯Ό λ‹€μ‹œ 'Observation: κ²°κ³ΌλŠ” λ‹€μŒκ³Ό κ°™μ•„'라고 μ •ν˜•ν™”ν•΄ λͺ¨λΈμ˜ λˆˆμ•žμ— κ°€μ Έλ‹€μ€λ‹ˆλ‹€. > λ˜ν•œ, λͺ¨λΈμ΄ ν˜Ήμ‹œλ‚˜ 컴퓨터λ₯Ό λ§κ°€λœ¨λ¦΄ 수 μžˆλŠ” λͺ…령을 내리지 λͺ»ν•˜λ„둝 μ•ˆμ „λ§(Sandboxing)을 μ”Œμ›Œμ£ΌλŠ” 것 μ—­μ‹œ ν•˜λ„€μŠ€ μ—”μ§€λ‹ˆμ–΄λ§μ˜ 핡심 μ˜λ¬΄μž…λ‹ˆλ‹€. > 이 3λŒ€ 기술이 μ™„λ²½νžˆ λ§žλ¬Όλ Έμ„ λ•Œ, λΉ„λ‘œμ†Œ μžμœ¨ν˜• μ—μ΄μ „νŠΈκ°€ λ‹¨λ…μœΌλ‘œ 기동할 수 있게 λ©λ‹ˆλ‹€."