Files

5.2 KiB

marp
marp
true

1. AI 에이전트 구현을 위한 3대 핵심 엔지니어링 기법

성공적인 AI 에이전트 시스템을 구현하기 위해서는 단순히 모델에게 프롬프트를 입력하는 것을 넘어, 모델 제어, 정보 연동, 물리적 환경 연결을 유기적으로 엮어내는 3가지 핵심 엔지니어링 기법이 필요합니다.

  1. 프롬프트 엔지니어링 (Prompt Engineering): 에이전트의 페르소나와 사고 방식(추론 가이드라인)을 규정하는 작업입니다.
  2. 컨텍스트 엔지니어링 (Context Engineering): 대화 흐름을 끊김 없이 보존하고 관련 데이터를 적시에 제공하는 정보 정리 작업입니다.
  3. 하네스 엔지니어링 (Harness Engineering): 격리된 환경에서 다양한 소프트웨어 도구를 안전하게 조작할 수 있는 물리적 손발을 달아주는 작업입니다.

1️⃣ 프롬프트 엔지니어링 (Prompt Engineering)

모델의 발전과 자체 추론 기능의 향상으로 예전만큼 미시적인 프롬프트 트릭에 집착할 필요는 줄어들고 있습니다. 하지만 프롬프트는 여전히 AI 에이전트 활용의 시작점이자 뼈대입니다. 구체적이고 명확한 작동 지침을 만들기 위해 프롬프트 작성 시 반드시 반영해야 할 3대 핵심 고려사항입니다.

  • 역할 및 페르소나 지시 (Role) 에이전트에게 전문 도메인 지식과 행동 경계를 지정해 줍니다. (예: "너는 주니어 개발자를 코칭하는 꼼꼼한 테크리더 에이전트다. 직접 고치지 말고 가이드라인만 제공해라.")
  • 구체적인 작업 예시 제공 (Few-shot) 원하는 출력 형식이나 중간 추론 과정의 모범 예시를 제공하여, 에이전트의 답변 일관성과 가독성을 극대화합니다.
  • 자가 검증 방법 제시 (Verification) 에이전트 스스로 작업의 무결성을 점검하게 하거나, 외부 시스템이 실행 결과를 확인 및 통제할 수 있도록 정형화된 출력 규격(예: 최종 통과 시 [VERDICT: PASS] 명시 요구)을 정의해 줍니다.

💡 실제 프롬프트 구조 예시 (ReAct 사고 방식)

에이전트가 단번에 대답하지 않고 단계별로 계획을 세워 도구를 사용하도록 프롬프트 구조를 강제하는 기법입니다.

[System Prompt]
너는 복잡한 수식을 계산하는 수학 에이전트다. 다음 형식으로 사고해라:
- Thought: 문제 해결을 위한 다음 행동 계획을 작성해라.
- Action: 호출할 도구 이름과 인자값을 JSON으로 적어라. (예: Calculator)
- Observation: 도구 실행 결과가 여기에 채워질 것이다.
- Thought: 실행 결과를 바탕으로 성찰하고, 필요하면 다음 Action을 설계해라.

2️⃣ 컨텍스트 엔지니어링 (Context Engineering)

에이전트가 다루는 대화 맥락과 작업 상태(State)를 효율적으로 정제하고, 수많은 외부 정보 중 **지금 꼭 필요한 관련 데이터(RAG)**만을 선별하여 제한된 AI의 기억 공간(컨텍스트 윈도우)에 밀도 높게 채워 넣는 기술입니다.

  • 핵심 설계 요소:
    • 대화 상태 보존: 이전 턴의 작업 결과를 유실 없이 보존
    • 동적 바인딩: 외부 RAG 검색기에서 관련도 높은 중요 데이터만 적시에 필터링하여 공급
    • 메모리 압축: 불필요한 과거 로그는 요약하고, 핵심 현재 상태 구조체만 유지해 토큰 낭비 방지
  • 에이전트 상태 보존 예시 (State 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..." (모델에 반환)
    

    Harness Diagram