본문 바로가기
C.W.K.
Stream
Lesson 07 of 10 · published

상태 없는 모델과 상태를 가진 도구

~16 min · conversation, tools, state

Level 0수련생
0 XP0/100 lessons0/14 achievements
0/120 XP to next level120 XP to go0% complete

모델에는 상태가 없고 도구에는 있어

모델은 한 메시지에서 다음 메시지를 만드는 함수야. 현재 초안, 덜 채운 양식, 진행 중인 주문 같은 상태는 바깥에 살고 도구로 접근해야 해. 상태 없는 모델과 상태를 가진 환경을 나누는 것이 에이전트 설계의 핵심이야.

상태를 가진 도구의 세 가지 모양

  • 초안create_draft, update_draft, send_draft를 쓰면 매 차례 초안 전체를 다시 넣지 않아도 고칠 수 있어.
  • 세션start_session, step_session, finish_session으로 수명을 관리하고 세션 ID를 손잡이로 써.
  • 장바구니와 양식 — 객체가 자체 수명 주기를 가지고 도구가 값을 바꾸며 모델은 ID로 찾아가.

상태 전체를 맥락에 넣는 것보다 나은 까닭

  • 맥락이 작아져 비용이 낮고 응답이 빨라.
  • 도구 호출이 곧 변경 내역이므로 감사할 수 있어.
  • 대화를 닫았다 돌아와도 같은 ID로 이어갈 수 있어.
  • 두 에이전트가 같은 상태의 다른 부분을 동시에 다룰 수 있어.

Code

상태를 가진 초안 도구·python
@tool
def create_draft(subject: str) -> dict:
    return {"draft_id": db.drafts.create(subject)}

@tool
def update_draft(draft_id: str, body: str) -> dict:
    db.drafts.update(draft_id, body=body)
    return {"draft_id": draft_id, "status": "updated"}

@tool
def send_draft(draft_id: str) -> dict:
    return db.drafts.send(draft_id)

External links

Exercise

매 차례 객체 상태 전체를 다시 넣는 에이전트를 골라 상태를 create, update, get 도구로 옮겨봐. 맥락 크기와 비용이 얼마나 달라지는지 재.

Progress

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

댓글 0

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

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