Harness Engineering ์ค์ฌ์ ๊ณ ์ ๋ขฐ์ฑ AI Agent ์ค๊ณ ํ๋ ์์ํฌ
๐๏ธ Building High-Quality AI Agents ๐ค โ A Comprehensive, Actionable Field Guide ๐
AI ์์ฝ
Context
๋๋ถ๋ถ์ AI Agent ์ฑ๋ฅ ์ ํ๋ฅผ ๋ชจ๋ธ ์ฑ๋ฅ ๋ถ์กฑ์ด ์๋ Harness(์์คํ ํ๋กฌํํธ, ๋๊ตฌ, ์๋๋ฐ์ค ๋ฑ)์ ๊ตฌ์ฑ ๋ฌธ์ ๋ก ์ ์. ๋ชจ๋ธ์ ๊ณ ์ ๋ ํจ์๋ก ์ทจ๊ธํ๋ฉฐ ์ด๋ฅผ ๋๋ฌ์ผ ์ค์ผ์คํธ๋ ์ด์ ๊ณ์ธต์ ์ ๋ฐํ ์ค๊ณ๊ฐ ์ ์ฒด ํ์ง์ 80%๋ฅผ ๊ฒฐ์ ํ๋ ๊ตฌ์กฐ์ ํ๊ณ๋ฅผ ๋ถ์.
Technical Solution
- Async Generator ๊ธฐ๋ฐ์ Loop ์ค๊ณ๋ฅผ ํตํด Backpressure ์ฒ๋ฆฌ์ ์ทจ์ ๊ฐ๋ฅ์ฑ ๋ฐ Typed Terminal State๋ฅผ ๊ตฌํํ ์ํ ๋จธ์ ๊ตฌ์กฐ ์ฑํ
- Model๊ณผ Harness๋ฅผ ๋ถ๋ฆฌํ๊ณ ConversationState๋ง์ ์ ์ผํ ๊ฐ๋ณ ์ํ๋ก ์ ์งํ๋ Append-only Event Log ๊ธฐ๋ฐ์ Stateless ์ํคํ ์ฒ ์ค๊ณ
- Prompt Cache ํํธ์จ ์ต์ ํ๋ฅผ ์ํด ์ํคํ ์ฒ ์์ค์์ 4๋จ๊ณ Context Compression ํ์ดํ๋ผ์ธ์ ๊ตฌ์ถํ์ฌ ํ ํฐ ๋น์ฉ ์ ๊ฐ ๋ฐ ์๋ ํฅ์
- Vector DB ๋์ File-based Memory์ LLM Recall Side-query ๋ฐฉ์์ ๋์ ํ์ฌ ๋ฉ๋ชจ๋ฆฌ ๋ก๋ฉ์ ํฌ๋ช ์ฑ๊ณผ ์ ์ด๊ถ ํ๋ณด
- ๋๊ตฌ๋ณ ๊ถํ ๋ถ์ฌ๊ฐ ์๋ Invocation ๋จ์์ Safety ๊ฒ์ฆ ์ฒด๊ณ๋ฅผ ๊ตฌ์ถํ์ฌ ์คํ ์์ ์ ๋์ ๋ณด์ ๋ฆฌ์คํฌ ์ ๊ฑฐ
- SDK์ Application์ ์๊ฒฉํ ๋ถ๋ฆฌ๋ฅผ ํตํด Local/Docker Workspace๋ฅผ ์์ ๋กญ๊ฒ ๊ต์ฒด ๊ฐ๋ฅํ 2๊ณ์ธต Composability ๊ตฌ์กฐ ๊ตฌํ
์ค์ฒ ํฌ์ธํธ
- Agent Loop๋ฅผ Async Generator๋ก ๊ตฌํํ์ฌ ์ ์ด ํ๋ฆ์ ๋จ์ผํํ๋๊ฐ - ๋ชจ๋ Tool์ด Schema์ ๊ถํ์ ํฌํจํ์ฌ Self-describing ๊ตฌ์กฐ๋ฅผ ๊ฐ์ถ์๋๊ฐ - ์ํ ๋ณ๊ฒฝ ์ ๊ฐ์ฒด ๋ณ์ด(Mutation)๊ฐ ์๋ Event Append ๋ฐฉ์์ ์ฌ์ฉํ๋๊ฐ - Prompt Cache ํจ์จ์ ๋์ด๊ธฐ ์ํ ์ปจํ ์คํธ ์์ถ ์ ๋ต์ด ์ค๊ณ์ ๋ฐ์๋์๋๊ฐ - Tenant_id๋ฅผ ํตํ Multi-tenancy ๊ตฌ์กฐ๊ฐ ๋ฐ์ดํฐ ๊ณ์ธต๋ถํฐ ์ ์ฉ๋์๋๊ฐ