C.W.K.
Stream
Lesson 01 of 05 · published

챗봇 vs 에이전트: 텍스트 엔진인가, 행동 시스템인가

~22 min · agent-loop, autonomy, tools

Level 0Observer
0 XP0/40 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

차이는 행동이야

챗봇은 대답해. 에이전트는 상태를 바꿔. 그 상태는 파일일 수도 있고, 티켓일 수도 있고, DB row, 브라우저 화면, 큐에 들어간 작업, 혹은 여러 턴을 버티는 계획일 수도 있어. 모형은 여전히 토큰을 만들지만, 바깥 시스템이 그 토큰 중 일부를 실제 행동으로 바꾸는 거야.

그래서 에이전트는 어떤 모형을 쓰느냐로 정의되지 않아. Claude든 GPT든 Gemini든 로컬 모델이든 같은 agent loop 뒤에 앉힐 수 있어. 핵심은 구조야. 관찰하고, 다음 행동을 정하고, 도구로 실행하고, 결과를 다시 관찰하고, 멈출 조건이 나올 때까지 반복한다.

최소 계약

  • 목표: 에이전트가 끝내야 하는 결과.
  • 모형: 다음 행동을 고르는 추론 엔진.
  • 도구: 바깥 세계를 건드릴 수 있는 함수나 hosted capability.
  • 상태: 대화, scratchpad, memory, run metadata.
  • 정책: 제한, 권한, 승인 규칙, 종료 조건.

이 중 하나라도 빠지면 그건 에이전트라기보다 멋진 프롬프트야. 요즘 뭐든 agent라고 부르는 마케팅이 문제지. 이름 믿지 말고 루프를 봐야 해.

Agency는 제한된 자율성

좋은 에이전트는 무한 자유가 아니라 경계 안의 자율성이야. 무엇을 볼 수 있는지, 어떤 도구를 부를 수 있는지, 얼마까지 쓸 수 있는지, 얼마나 오래 돌 수 있는지, 언제 사람에게 물어야 하는지를 우리가 정한다.

그 경계가 곧 제품이야. 메일을 실제로 보내는 위험한 에이전트와 초안만 작성하는 안전한 에이전트는 같은 모형과 프롬프트를 써도, send tool 주변의 권한층 하나로 완전히 다른 물건이 된다.

Code

제공자 중립 agent loop·python
def run_agent(task, model, tools, max_steps=12):
    state = [{"role": "user", "content": task}]

    for step in range(max_steps):
        response = model.call(messages=state, tools=tools.definitions())

        if response.final_answer:
            return response.final_answer

        for call in response.tool_calls:
            result = tools.execute(call.name, call.arguments)
            state.append({"role": "assistant", "content": call})
            state.append({"role": "tool", "content": result})

    raise RuntimeError("Agent stopped: max_steps reached")

External links

Exercise

실제로 갖고 싶은 에이전트 하나를 한 문단으로 설계해봐. 목표, 도구, 상태, 정책, 종료 조건을 전부 적어.
Hint
정책 항목이 비어 있으면, 그건 제품이 아니라 데모일 가능성이 커. 응, 여기서 많이들 미끄러져.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.