핵심 요약
Gemma 4 기반의 에이전트가 로컬 파일 시스템 탐색과 파이썬 코드 실행을 스스로 수행하는 도구 호출 시스템을 구현한다. 모델은 사용자 질문에 따라 필요한 도구를 선택하고, 실행 결과를 바탕으로 최종 답변을 생성하는 2단계 루프를 거친다. 파일 시스템 접근 시 경로 탐색을 차단하고, 파이썬 실행 시 내장 함수를 화이트리스트로 제한하여 보안을 확보한다. 로컬 환경에서 실행 가능한 소형 모델로도 복잡한 에이전트 작업을 안정적으로 처리할 수 있음을 확인했다.
배경
Python 기초 지식, Ollama 환경 설정, 기본적인 LLM 도구 호출 개념
대상 독자
로컬 LLM 에이전트 구축에 관심 있는 개발자
의미 / 영향
이 방식은 외부 API 의존 없이 로컬 환경에서 안전하게 동작하는 에이전트를 구축할 수 있게 한다. 보안이 강화된 도구 호출 패턴은 소형 모델의 활용 범위를 단순 챗봇에서 실질적인 시스템 제어 에이전트로 확장한다.
섹션별 상세

SAFE_BASE_DIR = os.path.abspath(os.getcwd())
def list_directory_contents(path: str = ".") -> str:
try:
requested = os.path.abspath(os.path.join(SAFE_BASE_DIR, path))
if not (requested == SAFE_BASE_DIR or requested.startswith(SAFE_BASE_DIR + os.sep)):
return ( f"Error: Access denied. The path '{path}' resolves outside the " f"permitted workspace ({SAFE_BASE_DIR})." )파일 시스템 탐색 시 경로 탐색 공격을 방지하기 위해 절대 경로를 확인하고 작업 공간 외부 접근을 차단하는 로직
safe_builtins = {
"abs": abs, "all": all, "any": any, "bool": bool, "dict": dict, "divmod": divmod, "enumerate": enumerate, "filter": filter, "float": float, "int": int, "len": len, "list": list, "map": map, "max": max, "min": min, "pow": pow, "print": print, "range": range, "repr": repr, "reversed": reversed, "round": round, "set": set, "sorted": sorted, "str": str, "sum": sum, "tuple": tuple, "zip": zip,
}
restricted_globals = {
"__builtins__": safe_builtins,
"math": math,
"statistics": statistics,
}파이썬 인터프리터 도구에서 위험한 내장 함수 접근을 막기 위해 화이트리스트 기반으로 환경을 제한하는 설정
실무 Takeaway
- 시스템 프롬프트와 도구 정의를 통해 모델이 환경을 스스로 관찰하고 필요한 도구를 선택하도록 유도할 수 있다.
- 로컬 파일 시스템이나 코드 실행 도구 구현 시, 경로 검증과 내장 함수 화이트리스트 적용은 필수적인 보안 계층이다.
- 2단계 오케스트레이션 루프를 활용하면 소형 모델도 복잡한 추론과 도구 호출을 안정적으로 결합할 수 있다.
AI 요약 · 북마크 · 개인 피드 설정 — 무료
출처 · 인용 안내
인용 시 "요약 출처: AI Trends (aitrends.kr)"를 표기하고, 사실 확인은 원문 보기 기준으로 진행해 주세요. 자세한 기준은 운영 정책을 참고해 주세요.