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

순도 게이트 — 품질 말고 출처를 확인해

~12 min · verification, llm, agents, evidence

Level 0미분류
0 XP0/36 lessons0/12 achievements
0/100 XP to next level100 XP to go0% complete

자신 있는 출력은 작업의 증거가 아냐

지금 어떤 주제에 대해 사람들이 뭐라 하는지 모형한테 물어봐. 답할 거야. 검색을 했든 안 했든 답할 거고, 두 답은 똑같이 유창하고, 똑같이 구체적이고, 똑같이 구조가 잡혀 있어. 산문을 읽어선 어느 쪽을 받았는지 알 수 없고.

자동화 파이프라인을 생성된 답에 근거 지을 때의 문제 전부가 그거야. 실패 양상은 쓰레기 출력이 아냐. 쓰레기면 쉽지. 잘 짜이고 그럴듯한 답이 전적으로 사전 지식에서 나와서, 몇 달 지난 세상 상태를 서술하는 거야.

진짜 경로만 만들 수 있는 걸 요구해

게이트는 모형이 지어내서 통과할 수 없는 산물을 요구하는 거야. 여기선 인용이지. 샘플링 대상 플랫폼의 글로 가는 링크 최소 하나, 그 플랫폼의 실제 호스트명으로. 돌아간 검색은 자연스럽게 그걸 만들어. 글을 봤으니까. 기억으로 답하는 모형은 가리킬 진짜가 없고.

게이트가 일부러 하는 걸 짚어둘게. 읽기가 통찰력 있는지, 온도가 맞는지, 요약이 잘 쓰였는지 판단 안 해. 품질은 기계적으로 확인 불가능하고, 확인하려는 시도는 더 나쁜 계기를 낳아. 출처는 확인 가능하고, 진짜 샘플이랑 지어낸 걸 실제로 가르는 성질이 그거야.

실패는 시끄럽게 저장해

게이트를 못 통과한 카드는 조용히 버려지지 않아. 날 텍스트랑 같이 저장되고 실패로 표시돼. 이유 둘. 진단상, 거절된 출력이 실행이 왜 안 됐는지에 대한 유일한 증거야. 인용을 안 내기 시작한 프롬프트는 뭔가를 말해주고 있고, 증거를 지우는 건 신호를 지우는 거지. 운영상, 조용히 아무것도 안 내는 샘플러는 조용한 날이랑 똑같아 보이고.

같은 논리가 파싱도 덮어. 응답이 구조화돼야 하는데 살짝 아니면, 관대하게 파싱하고, 건질 수 있는 걸 건지고, 버리는 대신 행을 표시해.

프롬프트가 강제하는 게 아냐

지시문이 인용을 요청하긴 하고, 요청하는 게 도움도 돼. 근데 지시문은 요청이고 게이트는 검사야. 하중을 지는 건 하나뿐이고. 앞 강의의 신뢰 못 할 입력 절이랑 같은 구별이지. 모형한테 어떤 성질을 요청할 수 있고 해야 해. 근데 그 성질이 중요하면 모형 밖의 뭔가가 확인해야 해.

게이트를 가졌는지 희망을 가졌는지 보는 시험은 단순해. 모형이 지시문을 통째로 무시했으면 뭐라도 알아챘을까?

출처는 기계적으로 확인하고, 품질은 사람한테 맡겨. 답이 좋은지 판단하려는 게이트는 양방향으로 틀리고 자기 신뢰를 갉아먹어. "이거 주장하는 데서 왔어?"만 묻는 게이트는 싸고, 정확하고, 진짜 중요한 실패를 잡아.

Code

출처에 거는 게이트, 그리고 버리지 않고 저장하는 실패·python
_X_HOSTS = {"x.com", "www.x.com", "twitter.com",
            "www.twitter.com", "mobile.twitter.com"}


def extract_card(raw: str) -> dict:
    """Parse a sampled trend card and gate it on PROVENANCE.

    A model asked about current sentiment answers confidently whether
    or not it searched, and the two answers read identically. A real
    link to a real post is the one thing the search path produces and
    prior knowledge cannot.
    """
    card = _parse_tolerantly(raw)       # keep what we can
    if card is None:
        # Never silently dropped: the raw text is the only evidence of
        # why the run failed, and a sampler producing nothing looks
        # exactly like a quiet day.
        return {"status": "unparsed", "raw": raw}

    cited = [
        p for p in card.get("posts", [])
        if urlsplit(p.get("url", "")).netloc.lower() in _X_HOSTS
    ]
    if not cited:
        return {"status": "no_citation", "raw": raw, "card": card}

    # The gate judges PROVENANCE only. Whether the read is insightful,
    # whether the temperature is right, whether the prose is good --
    # none of that is mechanically checkable, and an instrument that
    # tries is worse than one that does not.
    card["posts"] = cited
    card["status"] = "ok"
    return card

External links

Exercise

네 시스템에서 모형한테 구조적 성질을 요청하는 프롬프트를 골라. 출처를 인용해라, JSON 으로 돌려줘라, 길이를 넘지 마라, 준 사실만 써라. 모형이 그걸 무시하면 실패할 검사를 써서, 그 검사를 켠 채로 일주일 파이프라인을 돌려. 몇 번 발동하는지 세보고.
Hint
얌전한 모형이어도 0 이 아닐 거야. 인용이랑 길이 절은 특히. 그 비율이 네가 조용히 받아들여온 숫자고, 개별 거절보다 그걸 아는 게 값져. 그 성질이 애초에 지켜지고 있긴 했는지 말해주니까.

Progress

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

댓글 0

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

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