본문 바로가기
C.W.K.
Lesson 03 of 05 · published

준비된 호출만 실행 권한이야

~12 min · tools, schema, execution

Level 0차가운 막대
0 XP0/41 lessons0/14 achievements
0/100 XP to next level100 XP to go0% complete

적어 두고 안 지키던 조항

아키텍처는 처음부터 말했지. 블록이 닫히고, 인자가 파싱되고, 그 요청이 광고한 스키마를 통과하고, 정책이 결정하고, tool_call 줄이 플러시됐을 때만 실행해. 한동안 그 스키마 조항은 산문이었어. 필수 내용 없는 쓰기가 빈 파일을 만들고 성공을 보고했어. 루프가 소원을 실행한 거야.

지금은 그 요청이 광고한 스키마에 대해 JSON Schema 검사기 하나가 입장에서 돌아. 내장 도구든 MCP 도구든. 루프는 여전히 도구가 뭔지 안 배워. 실패는 이유 schema인 잘못된 호출을 적고, 굳은 tool_call은 없고, 모형이 읽을 교정을 남겨. 모르는 스키마 어휘는 무시해. 입장 제어지 린터가 아니야. MCP 서버는 아무 스키마나 실어. 모든 키워드를 안다고 구는 게이트는 거절을 지어내기 시작해.

정책은 결정이지 분위기가 아니야

허용은 실행해. 거절은 에러 결과를 돌려. 물음은 운영자에게 선택지를 주고 권한으로 기록해. 기본 실행은 순차라 기록이 결정론을 지켜. 프로필은 읽기 전용으로 선언된 도구를 병렬로 돌릴 수 있어. 결과는 실행 순서가 달라도 모형이 부른 순서로 투영해. 거절된 결과는 안 버려. 빠진 자리 결과는 모형의 짝을 밀어.

실행기는 기록이 준 일련번호를 받거나, 아무것도 안 받아. 라이브 스트림에서 실행으로 가는 길은 없어. 플러시가 예외를 던지면 도구는 안 돌았어. 희망이 아니라 시험된 문장이야.

사고 뒤에는 많아야 한 번

부작용 있는 호출은 많아야 한 번이야. 결과 없이 발견된 tool_call은 미해결 의도가 되고, 합성 에러로 접히고, 자동으로 다시 안 돌아. 다시 돌리는 건 엔진이 떠난 세상이 그대로라고 결정하는 거야. 운영자는 재시도해도 돼. 루프는 안 돼.

Code

입장은 게이트지 성격이 아니야·python
def admit(call, advertised_schema):
    if not call.complete:
        return "truncated"
    args = parse_json(call.arguments)  # {} is valid JSON
    if args is None:
        return "unparseable"
    if not validate(args, advertised_schema):
        return "schema"
    return "ready"
# execute takes the record seq after policy and fsync,
# not this string.

External links

Exercise

빠진 인자를 빈 기본값으로 받는 도구 핸들러를 하나 찾아. 필수 필드 없이 한 번 호출해. 성공을 돌려주면 이 레슨이 이름 붙인 바로 그 결함이야. 대신 적었어야 할 입장 에러를 써.
Hint
필수 필드는 대개 content, path, query야. 그 도구가 받으려고 존재하는 명사.

Progress

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

댓글 0

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

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