docs: expand 3 engineering pillars into 4 slides with examples and add script
This commit is contained in:
@@ -72,6 +72,9 @@ marp: true
|
|||||||
|
|
||||||
사용자가 최종 목표만 주면 스스로 실행 가능한 단계별 세부 태스크를 설계하고, 진행 과정에서 문제가 생기면 계획을 유연하게 수정하는 능력입니다.
|
사용자가 최종 목표만 주면 스스로 실행 가능한 단계별 세부 태스크를 설계하고, 진행 과정에서 문제가 생기면 계획을 유연하게 수정하는 능력입니다.
|
||||||
|
|
||||||
|
- **Task Decomposition (작업 분해)**: 복잡한 목표를 실행 가능한 작은 단위의 세부 태스크로 분할 (예: Chain of Thought, Tree of Thoughts 등)
|
||||||
|
- **Self-Reflection (자기 성찰 및 피드백)**: 행동 결과를 스스로 분석하고 실수를 교정하여 향후 계획을 실시간으로 수정 (예: ReAct, Reflexion 프레임워크)
|
||||||
|
|
||||||
* **실제 예시**:
|
* **실제 예시**:
|
||||||
에이전트에게 "블로그 기사 작성"을 요청하면, 스스로 **'키워드 조사 ➡️ 개요 작성 ➡️ 본문 집필 ➡️ 오탈자 검사'** 순으로 계획을 세웁니다. 만약 맞춤법 검사 도중 치명적인 논리 오류를 발견하면, 본문 작성 단계로 스스로 되돌아가 계획을 수정하고 다시 쓰는 자가 성찰(Self-Reflection)을 거칩니다.
|
에이전트에게 "블로그 기사 작성"을 요청하면, 스스로 **'키워드 조사 ➡️ 개요 작성 ➡️ 본문 집필 ➡️ 오탈자 검사'** 순으로 계획을 세웁니다. 만약 맞춤법 검사 도중 치명적인 논리 오류를 발견하면, 본문 작성 단계로 스스로 되돌아가 계획을 수정하고 다시 쓰는 자가 성찰(Self-Reflection)을 거칩니다.
|
||||||
|
|
||||||
@@ -81,6 +84,9 @@ marp: true
|
|||||||
|
|
||||||
현재 나누는 대화의 즉각적인 흐름(단기 기억)뿐만 아니라, 과거의 경험과 누적된 지식(장기 기억)을 필요할 때마다 영속적으로 꺼내어 쓰는 능력입니다.
|
현재 나누는 대화의 즉각적인 흐름(단기 기억)뿐만 아니라, 과거의 경험과 누적된 지식(장기 기억)을 필요할 때마다 영속적으로 꺼내어 쓰는 능력입니다.
|
||||||
|
|
||||||
|
- **Short-term Memory (단기 기억)**: 현재 대화나 컨텍스트 윈도우 내에서 실시간으로 유지되는 즉각적인 맥락 정보
|
||||||
|
- **Long-term Memory (장기 기억)**: 외부 데이터베이스나 벡터 DB를 활용하여 과거 대화 기록 및 지식을 RAG 기법으로 바인딩하는 정보 보존 공간
|
||||||
|
|
||||||
* **실제 예시**:
|
* **실제 예시**:
|
||||||
에이전트에게 "어제 작업하던 파이썬 소스코드의 오류를 이어서 수정해줘"라고 요청하는 경우입니다. 에이전트는 데이터베이스에 누적된 과거 대화 히스토리와, 벡터 DB에 저장되어 있는 소스코드의 예전 상태 정보를 동적으로 인출(Retrieval)해 와 대화 맥락을 끊김 없이 이어갑니다.
|
에이전트에게 "어제 작업하던 파이썬 소스코드의 오류를 이어서 수정해줘"라고 요청하는 경우입니다. 에이전트는 데이터베이스에 누적된 과거 대화 히스토리와, 벡터 DB에 저장되어 있는 소스코드의 예전 상태 정보를 동적으로 인출(Retrieval)해 와 대화 맥락을 끊김 없이 이어갑니다.
|
||||||
|
|
||||||
@@ -108,6 +114,8 @@ marp: true
|
|||||||
|
|
||||||
현재 에이전트 기술에서 가장 중요한 변화 중 하나는, 과거에 에이전트 제어 시스템(Scaffolding, 에이전트의 구동을 돕는 외부 뼈대 구조)이 수동으로 제어하던 기능들이 점점 AI 모델 내부로 흡수되고 있는 현상입니다.
|
현재 에이전트 기술에서 가장 중요한 변화 중 하나는, 과거에 에이전트 제어 시스템(Scaffolding, 에이전트의 구동을 돕는 외부 뼈대 구조)이 수동으로 제어하던 기능들이 점점 AI 모델 내부로 흡수되고 있는 현상입니다.
|
||||||
|
|
||||||
|
- https://arca.live/b/characterai/174977057?category=%EB%89%B4%EC%8A%A42&p=1
|
||||||
|
|
||||||
- **스스로 생각하는 모델의 등장 (Test-time Compute, 추론 시점 추가 연산)**
|
- **스스로 생각하는 모델의 등장 (Test-time Compute, 추론 시점 추가 연산)**
|
||||||
최근 출시된 Gemini Thinking이나 OpenAI o1/o3 같은 모델들은 외부 시스템이 루프를 돌려주지 않아도, 모델 스스로 출력을 내보내기 전에 내부적으로 계획을 세우고(Planning) 스스로 오류를 성찰(Reflection)하는 과정을 완료합니다.
|
최근 출시된 Gemini Thinking이나 OpenAI o1/o3 같은 모델들은 외부 시스템이 루프를 돌려주지 않아도, 모델 스스로 출력을 내보내기 전에 내부적으로 계획을 세우고(Planning) 스스로 오류를 성찰(Reflection)하는 과정을 완료합니다.
|
||||||
- **인지와 집행의 명확한 역할 분담**
|
- **인지와 집행의 명확한 역할 분담**
|
||||||
@@ -119,41 +127,73 @@ marp: true
|
|||||||
|
|
||||||
# 1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법
|
# 1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법
|
||||||
|
|
||||||
## AI 모델(LLM) vs AI 에이전트
|
성공적인 AI 에이전트 시스템을 구현하기 위해서는 단순히 모델에게 프롬프트를 입력하는 것을 넘어, **모델 제어**, **정보 연동**, **물리적 환경 연결**을 유기적으로 엮어내는 3가지 핵심 엔지니어링 기법이 필요합니다.
|
||||||
AI 에이전트(AI Agent)는 단순히 사용자의 텍스트 입력을 받아 응답을 생성하는 대화형 인터페이스(Chatbot)를 넘어, 주어진 최종 목표(Goal)를 자율적으로 달성하기 위해 환경을 인식(Perceive)하고, 스스로 계획(Planning) 및 추론(Reasoning)하며, 도구를 사용해 물리적/디지털적 행동(Action)을 수행하는 LLM 기반 소프트웨어 시스템입니다.
|
|
||||||
|
|
||||||
LLM 기반 에이전트 시스템 아키텍처는 크게 다음 3가지 핵심 요소로 구성됩니다:
|
1. **프롬프트 엔지니어링 (Prompt Engineering)**: 에이전트의 페르소나와 사고 방식(추론 가이드라인)을 규정하는 작업입니다.
|
||||||
1. **Planning (계획 및 추론)**
|
2. **컨텍스트 엔지니어링 (Context Engineering)**: 대화 흐름을 끊김 없이 보존하고 관련 데이터를 적시에 제공하는 정보 정리 작업입니다.
|
||||||
- **Task Decomposition (작업 분해)**: 복잡한 목표를 실행 가능한 작은 단위의 세부 태스크로 분할 (예: Chain of Thought, Tree of Thoughts 등)
|
3. **하네스 엔지니어링 (Harness Engineering)**: 격리된 환경에서 다양한 소프트웨어 도구를 안전하게 조작할 수 있는 물리적 손발을 달아주는 작업입니다.
|
||||||
- **Self-Reflection (자기 성찰 및 피드백)**: 행동 결과를 스스로 분석하고 실수를 교정하여 향후 계획을 실시간으로 수정 (예: ReAct, Reflexion 프레임워크)
|
|
||||||
2. **Memory (기억 장치)**
|
|
||||||
- **Short-term Memory (단기 기억)**: 현재 대화나 컨텍스트 윈도우 내에서 실시간으로 유지되는 즉각적인 맥락 정보
|
|
||||||
- **Long-term Memory (장기 기억)**: 외부 데이터베이스나 벡터 DB를 활용하여 과거 대화 기록 및 지식을 RAG 기법으로 바인딩하는 정보 보존 공간
|
|
||||||
|
|
||||||
- https://arca.live/b/characterai/174977057?category=%EB%89%B4%EC%8A%A42&p=1
|
---
|
||||||
|
|
||||||
## 3대 핵심 엔지니어링 기법
|
### 1️⃣ 프롬프트 엔지니어링 (Prompt Engineering)
|
||||||
성공적인 AI 에이전트 구현을 위해서는 모델 제어, 정보 연동, 물리적 환경 연결을 최적화하는 3대 엔지니어링 기법이 필수적으로 수반되어야 합니다.
|
|
||||||
|
|
||||||
- ### 프롬프트 엔지니어링 (Prompt Engineering)
|
에이전트가 주체적으로 판단하고 행동의 방향성을 잃지 않도록 역할 페르소나를 설계하고, **ReAct(Reason + Action)**와 같은 단계별 사고 흐름(Thought ➡️ Action ➡️ Observation)을 유도하는 기법입니다.
|
||||||
에이전트에게 명확한 역할 페르소나와 추론 가이드라인을 설계하고, 효율적인 추론 경로를 유도하기 위해 프롬프트 구조와 예시(Few-shot)를 최적화하는 기법입니다.
|
|
||||||
- **역할 페르소나 설계**: 에이전트가 특정 전문 도메인 지식과 행동 양식을 고수할 수 있도록 페르소나를 규정
|
|
||||||
- **추론 가이드라인 설계**: ReAct와 같은 사고 단계를 정의하여 모델이 계획 단계를 건너뛰지 않고 순차적으로 사고하도록 제어
|
|
||||||
- **Few-shot 최적화**: 최적의 추론 경로 및 응답 포맷 예시를 프롬프트에 제공하여 응답 일관성을 극대화
|
|
||||||
|
|
||||||
- ### 컨텍스트 엔지니어링 (Context Engineering)
|
* **핵심 설계 요소**:
|
||||||
대화 상태(State)와 흐름을 보존하며, 외부 데이터베이스나 기억(Memory) 장치로부터 필요한 정보를 적시에 모델의 컨텍스트 윈도우에 효율적으로 바인딩하고 공급하는 기술입니다. 단일 에이전트 관점에서는 제한된 컨텍스트 공간 내에서 정보 밀도를 극대화하는 설계가 핵심입니다.
|
- **페르소나 설계**: 전문 도메인 지식과 행동 양식(예: "너는 주니어 개발자를 코칭하는 꼼꼼한 테크리더 에이전트다") 부여
|
||||||
- **대화 상태 및 흐름 보존**: 이전 턴의 작업 상태와 대화 맥락을 유실 없이 세션 전반에 유지
|
- **추론 가이드라인**: 계획을 건너뛰고 섣부른 답변을 내지 않도록 논리적인 생각 단계를 의도적으로 설정
|
||||||
- **적시 동적 바인딩**: 외부 RAG 검색기나 메모리 캐시로부터 관련성이 가장 높은 데이터만을 선별하여 컨텍스트 윈도우에 결합
|
* **실제 프롬프트 구조 예시**:
|
||||||
- **메모리 압축 및 정리**: 불필요한 과거 로그를 요약하거나 중요 상태 구조체 위주로 정제하여 토큰 윈도우 효율성 제고
|
```text
|
||||||
|
[System Prompt]
|
||||||
|
너는 복잡한 수식을 계산하는 수학 에이전트다. 다음 형식으로 사고해라:
|
||||||
|
- Thought: 문제 해결을 위한 다음 행동 계획을 작성해라.
|
||||||
|
- Action: 호출할 도구 이름과 인자값을 JSON으로 적어라. (예: Calculator)
|
||||||
|
- Observation: 도구 실행 결과가 여기에 채워질 것이다.
|
||||||
|
- Thought: 실행 결과를 바탕으로 성찰하고, 필요하면 다음 Action을 설계해라.
|
||||||
|
```
|
||||||
|
|
||||||
- ### 하네스 엔지니어링 (Harness Engineering)
|
---
|
||||||
에이전트가 계산기, 웹 브라우저, 외부 API 및 파일 시스템 등의 물리적 도구(Tools/Tool Use)에 안전하고 유연하게 연결되어 명령을 실행할 수 있도록 연결 고리를 결합하는 도구 연동 인터페이스 기술입니다.
|
|
||||||
- **물리 인터페이스 결합**: LLM의 도구 호출 의도(Tool Call)를 가로채어 실제 운영체제나 네트워크 상의 실행 스크립트로 전달하고 실행 결과를 모델에 반환
|
|
||||||
- **보안 샌드박싱**: 임의 코드 실행이나 파일 훼손 방지를 위해 파일 시스템 격리 및 API 호출 권한 등의 안전 제어막 형성
|
|
||||||
- **도구 활용 (Tool Use)**: 에이전트가 학습되지 않은 외부 정보에 접근하거나 외부 시스템에 영향을 미치기 위해 계산기, 코드 실행용 샌드박스, 웹 브라우저, 외부 API 등을 주도적으로 호출하는 능력
|
|
||||||
|
|
||||||

|
### 2️⃣ 컨텍스트 엔지니어링 (Context Engineering)
|
||||||
|
|
||||||
|
에이전트가 다루는 대화 맥락과 작업 상태(State)를 효율적으로 정제하고, 수많은 외부 정보 중 **지금 꼭 필요한 관련 데이터(RAG)**만을 선별하여 제한된 AI의 기억 공간(컨텍스트 윈도우)에 밀도 높게 채워 넣는 기술입니다.
|
||||||
|
|
||||||
|
* **핵심 설계 요소**:
|
||||||
|
- **대화 상태 보존**: 이전 턴의 작업 결과를 유실 없이 보존
|
||||||
|
- **동적 바인딩**: 외부 RAG 검색기에서 관련도 높은 중요 데이터만 적시에 필터링하여 공급
|
||||||
|
- **메모리 압축**: 불필요한 과거 로그는 요약하고, 핵심 현재 상태 구조체만 유지해 토큰 낭비 방지
|
||||||
|
* **에이전트 상태 보존 예시 (State JSON)**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"task_id": "job_10294",
|
||||||
|
"current_working_directory": "/workspace/src",
|
||||||
|
"error_logs": ["SyntaxError: unexpected EOF while parsing at line 14"],
|
||||||
|
"completed_subtasks": ["1. 소스코드 로드 완료", "2. 오류 라인 식별"],
|
||||||
|
"next_action_required": "오류 라인 14의 괄호 닫힘 확인 및 수정 스크립트 작성"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3️⃣ 하네스 엔지니어링 (Harness Engineering)
|
||||||
|
|
||||||
|
에이전트가 파일 시스템 제어, 브라우저 조작, 외부 API 호출 등 컴퓨터 세상의 다양한 도구들을 안전하게 가동할 수 있도록 **물리적 인터페이스(연결 고리)**를 구성하는 기술입니다.
|
||||||
|
|
||||||
|
* **핵심 설계 요소**:
|
||||||
|
- **도구 호출 가로채기(Intercepting)**: 모델이 내놓은 도구 호출 의도(JSON 등)를 감지하고, 실제 터미널이나 프로그램의 함수로 전달해 구동함
|
||||||
|
- **보안 샌드박싱 (Sandboxing)**: 에이전트가 악성 코드나 파괴적인 명령어를 무단 실행하지 않도록 격리된 가상 환경을 구축하고 권한을 통제함
|
||||||
|
* **물리 인터페이스 도구 결합 예시**:
|
||||||
|
```
|
||||||
|
[LLM의 출력] ──> "Action: execute_command, args: { cmd: 'ls -la' }"
|
||||||
|
│ (하네스가 이를 가로챔)
|
||||||
|
▼
|
||||||
|
[하네스 제어기] ──> 격리된 Docker 샌드박스 내부에서 'ls -la' 실제 실행
|
||||||
|
│ (실행 결과 가로챔)
|
||||||
|
▼
|
||||||
|
[LLM의 입력] <── "Observation: total 12\ndrwxr-xr-x 3 user..." (모델에 반환)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -69,6 +69,9 @@ marp: true
|
|||||||
|
|
||||||
사용자가 최종 목표만 주면 스스로 실행 가능한 단계별 세부 태스크를 설계하고, 진행 과정에서 문제가 생기면 계획을 유연하게 수정하는 능력입니다.
|
사용자가 최종 목표만 주면 스스로 실행 가능한 단계별 세부 태스크를 설계하고, 진행 과정에서 문제가 생기면 계획을 유연하게 수정하는 능력입니다.
|
||||||
|
|
||||||
|
- **Task Decomposition (작업 분해)**: 복잡한 목표를 실행 가능한 작은 단위의 세부 태스크로 분할 (예: Chain of Thought, Tree of Thoughts 등)
|
||||||
|
- **Self-Reflection (자기 성찰 및 피드백)**: 행동 결과를 스스로 분석하고 실수를 교정하여 향후 계획을 실시간으로 수정 (예: ReAct, Reflexion 프레임워크)
|
||||||
|
|
||||||
* **실제 예시**:
|
* **실제 예시**:
|
||||||
에이전트에게 "블로그 기사 작성"을 요청하면, 스스로 **'키워드 조사 ➡️ 개요 작성 ➡️ 본문 집필 ➡️ 오탈자 검사'** 순으로 계획을 세웁니다. 만약 맞춤법 검사 도중 치명적인 논리 오류를 발견하면, 본문 작성 단계로 스스로 되돌아가 계획을 수정하고 다시 쓰는 자가 성찰(Self-Reflection)을 거칩니다.
|
에이전트에게 "블로그 기사 작성"을 요청하면, 스스로 **'키워드 조사 ➡️ 개요 작성 ➡️ 본문 집필 ➡️ 오탈자 검사'** 순으로 계획을 세웁니다. 만약 맞춤법 검사 도중 치명적인 논리 오류를 발견하면, 본문 작성 단계로 스스로 되돌아가 계획을 수정하고 다시 쓰는 자가 성찰(Self-Reflection)을 거칩니다.
|
||||||
|
|
||||||
@@ -78,6 +81,9 @@ marp: true
|
|||||||
|
|
||||||
현재 나누는 대화의 즉각적인 흐름(단기 기억)뿐만 아니라, 과거의 경험과 누적된 지식(장기 기억)을 필요할 때마다 영속적으로 꺼내어 쓰는 능력입니다.
|
현재 나누는 대화의 즉각적인 흐름(단기 기억)뿐만 아니라, 과거의 경험과 누적된 지식(장기 기억)을 필요할 때마다 영속적으로 꺼내어 쓰는 능력입니다.
|
||||||
|
|
||||||
|
- **Short-term Memory (단기 기억)**: 현재 대화나 컨텍스트 윈도우 내에서 실시간으로 유지되는 즉각적인 맥락 정보
|
||||||
|
- **Long-term Memory (장기 기억)**: 외부 데이터베이스나 벡터 DB를 활용하여 과거 대화 기록 및 지식을 RAG 기법으로 바인딩하는 정보 보존 공간
|
||||||
|
|
||||||
* **실제 예시**:
|
* **실제 예시**:
|
||||||
에이전트에게 "어제 작업하던 파이썬 소스코드의 오류를 이어서 수정해줘"라고 요청하는 경우입니다. 에이전트는 데이터베이스에 누적된 과거 대화 히스토리와, 벡터 DB에 저장되어 있는 소스코드의 예전 상태 정보를 동적으로 인출(Retrieval)해 와 대화 맥락을 끊김 없이 이어갑니다.
|
에이전트에게 "어제 작업하던 파이썬 소스코드의 오류를 이어서 수정해줘"라고 요청하는 경우입니다. 에이전트는 데이터베이스에 누적된 과거 대화 히스토리와, 벡터 DB에 저장되어 있는 소스코드의 예전 상태 정보를 동적으로 인출(Retrieval)해 와 대화 맥락을 끊김 없이 이어갑니다.
|
||||||
|
|
||||||
@@ -105,6 +111,8 @@ marp: true
|
|||||||
|
|
||||||
현재 에이전트 기술에서 가장 중요한 변화 중 하나는, 과거에 에이전트 제어 시스템(Scaffolding, 에이전트의 구동을 돕는 외부 뼈대 구조)이 수동으로 제어하던 기능들이 점점 AI 모델 내부로 흡수되고 있는 현상입니다.
|
현재 에이전트 기술에서 가장 중요한 변화 중 하나는, 과거에 에이전트 제어 시스템(Scaffolding, 에이전트의 구동을 돕는 외부 뼈대 구조)이 수동으로 제어하던 기능들이 점점 AI 모델 내부로 흡수되고 있는 현상입니다.
|
||||||
|
|
||||||
|
- https://arca.live/b/characterai/174977057?category=%EB%89%B4%EC%8A%A42&p=1
|
||||||
|
|
||||||
- **스스로 생각하는 모델의 등장 (Test-time Compute, 추론 시점 추가 연산)**
|
- **스스로 생각하는 모델의 등장 (Test-time Compute, 추론 시점 추가 연산)**
|
||||||
최근 출시된 Gemini Thinking이나 OpenAI o1/o3 같은 모델들은 외부 시스템이 루프를 돌려주지 않아도, 모델 스스로 출력을 내보내기 전에 내부적으로 계획을 세우고(Planning) 스스로 오류를 성찰(Reflection)하는 과정을 완료합니다.
|
최근 출시된 Gemini Thinking이나 OpenAI o1/o3 같은 모델들은 외부 시스템이 루프를 돌려주지 않아도, 모델 스스로 출력을 내보내기 전에 내부적으로 계획을 세우고(Planning) 스스로 오류를 성찰(Reflection)하는 과정을 완료합니다.
|
||||||
- **인지와 집행의 명확한 역할 분담**
|
- **인지와 집행의 명확한 역할 분담**
|
||||||
|
|||||||
@@ -4,40 +4,70 @@ marp: true
|
|||||||
|
|
||||||
# 1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법
|
# 1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법
|
||||||
|
|
||||||
## AI 모델(LLM) vs AI 에이전트
|
성공적인 AI 에이전트 시스템을 구현하기 위해서는 단순히 모델에게 프롬프트를 입력하는 것을 넘어, **모델 제어**, **정보 연동**, **물리적 환경 연결**을 유기적으로 엮어내는 3가지 핵심 엔지니어링 기법이 필요합니다.
|
||||||
AI 에이전트(AI Agent)는 단순히 사용자의 텍스트 입력을 받아 응답을 생성하는 대화형 인터페이스(Chatbot)를 넘어, 주어진 최종 목표(Goal)를 자율적으로 달성하기 위해 환경을 인식(Perceive)하고, 스스로 계획(Planning) 및 추론(Reasoning)하며, 도구를 사용해 물리적/디지털적 행동(Action)을 수행하는 LLM 기반 소프트웨어 시스템입니다.
|
|
||||||
|
|
||||||
LLM 기반 에이전트 시스템 아키텍처는 크게 다음 3가지 핵심 요소로 구성됩니다:
|
1. **프롬프트 엔지니어링 (Prompt Engineering)**: 에이전트의 페르소나와 사고 방식(추론 가이드라인)을 규정하는 작업입니다.
|
||||||
1. **Planning (계획 및 추론)**
|
2. **컨텍스트 엔지니어링 (Context Engineering)**: 대화 흐름을 끊김 없이 보존하고 관련 데이터를 적시에 제공하는 정보 정리 작업입니다.
|
||||||
- **Task Decomposition (작업 분해)**: 복잡한 목표를 실행 가능한 작은 단위의 세부 태스크로 분할 (예: Chain of Thought, Tree of Thoughts 등)
|
3. **하네스 엔지니어링 (Harness Engineering)**: 격리된 환경에서 다양한 소프트웨어 도구를 안전하게 조작할 수 있는 물리적 손발을 달아주는 작업입니다.
|
||||||
- **Self-Reflection (자기 성찰 및 피드백)**: 행동 결과를 스스로 분석하고 실수를 교정하여 향후 계획을 실시간으로 수정 (예: ReAct, Reflexion 프레임워크)
|
|
||||||
2. **Memory (기억 장치)**
|
|
||||||
- **Short-term Memory (단기 기억)**: 현재 대화나 컨텍스트 윈도우 내에서 실시간으로 유지되는 즉각적인 맥락 정보
|
|
||||||
- **Long-term Memory (장기 기억)**: 외부 데이터베이스나 벡터 DB를 활용하여 과거 대화 기록 및 지식을 RAG 기법으로 바인딩하는 정보 보존 공간
|
|
||||||
|
|
||||||
- https://arca.live/b/characterai/174977057?category=%EB%89%B4%EC%8A%A42&p=1
|
|
||||||
|
|
||||||
## 3대 핵심 엔지니어링 기법
|
|
||||||
성공적인 AI 에이전트 구현을 위해서는 모델 제어, 정보 연동, 물리적 환경 연결을 최적화하는 3대 엔지니어링 기법이 필수적으로 수반되어야 합니다.
|
|
||||||
|
|
||||||
- ### 프롬프트 엔지니어링 (Prompt Engineering)
|
|
||||||
에이전트에게 명확한 역할 페르소나와 추론 가이드라인을 설계하고, 효율적인 추론 경로를 유도하기 위해 프롬프트 구조와 예시(Few-shot)를 최적화하는 기법입니다.
|
|
||||||
- **역할 페르소나 설계**: 에이전트가 특정 전문 도메인 지식과 행동 양식을 고수할 수 있도록 페르소나를 규정
|
|
||||||
- **추론 가이드라인 설계**: ReAct와 같은 사고 단계를 정의하여 모델이 계획 단계를 건너뛰지 않고 순차적으로 사고하도록 제어
|
|
||||||
- **Few-shot 최적화**: 최적의 추론 경로 및 응답 포맷 예시를 프롬프트에 제공하여 응답 일관성을 극대화
|
|
||||||
|
|
||||||
- ### 컨텍스트 엔지니어링 (Context Engineering)
|
|
||||||
대화 상태(State)와 흐름을 보존하며, 외부 데이터베이스나 기억(Memory) 장치로부터 필요한 정보를 적시에 모델의 컨텍스트 윈도우에 효율적으로 바인딩하고 공급하는 기술입니다. 단일 에이전트 관점에서는 제한된 컨텍스트 공간 내에서 정보 밀도를 극대화하는 설계가 핵심입니다.
|
|
||||||
- **대화 상태 및 흐름 보존**: 이전 턴의 작업 상태와 대화 맥락을 유실 없이 세션 전반에 유지
|
|
||||||
- **적시 동적 바인딩**: 외부 RAG 검색기나 메모리 캐시로부터 관련성이 가장 높은 데이터만을 선별하여 컨텍스트 윈도우에 결합
|
|
||||||
- **메모리 압축 및 정리**: 불필요한 과거 로그를 요약하거나 중요 상태 구조체 위주로 정제하여 토큰 윈도우 효율성 제고
|
|
||||||
|
|
||||||
- ### 하네스 엔지니어링 (Harness Engineering)
|
|
||||||
에이전트가 계산기, 웹 브라우저, 외부 API 및 파일 시스템 등의 물리적 도구(Tools/Tool Use)에 안전하고 유연하게 연결되어 명령을 실행할 수 있도록 연결 고리를 결합하는 도구 연동 인터페이스 기술입니다.
|
|
||||||
- **물리 인터페이스 결합**: LLM의 도구 호출 의도(Tool Call)를 가로채어 실제 운영체제나 네트워크 상의 실행 스크립트로 전달하고 실행 결과를 모델에 반환
|
|
||||||
- **보안 샌드박싱**: 임의 코드 실행이나 파일 훼손 방지를 위해 파일 시스템 격리 및 API 호출 권한 등의 안전 제어막 형성
|
|
||||||
- **도구 활용 (Tool Use)**: 에이전트가 학습되지 않은 외부 정보에 접근하거나 외부 시스템에 영향을 미치기 위해 계산기, 코드 실행용 샌드박스, 웹 브라우저, 외부 API 등을 주도적으로 호출하는 능력
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
### 1️⃣ 프롬프트 엔지니어링 (Prompt Engineering)
|
||||||
|
|
||||||
|
에이전트가 주체적으로 판단하고 행동의 방향성을 잃지 않도록 역할 페르소나를 설계하고, **ReAct(Reason + Action)**와 같은 단계별 사고 흐름(Thought ➡️ Action ➡️ Observation)을 유도하는 기법입니다.
|
||||||
|
|
||||||
|
* **핵심 설계 요소**:
|
||||||
|
- **페르소나 설계**: 전문 도메인 지식과 행동 양식(예: "너는 주니어 개발자를 코칭하는 꼼꼼한 테크리더 에이전트다") 부여
|
||||||
|
- **추론 가이드라인**: 계획을 건너뛰고 섣부른 답변을 내지 않도록 논리적인 생각 단계를 의도적으로 설정
|
||||||
|
* **실제 프롬프트 구조 예시**:
|
||||||
|
```text
|
||||||
|
[System Prompt]
|
||||||
|
너는 복잡한 수식을 계산하는 수학 에이전트다. 다음 형식으로 사고해라:
|
||||||
|
- Thought: 문제 해결을 위한 다음 행동 계획을 작성해라.
|
||||||
|
- Action: 호출할 도구 이름과 인자값을 JSON으로 적어라. (예: Calculator)
|
||||||
|
- Observation: 도구 실행 결과가 여기에 채워질 것이다.
|
||||||
|
- Thought: 실행 결과를 바탕으로 성찰하고, 필요하면 다음 Action을 설계해라.
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 2️⃣ 컨텍스트 엔지니어링 (Context Engineering)
|
||||||
|
|
||||||
|
에이전트가 다루는 대화 맥락과 작업 상태(State)를 효율적으로 정제하고, 수많은 외부 정보 중 **지금 꼭 필요한 관련 데이터(RAG)**만을 선별하여 제한된 AI의 기억 공간(컨텍스트 윈도우)에 밀도 높게 채워 넣는 기술입니다.
|
||||||
|
|
||||||
|
* **핵심 설계 요소**:
|
||||||
|
- **대화 상태 보존**: 이전 턴의 작업 결과를 유실 없이 보존
|
||||||
|
- **동적 바인딩**: 외부 RAG 검색기에서 관련도 높은 중요 데이터만 적시에 필터링하여 공급
|
||||||
|
- **메모리 압축**: 불필요한 과거 로그는 요약하고, 핵심 현재 상태 구조체만 유지해 토큰 낭비 방지
|
||||||
|
* **에이전트 상태 보존 예시 (State JSON)**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"task_id": "job_10294",
|
||||||
|
"current_working_directory": "/workspace/src",
|
||||||
|
"error_logs": ["SyntaxError: unexpected EOF while parsing at line 14"],
|
||||||
|
"completed_subtasks": ["1. 소스코드 로드 완료", "2. 오류 라인 식별"],
|
||||||
|
"next_action_required": "오류 라인 14의 괄호 닫힘 확인 및 수정 스크립트 작성"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3️⃣ 하네스 엔지니어링 (Harness Engineering)
|
||||||
|
|
||||||
|
에이전트가 파일 시스템 제어, 브라우저 조작, 외부 API 호출 등 컴퓨터 세상의 다양한 도구들을 안전하게 가동할 수 있도록 **물리적 인터페이스(연결 고리)**를 구성하는 기술입니다.
|
||||||
|
|
||||||
|
* **핵심 설계 요소**:
|
||||||
|
- **도구 호출 가로채기(Intercepting)**: 모델이 내놓은 도구 호출 의도(JSON 등)를 감지하고, 실제 터미널이나 프로그램의 함수로 전달해 구동함
|
||||||
|
- **보안 샌드박싱 (Sandboxing)**: 에이전트가 악성 코드나 파괴적인 명령어를 무단 실행하지 않도록 격리된 가상 환경을 구축하고 권한을 통제함
|
||||||
|
* **물리 인터페이스 도구 결합 예시**:
|
||||||
|
```
|
||||||
|
[LLM의 출력] ──> "Action: execute_command, args: { cmd: 'ls -la' }"
|
||||||
|
│ (하네스가 이를 가로챔)
|
||||||
|
▼
|
||||||
|
[하네스 제어기] ──> 격리된 Docker 샌드박스 내부에서 'ls -la' 실제 실행
|
||||||
|
│ (실행 결과 가로챔)
|
||||||
|
▼
|
||||||
|
[LLM의 입력] <── "Observation: total 12\ndrwxr-xr-x 3 user..." (모델에 반환)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|||||||
@@ -0,0 +1,53 @@
|
|||||||
|
# 🎙️ 특강 발표 대본 스크립트 — 1. Engineering
|
||||||
|
|
||||||
|
본 문서는 `1_engineering.md` 슬라이드에 대응하는 발표용 대본 스크립트입니다. 청중의 이해를 돕기 위해 친절한 구어체 존댓말로 작성되었습니다.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🎴 Slide 1: 1장 타이틀 및 개요
|
||||||
|
* **슬라이드 제목**: 1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법
|
||||||
|
* **대본**:
|
||||||
|
> "그럼 이제 본격적으로 1장, **AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법**을 살펴보겠습니다.
|
||||||
|
> 단순히 똑똑한 AI 모델을 가져온다고 해서 알아서 일하는 에이전트가 완성되지는 않습니다.
|
||||||
|
> 모델을 정밀하게 제어하고, 실시간 대화 정보를 관리하며, 실제 물리적 환경에 연결하기 위해 세 가지 엔지니어링 분야가 유기적으로 작동해야 합니다.
|
||||||
|
> 첫 번째는 머리를 세팅하는 **프롬프트 엔지니어링**, 두 번째는 기억을 구성하는 **컨텍스트 엔지니어링**, 세 번째는 실제 손발을 달아주는 **하네스 엔지니어링**입니다.
|
||||||
|
> 각 기법이 구체적으로 어떤 의미를 가졌는지 실제 사례와 함께 짚어보겠습니다."
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 🎴 Slide 2: 1️⃣ 프롬프트 엔지니어링 (Prompt Engineering)
|
||||||
|
* **슬라이드 제목**: 1️⃣ 프롬프트 엔지니어링 (Prompt Engineering)
|
||||||
|
* **대본**:
|
||||||
|
> "첫 번째 기둥인 **프롬프트 엔지니어링**입니다.
|
||||||
|
> 단순히 예쁜 문장으로 질문하는 기술을 넘어서, 에이전트의 역할과 자율적인 문제 해결 사고방식을 규정하는 고도의 기법입니다.
|
||||||
|
> 핵심은 에이전트에게 전문가적 태도를 주입하는 **'페르소나 설계'**와, 논리적이고 순차적으로 생각하게 만드는 **'추론 가이드라인 설계'**입니다.
|
||||||
|
> 슬라이드 아래의 프롬프트 예시를 보시죠. 우리는 모델에게 단순히 '문제를 풀어봐'라고 하지 않습니다.
|
||||||
|
> 대신 'Thought(네 생각을 먼저 적어라) ➡️ Action(네가 호출하고 싶은 실제 도구를 골라라) ➡️ Observation(도구의 실행 결과를 보고 분석해라)'이라는 사고 체계, 즉 ReAct 루프를 템플릿화하여 시스템 프롬프트로 강제합니다.
|
||||||
|
> 이렇게 구조화된 생각의 틀을 제공함으로써, 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대 기술이 완벽히 맞물렸을 때, 비로소 자율형 에이전트가 단독으로 기동할 수 있게 됩니다."
|
||||||
@@ -72,6 +72,9 @@ marp: true
|
|||||||
|
|
||||||
사용자가 최종 목표만 주면 스스로 실행 가능한 단계별 세부 태스크를 설계하고, 진행 과정에서 문제가 생기면 계획을 유연하게 수정하는 능력입니다.
|
사용자가 최종 목표만 주면 스스로 실행 가능한 단계별 세부 태스크를 설계하고, 진행 과정에서 문제가 생기면 계획을 유연하게 수정하는 능력입니다.
|
||||||
|
|
||||||
|
- **Task Decomposition (작업 분해)**: 복잡한 목표를 실행 가능한 작은 단위의 세부 태스크로 분할 (예: Chain of Thought, Tree of Thoughts 등)
|
||||||
|
- **Self-Reflection (자기 성찰 및 피드백)**: 행동 결과를 스스로 분석하고 실수를 교정하여 향후 계획을 실시간으로 수정 (예: ReAct, Reflexion 프레임워크)
|
||||||
|
|
||||||
* **실제 예시**:
|
* **실제 예시**:
|
||||||
에이전트에게 "블로그 기사 작성"을 요청하면, 스스로 **'키워드 조사 ➡️ 개요 작성 ➡️ 본문 집필 ➡️ 오탈자 검사'** 순으로 계획을 세웁니다. 만약 맞춤법 검사 도중 치명적인 논리 오류를 발견하면, 본문 작성 단계로 스스로 되돌아가 계획을 수정하고 다시 쓰는 자가 성찰(Self-Reflection)을 거칩니다.
|
에이전트에게 "블로그 기사 작성"을 요청하면, 스스로 **'키워드 조사 ➡️ 개요 작성 ➡️ 본문 집필 ➡️ 오탈자 검사'** 순으로 계획을 세웁니다. 만약 맞춤법 검사 도중 치명적인 논리 오류를 발견하면, 본문 작성 단계로 스스로 되돌아가 계획을 수정하고 다시 쓰는 자가 성찰(Self-Reflection)을 거칩니다.
|
||||||
|
|
||||||
@@ -81,6 +84,9 @@ marp: true
|
|||||||
|
|
||||||
현재 나누는 대화의 즉각적인 흐름(단기 기억)뿐만 아니라, 과거의 경험과 누적된 지식(장기 기억)을 필요할 때마다 영속적으로 꺼내어 쓰는 능력입니다.
|
현재 나누는 대화의 즉각적인 흐름(단기 기억)뿐만 아니라, 과거의 경험과 누적된 지식(장기 기억)을 필요할 때마다 영속적으로 꺼내어 쓰는 능력입니다.
|
||||||
|
|
||||||
|
- **Short-term Memory (단기 기억)**: 현재 대화나 컨텍스트 윈도우 내에서 실시간으로 유지되는 즉각적인 맥락 정보
|
||||||
|
- **Long-term Memory (장기 기억)**: 외부 데이터베이스나 벡터 DB를 활용하여 과거 대화 기록 및 지식을 RAG 기법으로 바인딩하는 정보 보존 공간
|
||||||
|
|
||||||
* **실제 예시**:
|
* **실제 예시**:
|
||||||
에이전트에게 "어제 작업하던 파이썬 소스코드의 오류를 이어서 수정해줘"라고 요청하는 경우입니다. 에이전트는 데이터베이스에 누적된 과거 대화 히스토리와, 벡터 DB에 저장되어 있는 소스코드의 예전 상태 정보를 동적으로 인출(Retrieval)해 와 대화 맥락을 끊김 없이 이어갑니다.
|
에이전트에게 "어제 작업하던 파이썬 소스코드의 오류를 이어서 수정해줘"라고 요청하는 경우입니다. 에이전트는 데이터베이스에 누적된 과거 대화 히스토리와, 벡터 DB에 저장되어 있는 소스코드의 예전 상태 정보를 동적으로 인출(Retrieval)해 와 대화 맥락을 끊김 없이 이어갑니다.
|
||||||
|
|
||||||
@@ -108,6 +114,8 @@ marp: true
|
|||||||
|
|
||||||
현재 에이전트 기술에서 가장 중요한 변화 중 하나는, 과거에 에이전트 제어 시스템(Scaffolding, 에이전트의 구동을 돕는 외부 뼈대 구조)이 수동으로 제어하던 기능들이 점점 AI 모델 내부로 흡수되고 있는 현상입니다.
|
현재 에이전트 기술에서 가장 중요한 변화 중 하나는, 과거에 에이전트 제어 시스템(Scaffolding, 에이전트의 구동을 돕는 외부 뼈대 구조)이 수동으로 제어하던 기능들이 점점 AI 모델 내부로 흡수되고 있는 현상입니다.
|
||||||
|
|
||||||
|
- https://arca.live/b/characterai/174977057?category=%EB%89%B4%EC%8A%A42&p=1
|
||||||
|
|
||||||
- **스스로 생각하는 모델의 등장 (Test-time Compute, 추론 시점 추가 연산)**
|
- **스스로 생각하는 모델의 등장 (Test-time Compute, 추론 시점 추가 연산)**
|
||||||
최근 출시된 Gemini Thinking이나 OpenAI o1/o3 같은 모델들은 외부 시스템이 루프를 돌려주지 않아도, 모델 스스로 출력을 내보내기 전에 내부적으로 계획을 세우고(Planning) 스스로 오류를 성찰(Reflection)하는 과정을 완료합니다.
|
최근 출시된 Gemini Thinking이나 OpenAI o1/o3 같은 모델들은 외부 시스템이 루프를 돌려주지 않아도, 모델 스스로 출력을 내보내기 전에 내부적으로 계획을 세우고(Planning) 스스로 오류를 성찰(Reflection)하는 과정을 완료합니다.
|
||||||
- **인지와 집행의 명확한 역할 분담**
|
- **인지와 집행의 명확한 역할 분담**
|
||||||
@@ -119,41 +127,73 @@ marp: true
|
|||||||
|
|
||||||
# 1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법
|
# 1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법
|
||||||
|
|
||||||
## AI 모델(LLM) vs AI 에이전트
|
성공적인 AI 에이전트 시스템을 구현하기 위해서는 단순히 모델에게 프롬프트를 입력하는 것을 넘어, **모델 제어**, **정보 연동**, **물리적 환경 연결**을 유기적으로 엮어내는 3가지 핵심 엔지니어링 기법이 필요합니다.
|
||||||
AI 에이전트(AI Agent)는 단순히 사용자의 텍스트 입력을 받아 응답을 생성하는 대화형 인터페이스(Chatbot)를 넘어, 주어진 최종 목표(Goal)를 자율적으로 달성하기 위해 환경을 인식(Perceive)하고, 스스로 계획(Planning) 및 추론(Reasoning)하며, 도구를 사용해 물리적/디지털적 행동(Action)을 수행하는 LLM 기반 소프트웨어 시스템입니다.
|
|
||||||
|
|
||||||
LLM 기반 에이전트 시스템 아키텍처는 크게 다음 3가지 핵심 요소로 구성됩니다:
|
1. **프롬프트 엔지니어링 (Prompt Engineering)**: 에이전트의 페르소나와 사고 방식(추론 가이드라인)을 규정하는 작업입니다.
|
||||||
1. **Planning (계획 및 추론)**
|
2. **컨텍스트 엔지니어링 (Context Engineering)**: 대화 흐름을 끊김 없이 보존하고 관련 데이터를 적시에 제공하는 정보 정리 작업입니다.
|
||||||
- **Task Decomposition (작업 분해)**: 복잡한 목표를 실행 가능한 작은 단위의 세부 태스크로 분할 (예: Chain of Thought, Tree of Thoughts 등)
|
3. **하네스 엔지니어링 (Harness Engineering)**: 격리된 환경에서 다양한 소프트웨어 도구를 안전하게 조작할 수 있는 물리적 손발을 달아주는 작업입니다.
|
||||||
- **Self-Reflection (자기 성찰 및 피드백)**: 행동 결과를 스스로 분석하고 실수를 교정하여 향후 계획을 실시간으로 수정 (예: ReAct, Reflexion 프레임워크)
|
|
||||||
2. **Memory (기억 장치)**
|
|
||||||
- **Short-term Memory (단기 기억)**: 현재 대화나 컨텍스트 윈도우 내에서 실시간으로 유지되는 즉각적인 맥락 정보
|
|
||||||
- **Long-term Memory (장기 기억)**: 외부 데이터베이스나 벡터 DB를 활용하여 과거 대화 기록 및 지식을 RAG 기법으로 바인딩하는 정보 보존 공간
|
|
||||||
|
|
||||||
- https://arca.live/b/characterai/174977057?category=%EB%89%B4%EC%8A%A42&p=1
|
---
|
||||||
|
|
||||||
## 3대 핵심 엔지니어링 기법
|
### 1️⃣ 프롬프트 엔지니어링 (Prompt Engineering)
|
||||||
성공적인 AI 에이전트 구현을 위해서는 모델 제어, 정보 연동, 물리적 환경 연결을 최적화하는 3대 엔지니어링 기법이 필수적으로 수반되어야 합니다.
|
|
||||||
|
|
||||||
- ### 프롬프트 엔지니어링 (Prompt Engineering)
|
에이전트가 주체적으로 판단하고 행동의 방향성을 잃지 않도록 역할 페르소나를 설계하고, **ReAct(Reason + Action)**와 같은 단계별 사고 흐름(Thought ➡️ Action ➡️ Observation)을 유도하는 기법입니다.
|
||||||
에이전트에게 명확한 역할 페르소나와 추론 가이드라인을 설계하고, 효율적인 추론 경로를 유도하기 위해 프롬프트 구조와 예시(Few-shot)를 최적화하는 기법입니다.
|
|
||||||
- **역할 페르소나 설계**: 에이전트가 특정 전문 도메인 지식과 행동 양식을 고수할 수 있도록 페르소나를 규정
|
|
||||||
- **추론 가이드라인 설계**: ReAct와 같은 사고 단계를 정의하여 모델이 계획 단계를 건너뛰지 않고 순차적으로 사고하도록 제어
|
|
||||||
- **Few-shot 최적화**: 최적의 추론 경로 및 응답 포맷 예시를 프롬프트에 제공하여 응답 일관성을 극대화
|
|
||||||
|
|
||||||
- ### 컨텍스트 엔지니어링 (Context Engineering)
|
* **핵심 설계 요소**:
|
||||||
대화 상태(State)와 흐름을 보존하며, 외부 데이터베이스나 기억(Memory) 장치로부터 필요한 정보를 적시에 모델의 컨텍스트 윈도우에 효율적으로 바인딩하고 공급하는 기술입니다. 단일 에이전트 관점에서는 제한된 컨텍스트 공간 내에서 정보 밀도를 극대화하는 설계가 핵심입니다.
|
- **페르소나 설계**: 전문 도메인 지식과 행동 양식(예: "너는 주니어 개발자를 코칭하는 꼼꼼한 테크리더 에이전트다") 부여
|
||||||
- **대화 상태 및 흐름 보존**: 이전 턴의 작업 상태와 대화 맥락을 유실 없이 세션 전반에 유지
|
- **추론 가이드라인**: 계획을 건너뛰고 섣부른 답변을 내지 않도록 논리적인 생각 단계를 의도적으로 설정
|
||||||
- **적시 동적 바인딩**: 외부 RAG 검색기나 메모리 캐시로부터 관련성이 가장 높은 데이터만을 선별하여 컨텍스트 윈도우에 결합
|
* **실제 프롬프트 구조 예시**:
|
||||||
- **메모리 압축 및 정리**: 불필요한 과거 로그를 요약하거나 중요 상태 구조체 위주로 정제하여 토큰 윈도우 효율성 제고
|
```text
|
||||||
|
[System Prompt]
|
||||||
|
너는 복잡한 수식을 계산하는 수학 에이전트다. 다음 형식으로 사고해라:
|
||||||
|
- Thought: 문제 해결을 위한 다음 행동 계획을 작성해라.
|
||||||
|
- Action: 호출할 도구 이름과 인자값을 JSON으로 적어라. (예: Calculator)
|
||||||
|
- Observation: 도구 실행 결과가 여기에 채워질 것이다.
|
||||||
|
- Thought: 실행 결과를 바탕으로 성찰하고, 필요하면 다음 Action을 설계해라.
|
||||||
|
```
|
||||||
|
|
||||||
- ### 하네스 엔지니어링 (Harness Engineering)
|
---
|
||||||
에이전트가 계산기, 웹 브라우저, 외부 API 및 파일 시스템 등의 물리적 도구(Tools/Tool Use)에 안전하고 유연하게 연결되어 명령을 실행할 수 있도록 연결 고리를 결합하는 도구 연동 인터페이스 기술입니다.
|
|
||||||
- **물리 인터페이스 결합**: LLM의 도구 호출 의도(Tool Call)를 가로채어 실제 운영체제나 네트워크 상의 실행 스크립트로 전달하고 실행 결과를 모델에 반환
|
|
||||||
- **보안 샌드박싱**: 임의 코드 실행이나 파일 훼손 방지를 위해 파일 시스템 격리 및 API 호출 권한 등의 안전 제어막 형성
|
|
||||||
- **도구 활용 (Tool Use)**: 에이전트가 학습되지 않은 외부 정보에 접근하거나 외부 시스템에 영향을 미치기 위해 계산기, 코드 실행용 샌드박스, 웹 브라우저, 외부 API 등을 주도적으로 호출하는 능력
|
|
||||||
|
|
||||||

|
### 2️⃣ 컨텍스트 엔지니어링 (Context Engineering)
|
||||||
|
|
||||||
|
에이전트가 다루는 대화 맥락과 작업 상태(State)를 효율적으로 정제하고, 수많은 외부 정보 중 **지금 꼭 필요한 관련 데이터(RAG)**만을 선별하여 제한된 AI의 기억 공간(컨텍스트 윈도우)에 밀도 높게 채워 넣는 기술입니다.
|
||||||
|
|
||||||
|
* **핵심 설계 요소**:
|
||||||
|
- **대화 상태 보존**: 이전 턴의 작업 결과를 유실 없이 보존
|
||||||
|
- **동적 바인딩**: 외부 RAG 검색기에서 관련도 높은 중요 데이터만 적시에 필터링하여 공급
|
||||||
|
- **메모리 압축**: 불필요한 과거 로그는 요약하고, 핵심 현재 상태 구조체만 유지해 토큰 낭비 방지
|
||||||
|
* **에이전트 상태 보존 예시 (State JSON)**:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"task_id": "job_10294",
|
||||||
|
"current_working_directory": "/workspace/src",
|
||||||
|
"error_logs": ["SyntaxError: unexpected EOF while parsing at line 14"],
|
||||||
|
"completed_subtasks": ["1. 소스코드 로드 완료", "2. 오류 라인 식별"],
|
||||||
|
"next_action_required": "오류 라인 14의 괄호 닫힘 확인 및 수정 스크립트 작성"
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
### 3️⃣ 하네스 엔지니어링 (Harness Engineering)
|
||||||
|
|
||||||
|
에이전트가 파일 시스템 제어, 브라우저 조작, 외부 API 호출 등 컴퓨터 세상의 다양한 도구들을 안전하게 가동할 수 있도록 **물리적 인터페이스(연결 고리)**를 구성하는 기술입니다.
|
||||||
|
|
||||||
|
* **핵심 설계 요소**:
|
||||||
|
- **도구 호출 가로채기(Intercepting)**: 모델이 내놓은 도구 호출 의도(JSON 등)를 감지하고, 실제 터미널이나 프로그램의 함수로 전달해 구동함
|
||||||
|
- **보안 샌드박싱 (Sandboxing)**: 에이전트가 악성 코드나 파괴적인 명령어를 무단 실행하지 않도록 격리된 가상 환경을 구축하고 권한을 통제함
|
||||||
|
* **물리 인터페이스 도구 결합 예시**:
|
||||||
|
```
|
||||||
|
[LLM의 출력] ──> "Action: execute_command, args: { cmd: 'ls -la' }"
|
||||||
|
│ (하네스가 이를 가로챔)
|
||||||
|
▼
|
||||||
|
[하네스 제어기] ──> 격리된 Docker 샌드박스 내부에서 'ls -la' 실제 실행
|
||||||
|
│ (실행 결과 가로챔)
|
||||||
|
▼
|
||||||
|
[LLM의 입력] <── "Observation: total 12\ndrwxr-xr-x 3 user..." (모델에 반환)
|
||||||
|
```
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user