Microsoft AutoGen 에이전트의 인간 승인 절차 구현
요약
AutoGen 에이전트가 생성하는 셸 명령의 위험성을 줄이기 위해 인간 승인 게이트(Human Approval Gate) 구현 방법을 설명합니다. 기본 실행기를 비활성화하고, 특정 함수를 통해만 코드를 실행하도록 제한하여 잘못된 명령어 실행을 방지할 수 있습니다.
핵심 포인트
- AutoGen의 기본 설정은 코드 생성 즉시 실행되므로 위험할 수 있습니다.
- 내장 실행기(built-in executor)를 끄고, 승인 절차를 거치는 전용 함수만 등록해야 합니다.
- API 설계 시 `idempotent: false`와 `undo` 필드를 활용하여 명령어의 위험성을 명확히 표시하는 것이 중요합니다.
AutoGen 에이전트는 자신이 작성한 셸 명령을 스스로 실행할 수 있습니다. 따라서 사용자가 '예'라고 말하기 전까지는 아무것도 실제 서버에 영향을 미치지 않도록 인간의 승인 게이트를 추가해야 합니다.
AutoGen은 기본적으로 코드를 실행합니다
AutoGen의 UserProxyAgent는 어시스턴트 에이전트가 작성하는 모든 코드를 실행하도록 설계되었습니다. 이것이 바로 AutoGen이 대중화한 패턴의 핵심입니다. 이를 LocalCommandLineCodeExecutor(또는 이전의 code_execution_config 딕셔너리)에 연결하면, 어시스턴트가 해당 블록을 생성하는 즉시 파이썬 또는 셸 코드가 실행되며 그 사이에 멈춤이 없습니다.
이는 샌드박스 환경에서는 괜찮습니다. 하지만 이 실행기가 데이터베이스, 프로덕션 서버 또는 결제 API에 실제 경로를 갖게 되면 상황은 달라집니다. 환각(hallucinated)으로 생성된 DROP TABLE이나 잘못된 플래그가 포함된 셸 원라인 명령어는 정확한 명령만큼 빠르게 실행됩니다.
AutoGen은 채팅을 일시 중지하고 터미널에서 입력을 요청하는 `human_input_mode=
UserProxyAgent에서 AutoGen의 내장 실행기(built-in executor)를 완전히 비활성화하고, 이 게이티드 함수(gated function)만을 유일한 실행 방법으로 등록합니다:
from autogen import ConversableAgent, UserProxyAgent, register_function
assistant = ConversableAgent(
...
code_execution_config=False를 사용하면 어시스턴트가 채팅 기록에 작성하는 코드 블록은 비활성 텍스트(inert text)가 됩니다. 남겨진 유일한 실행 경로는 propose_and_run_shell이며, 이는 정확히 Impri를 먼저 거치는 함수입니다.
위험한 명령어의 정직한 표시
POST /v1/actions의 선택적 필드 중 두 가지는 바로 이러한 시나리오를 위해 존재합니다. idempotent: false는 검토자에게 동일한 명령어를 두 번 승인하는 것이 안전하지 않다는 것을 알려주며, 인박스 카드에는 침묵을 지키기보다는 경고 배지(warning badge)가 표시됩니다. undo는 만약 잘못된 것으로 판명될 경우 변경 사항을 되돌리는 방법을 평이한 언어(plain-English note)로 적은 것이며, 깔끔하게 취소할 수 없는 명령어의 경우 필드를 비워두는 것보다
먼저 actions 스코프를 가진 API 키의 빠른 시작 가이드(quickstart)부터 시작하고, 전체 제안 → 승인 → 실행 계약 과정을 읽으려면 AI 에이전트에 인간 승인 추가 방법(how to add human approval to an AI agent)을 참고하고, 프로토타입 단계를 넘어설 때는 원시 requests 호출 대신 Python SDK를 사용하는 것이 좋습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기