← 강의 페이지 화학공학을 위한 AI 3 / 15

3장 LLM은 어떻게 틀리는가

이번 주의 도구: ② 플래시카드 생성기

다음 상황을 그려 보자. 화공양론 쪽지시험을 사흘 앞두고, 지난주에 만든 강의노트 정리기로 정리해 둔 위키 노트를 AI에게 넘기며 부탁한다. "이 노트로 암기 카드를 만들어 줘." 30초 만에 카드 40장이 왔다. 문장은 매끄럽고, 표는 반듯하고, 숫자에는 단위까지 붙어 있다.

그중 한 장의 뒷면에 이렇게 적혀 있었다. "물의 임계온도는 350 °C이다." 카드를 며칠 외운 학생은 시험에서 이 값을 그대로 적었다가 감점을 받는다. 물의 임계온도는 350 °C가 아니라 약 374 °C이기 때문이다. AI가 지어낸 숫자였지만, 카드의 어느 곳에도 "이건 확실치 않음"이라는 표시는 없었다.

이 장의 질문은 하나다. 매끄러운 카드와 옳은 카드를 어떻게 구별하는가. 2장 끝에서 273과 273.15를 갈라 준 것은 문법이 아니라 어는점이라는 화학의 사실이었다. 그때 예제 곁에 세 줄로 붙여 두었던 점검을, 이 장에서 정식 절차로 세운다.

이 장에서 다루는 것

  • 2장에서 미리 맛본 세 줄 점검을 검증 루틴 3종으로 정식화한다. 이 장의 훈련 초점은 AI 협업 사이클의 블록 ⑥이다.
  • 환각을 화공 맥락의 세 유형(물성 날조·단위 오류·자신만만한 오답)으로 해부하고, 각 유형의 실제 오류를 지면에 올린다.
  • 물성 대조값의 두 출처, NIST WebBook과 CoolProp을 소개한다(코드로 직접 조회하는 것은 5장이다).
  • Antoine 식을 검증 대상으로만 미리 다룬다(물리적 의미는 8장에서 배운다).
  • 도구② 플래시카드 생성기를 만들고, 생성된 카드에 날조된 사실이 없는지 대조값으로 검사한다.

학습목표: 이 장을 마치면 다음을 할 수 있다

  1. LLM의 환각이 물성 날조·단위 오류·자신만만한 오답으로 나타나는 방식을 구분해 설명할 수 있다.
  2. 검증 루틴 3종(단위 체크·대조값·극한값 sanity)을 정의하고, 각각이 어떤 오류를 잡는지 말할 수 있다.
  3. NIST WebBook에서 물성 상수를 조회해, AI가 제시한 값의 날조 여부를 대조값으로 판정할 수 있다.
  4. 상관식을 유효범위 밖에 적용했을 때 생기는 외삽 오차를 극한값 검사로 잡아낼 수 있다.
  5. 위키 노트로부터 플래시카드 덱을 만들고, 생성된 카드를 대조값으로 검증할 수 있다.

3.1 유창함은 옳음이 아니다: 환각의 세 얼굴

1장에서 LLM을 최소한으로 해부하며 세 가지를 확인했다. LLM은 다음 토큰을 확률적으로 예측해 이어 붙이고, 그래서 같은 프롬프트에도 다른 답을 내며, 맞는 답과 틀린 답이 같은 기제로 만들어진다. 마지막 사실이 이 장의 출발점이다. 출력이 유창하다는 것은 "그럴듯한 토큰을 잘 이었다"는 뜻일 뿐, 내용이 옳다는 증거가 아니다.

근거 없이 그럴듯하게 지어낸 출력을 환각(hallucination)이라 한다. 환각은 LLM의 고장이 아니라 정상 작동의 부산물이다. 모델은 "이 문맥 다음에 올 법한 문장"을 만들 뿐, 그 문장이 세계와 맞는지는 검사하지 않는다. 도입부의 카드가 정확히 그랬다. "물의 임계온도는 350 °C이다"는 물의 임계온도에 대한 문장으로서 형식이 완벽했고, 그래서 모델은 그것을 내놓았다. 값이 맞는지는 모델의 관심사가 아니었다.

화학공학 데이터에서 환각은 세 가지 얼굴로 나타난다. 이 셋을 구분해 두어야 어떤 검증이 어떤 오류를 잡는지 보인다.

3.1.1 물성 날조: 없는 값을 자신 있게 만든다

첫째 얼굴은 물성 날조다. 존재하지 않는 물성 상수, 출처 없는 끓는점, 그럴듯한 임계 물성을 모델이 지어낸다. 도입부 카드의 "350 °C"가 여기에 해당한다. 위험한 점은 날조된 값이 터무니없어 보이지 않는다는 것이다. 물의 임계온도가 3500 °C였다면 누구나 의심하겠지만, 350 °C는 참값 374 °C와 그리 멀지 않아 눈으로는 걸러지지 않는다. 그럴듯한 크기의 오답이 특히 걸러 내기 어렵다.

3.1.2 단위 오류: 개념은 맞고 단위가 틀린다

둘째 얼굴은 단위 오류다. 이 경우 모델은 옳은 개념을 쓰지만 단위·로그 밑·환산에서 미끄러진다. 압력을 mmHg로 계산해 놓고 bar라 이름 붙이거나, 상용로그(log10)로 정의된 식을 자연로그(ln)로 계산하는 식이다. 결과는 자릿수가 통째로 어긋나기도 하지만, 때로는 크기가 비슷해 물성 날조보다 더 잘 숨는다. 이 얼굴을 잡는 검증이 뒤에 나올 단위 체크다.

3.1.3 자신만만한 오답: 어조는 정답 여부와 무관하다

셋째 얼굴은 앞의 둘을 더 위험하게 만드는 성질이다. LLM은 틀린 답도 맞는 답과 똑같이 확신에 찬 문장으로 내놓는다. 출력의 어조는 정답 여부와 아무 상관이 없다. 도입부 카드에는 "아마도"나 "확인 필요" 같은 표시가 없었고, 5주차에 만날 사례에서는 AI가 날조한 Antoine 상수 뒤에 "출처: NIST WebBook"이라는 가짜 출처까지 붙인다. 사람이라면 모르는 것 앞에서 머뭇거리지만, 모델의 문장은 아는 것과 모르는 것을 같은 톤으로 서술한다. 그래서 "AI가 확신하는가"는 판정 기준으로 삼기 어렵다. 판정은 어조가 아니라 대조에서 나와야 한다.

스스로 점검 (해답은 권말)

  1. 환각은 LLM의 고장인가, 정상 작동의 부산물인가? 한 문장으로 답하라.
  2. "물의 임계온도는 3500 °C이다"와 "물의 임계온도는 350 °C이다" 중 어느 쪽이 더 위험한 오답인가? 이유를 쓰라.
  3. AI가 확신에 찬 어조로 답했다는 사실은 그 답의 옳음에 대해 무엇을 말해 주는가?

3.2 검증 루틴 3종: 역할 분담을 절차로

1주차의 역할 분담은 짧았다. 코드는 AI가 쓰고, 검증은 학생이 한다. 그런데 "검증한다"는 말은 그 자체로는 절차가 아니다. 무엇을, 어떤 순서로 확인하는지 정해져 있지 않으면 검증은 "한 번 훑어봤다"로 미끄러진다. 그래서 이 수업은 검증을 세 개의 고정된 질문으로 못 박는다. 단위가 맞는가, 아는 값과 맞는가, 극한에서 말이 되는가. 이 셋을 검증 루틴 3종이라 하고, 15장까지 모든 예제와 실습에서 같은 순서·같은 형식으로 반복한다.

AI 협업 사이클: 이 장은 블록 ⑥을 정식화한다
  1. ① 문제 정의: 무엇이 입력이고 무엇이 출력인가
  2. ② 분해: 함수 크기의 일들로 쪼갠다
  3. ③ 프롬프트: 한 번에 함수 하나씩 요청한다
  4. ④ 생성 코드 읽기: 한 줄씩 한국어로 설명한다
  5. ⑤ 테스트: 알려진 값으로 확인한다
  6. ⑥ 화공 검증: 단위 체크 · 대조값 · 극한값 sanity (이 장에서 정식 도입)

⑤ 테스트와 ⑥ 화공 검증이 어떻게 다른지부터 갈라 두자. 테스트는 코드가 "내가 정한 대로 동작하는가"를 묻고, 화공 검증은 "그 대로가 물리적으로 옳은가"를 묻는다. 2장의 assert는 273.15를 기대값으로 넣어 273을 잡아냈지만, 기대값 자체를 273으로 잘못 정했다면 테스트는 조용히 통과한다. 테스트가 통과한 뒤에도 검증 루틴 3종이 남는 이유가 여기 있다.

3.2.1 단위 체크: 입력·출력 단위가 식과 맞는가

첫째 루틴은 단위 체크다. 함수에 들어가는 값과 나오는 값의 단위가 식이 요구하는 단위와 일치하는지 확인한다. 이 확인이 가능하려면 단위가 코드 안에 적혀 있어야 하므로, 이 교재는 물리량 변수마다 단위를 주석으로 남긴다. T = 373.15 # K처럼 적는다. 단위가 적혀 있지 않으면 검증하기 어렵다.

상관식을 다룰 때는 단위 체크가 네 항목으로 늘어난다. 상관식은 겉보기가 같아도 정의가 제각각이기 때문이다. 같은 Antoine 식이라도 어떤 자료는 로그 밑을 log10으로, 어떤 자료는 ln으로 쓰고, 압력을 bar로 주기도 mmHg로 주기도 한다. 그래서 상관식의 상수를 받으면 로그 밑 · 압력 단위 · 온도 단위 · 유효범위 네 가지를 먼저 확인한다. 이 네 항목을 이 교재에서는 상관식 상수 표에 늘 함께 적는다.

3.2.2 대조값: 아는 값 한 점과 비교한다

둘째 루틴은 대조값 비교다. 계산 결과를 이미 알려진 참값 한 점과 맞대어 본다. 물이 1 atm에서 100 °C에 끓는다는 사실 하나만 있어도, 100 °C의 증기압 계산이 1.013 bar 근처로 나오는지 확인할 수 있다. 대조값이 하는 일은 물성 날조와 자신만만한 오답을 동시에 걸러 내는 것이다. AI의 어조가 아무리 확신에 차 있어도, 값이 참값과 어긋나면 그 답은 채택하지 않는다.

대조값은 어디서 얻는가. 두 곳을 이 장에서 소개하고, 코드로 조회하는 법은 5장에서 익힌다.

NIST Chemistry WebBook은 미국 국립표준기술원(NIST)이 운영하는 공개 물성 데이터베이스다. 웹 브라우저에서 물질을 찾아 상변화 데이터(phase change data)를 열면, 끓는점·임계 물성과 함께 Antoine 상수까지 출처가 명기된 채로 나온다. 조회 절차는 다음과 같다.

  1. 브라우저에서 webbook.nist.gov/chemistry로 간다.
  2. 이름이나 화학식으로 물질을 검색한다(예: water, H2O).
  3. 물질 홈페이지에서 "Other data available"의 "Phase change data"를 연다.
  4. 표에서 필요한 값을 읽고, 유효범위와 출처를 함께 적어 둔다.

CoolProp은 순수 유체의 열역학 물성을 계산해 주는 오픈소스 라이브러리다. NIST WebBook이 사람이 눈으로 찾는 웹 조회라면, CoolProp은 코드가 함수 호출로 값을 받아 오는 조회다. 자동화된 도구 안에서는 웹을 사람이 뒤질 수 없으므로, 5장부터는 물성값을 CoolProp으로 조회한다. 지금 기억할 것은 하나다. 물성값은 AI에게 묻지 않는다.

3.2.3 극한값 sanity: 극한에서 물리가 말이 되는가

셋째 루틴은 극한값 sanity다. 입력을 물리적 극단으로 밀어 넣고, 결과가 상식과 같은 방향인지 본다. 온도를 낮추면 증기압도 낮아져야 하고, 압력을 낮추면 끓는점도 내려가야 한다. 방향이 거꾸로면 대조값을 따질 것도 없이 코드가 틀린 것이다.

극한값 검사가 특히 날카롭게 걸리는 지점이 상관식의 유효범위 경계다. 경험식은 특정 온도·압력 구간의 데이터에 맞춰 만든 곡선이라, 그 구간을 벗어나 값을 구하면 오차가 급격히 커진다. 유효범위 밖에서 값을 구하는 일을 외삽(extrapolation)이라 한다. §3.3의 예제에서 이 외삽 오차를 숫자로 직접 본다.

스스로 점검 (해답은 권말)

  1. 테스트(⑤)를 통과한 코드에도 화공 검증(⑥)이 남는 이유를 한 문장으로 답하라.
  2. 상관식 상수를 받았을 때 먼저 확인할 네 항목은 무엇인가?
  3. 물성값을 AI에게 직접 묻는 대신 무엇을 하라고 했는가?

3.3 물성 날조를 잡아내는 법: Antoine 상수 사례

세 루틴을 실제 물성에 걸어 보자. 소재는 증기압이다. 액체가 자신의 기체와 평형을 이루는 압력을 증기압(vapor pressure, p*)이라 하고, 온도가 오르면 증기압도 오른다. 증기압을 온도의 함수로 근사하는 대표적 경험식이 Antoine 식이다.

log10 p* = A − B / (T + C) (3.1)

여기서 A, B, C는 물질마다 다른 상수이고, p*는 증기압, T는 온도다. 이 식의 물리적 의미와 유도는 8장에서 다룬다. 지금은 검증의 대상으로만 쓴다. 이 절에서 배울 것은 Antoine 식을 푸는 법이 아니라, AI가 이 식으로 낸 값을 어떻게 걸러 내는가다.

NIST WebBook에서 물의 상수를 조회하면 온도 구간별로 여러 벌이 나온다. 그중 두 벌을 표 3-1에 옮겼다. 표에 로그 밑·압력 단위·온도 단위·유효범위 네 항목이 모두 적혀 있음을 눈여겨보라. 이것이 §3.2.1에서 말한 상관식 상수 표의 형식이다.

표 3-1 물의 Antoine 상수: log10 p* = A − B/(T + C), p* [bar], T [K] (출처: NIST WebBook, SRD 69)
유효범위 [K]ABC원자료
379 – 5733.55959643.748−198.043Liu and Lindsay, 1970
344 – 3735.083541663.125−45.622Bridgeman and Aldrich, 1964

예제 3.3-1 100 °C 물의 증기압: 외삽 오차를 잡는다

문제 AI에게 Antoine 식으로 물의 증기압을 계산하는 함수를 만들게 하고, T = 373 K(100 °C)의 결과를 검증 루틴 3종으로 검사하라. 표 3-1의 상수를 쓴다.

풀이 전략 계산 함수는 AI에게 맡기고, 상수 선택·유효범위 확인·대조값 판정은 직접 한다. 판정 기준은 코드를 받기 전에 정해 둔다. 물은 1 atm에서 100 °C에 끓으므로 100 °C의 증기압은 1.013 bar 근처여야 한다.

프롬프트

Antoine 식 log10(p*) = A − B/(T + C)로 증기압을 계산하는 파이썬 함수를 만들어 줘. 입력은 온도(실수, K)와 상수 A, B, C, 출력은 증기압(실수, bar)을 return으로. 로그 밑은 10, 주석은 한국어로 단위와 함께 달아 줘.

코드 3-1 생성 코드
def water_vapor_pressure(T, A, B, C):   # T: 온도 [K]
    """Antoine 식으로 증기압을 계산한다. 반환 단위 [bar]."""
    return 10 ** (A - B / (T + C))       # 식 (3.1), p* [bar]

# 표 3-1의 고온역(379-573 K) 상수를 373 K에 적용
p = water_vapor_pressure(373.0, 3.55959, 643.748, -198.043)
print(round(p, 3))                       # 0.759 가 출력된다

✔ 판정: 로그 밑 10을 10 ** (...)로 정확히 옮겼고, 반환 단위가 프롬프트와 일치한다. 코드 자체는 식 (3.1)을 바르게 구현했다. 그런데 출력 0.759 bar가 판정 기준 1.013 bar와 어긋난다. 코드가 아니라 입력을 의심할 차례다.

검증 루틴 3종

  • 단위 체크: 입력 T [K], 출력 p* [bar], 로그 밑 10. 표 3-1·식 (3.1)과 모두 일치한다.
  • 대조값: 물은 1 atm에서 100 °C에 끓으므로 참값 p* = 1.013 bar. 계산값 0.759 bar는 약 25 % 낮다(오차 (0.759 − 1.013)/1.013 = −25 %).
  • 극한값: 373 K는 쓴 상수의 유효범위(379 – 573 K) 밖으로, 아래쪽으로 벗어난 외삽이다. 25 % 오차의 원인이 여기 있다.

분석 코드는 옳았고 틀린 것은 상수 선택이었다. 유효범위가 373 K를 포함하는 상수 벌(표 3-1의 344 – 373 K)로 바꿔 같은 함수를 부르면 약 1.008 bar가 나와 참값과 1 % 이내로 맞는다. 같은 식, 같은 코드인데 상수의 유효범위 하나로 답이 25 %에서 1 %로 바뀐다. 여기서 일반화할 교훈은 둘이다. 첫째, 상관식은 유효범위 안에서만 믿는다. 둘째, 코드가 옳아도 답이 틀릴 수 있으므로 검증은 코드가 아니라 결과를 겨냥한다. What-if: 표 3-1의 두 상수 벌로 각각 473 K(200 °C)의 증기압을 계산해, 이번에는 어느 쪽이 유효범위 안인지 뒤집어 확인해 보라.

예제 3.3-1은 코드가 옳은데 입력이 틀린 경우였다. 이제 코드 자체가 틀리는 두 경우를 본다. 첫째는 물성 날조, 둘째는 단위·로그 밑 오류다. 두 사례 모두 검증 루틴이 없으면 지나쳤을 오류다.

생각해보기

예제 3.3-1의 25 % 외삽 오차와 경고 ②의 log 밑 오류는 둘 다 "값이 참값과 어긋난다"는 증상을 공유한다. 그런데 원인은 하나는 입력(상수 선택), 다른 하나는 코드(로그 밑)에 있다. 대조값 검사만으로는 두 원인을 구별할 수 없다면, 원인을 가려내기 위해 어떤 추가 점검을 하겠는가. 검증 루틴 3종 중 무엇을 먼저 쓸지 근거와 함께 제안하라.

실습 3 도구②: 플래시카드 생성기 (타이머 없음)

이번 주 도구는 지난주 정리기가 만든 위키 노트를 읽어 암기 카드 덱으로 바꾼다. 입력은 위키 노트(.md) 한정이고, 출력은 Anki가 가져올 수 있는 CSV 파일이다(한 줄 = "앞면,뒷면"). 본인 화공양론 시험범위 노트로 실전 덱 한 벌을 만드는 것이 목표다. 타이머는 없고, 결과는 통과/재도전 2단계로만 처리한다.

준비물

  • 1주차 개발환경 (PowerShell에서 claude 실행 확인, Git Bash 금지)
  • 실습 3 스타터 repo (노트 읽기·덱 저장 함수는 이미 완성돼 있다)
  • 2주차 도구①로 만든 본인 화공양론 위키 노트 3편 이상
  • Anki 설치(완성한 CSV를 실제로 가져와 확인한다)
코드 3-2 스타터가 제공하는 입출력 계층 (인터페이스 발췌, 수정 금지)
def read_wiki_note(path):
    """위키 노트(.md) 한 편을 문자열로 읽어 온다."""

def save_deck_csv(filename, cards):
    """cards(리스트: (앞면, 뒷면) 튜플)를 Anki용 CSV로 저장한다."""

과제

  1. 실습 3.1 스타터 repo를 클론하고 python flashcards.py를 실행하라. (성공 시 예제 노트에서 만든 카드 한두 장이 화면에 출력된다)
  2. 실습 3.2 생성기의 일을 §2.1처럼 분해해 README에 분해표(노트 읽기 → 카드 후보 뽑기 → CSV 저장)로 기록하라. (각 행이 함수 하나에 대응해야 한다)
  3. 실습 3.3 노트 문자열에서 "앞면/뒷면" 쌍을 뽑는 함수를 4요소 프롬프트로 생성하라. 완료 후 커밋하라. (예제 노트에서 카드 후보가 리스트로 나오면 완료)
  4. 실습 3.4 카드 리스트를 save_deck_csv로 저장하고, Anki에서 그 CSV를 가져오라. (Anki 덱에 카드가 실제로 들어오면 완료)
  5. 실습 3.5 대조 검사. 생성된 카드에 원본 노트에 없는 숫자·상수가 끼어들지 않았는지 한 장씩 대조하라. 물성값이 있으면 NIST WebBook과 맞대어 보라. 날조·불일치가 있으면 카드 원문과 판정 근거를 README에 기록하라. (완료 기준: 판정 결과가 README에 있다)
  6. 실습 3.6 본인 화공양론 노트 3편으로 실전 덱을 만들어 저장하고 최종 커밋하라. (deck.csv와 검증 기록이 저장소에 있으면 완료)

완성 기준 (통과 / 재도전)

  • 생성기 v1이 작동한다: 위키 노트를 넣으면 Anki가 가져올 수 있는 CSV가 나온다
  • 본인 화공양론 시험범위로 만든 실전 덱 1벌이 저장소에 있다
  • README에 분해표 + 실습 3.5의 대조 검사 판정이 기록돼 있다
  • 의미 있는 커밋 3회 이상 (실습 3.3 / 3.4 / 3.6 각 1회 이상)
막혔는가? 힌트 프롬프트 (정답 코드가 아니다)
  1. 카드가 노트 내용과 어긋날 때: "이 카드의 뒷면 문장이 아래 원본 노트에 실제로 있는지 한 문장씩 대조해 줘. 노트에 없는 주장은 표시해 줘: (노트·카드 붙여넣기)"
  2. 물성값 진위가 의심될 때: "이 물성값을 내가 NIST WebBook에서 직접 확인하려면 어떤 검색어로 어느 항목을 봐야 하는지 절차만 알려 줘. 값은 네가 말하지 마."
  3. CSV가 Anki에서 안 열릴 때: "이 오류 메시지의 원인 후보 3개와 각각 확인하는 방법을 알려 줘. 내 환경은 Windows, Anki CSV 가져오기: (오류 전문 붙여넣기)"

퇴실 전 기록

실습 종료 15분은 위키 시간이다. 오늘 만든 것, 막힌 것, 그리고 실습 3.5에서 잡아낸 날조 카드 1건을 원문과 함께 노트로 남겨 커밋해야 퇴실한다. 이 "내가 잡은 환각" 기록이 5주차 화공 도구 검증의 밑천이 된다.

요약

  • S 3-1 검증 루틴 3종: ① 단위 체크(입력·출력 단위가 식과 맞는가) → ② 대조값(NIST·문헌의 아는 값 한 점과 비교) → ③ 극한값 sanity(극한·유효범위 경계에서 물리가 말이 되는가). 순서는 단위 → 대조값 → 극한값.
  • S 3-2 환각의 세 얼굴: 물성 날조(없는 값) · 단위 오류(맞는 개념, 틀린 단위·로그 밑) · 자신만만한 오답(어조는 정답 여부와 무관). 판정은 어조가 아니라 대조에서 나온다.
  • S 3-3 Antoine 식 (3.1) log10 p* = A − B/(T + C). 상수를 받으면 로그 밑·압력 단위·온도 단위·유효범위 4종을 먼저 확인한다.
표 3-2 환각의 세 얼굴과 이를 잡는 검증 루틴
환각 유형이 장의 실제 사례1차로 잡는 루틴
물성 날조날조된 임계온도 350 °C, 가짜 출처대조값 (NIST)
단위 오류log10 자리에 exp 사용 → 200 °C에서 3.4 bar단위 체크 (로그 밑)
외삽 오차유효범위 밖 상수로 100 °C에서 0.76 bar극한값 (유효범위)

이 장에서 AI 협업 사이클의 마지막 블록 ⑥이 세 개의 고정된 질문(단위·대조값·극한값)으로 형태를 갖췄다. 도구 사다리에서는 정리기(도구①)에 이어 플래시카드 생성기(도구②)가 손에 들어왔고, 두 도구는 같은 위키를 읽고 쓰며 서로 이어진다. 그리고 이 장에서 얻은 것은 도구만이 아니다. 매끄러운 출력 앞에서 멈추고 아는 값 한 점과 맞대어 보는 습관도 함께 얻었다. 이 습관을 5주차에는 화공 도구에, 최종 시험에는 2시간 실기에 그대로 가져간다.

용어 정리

환각(hallucination)
LLM이 근거 없이 그럴듯하게 지어낸 출력. 고장이 아니라 다음 토큰 예측의 부산물이다.
물성 날조
존재하지 않는 물성 상수·끓는점·임계값을 모델이 자신 있게 지어내는 환각의 한 형태.
검증 루틴 3종
단위 체크·대조값·극한값 sanity의 세 가지 화공 검증 절차. 15장까지 형식이 불변이다.
물성(physical property)
물질의 상태를 특징짓는 측정 가능한 양. 끓는점·증기압·임계온도 등.
증기압(vapor pressure)
액체가 자신의 기체와 평형을 이루는 압력. 온도가 오르면 커진다.
외삽(extrapolation)
상관식을 유효범위 밖에 적용해 값을 구하는 일. 오차가 급격히 커진다.
NIST WebBook
미국 국립표준기술원이 운영하는 공개 물성 데이터베이스. 대조값의 웹 조회처.
CoolProp
순수 유체의 열역학 물성을 계산하는 오픈소스 라이브러리. 대조값의 코드 조회처(5장에서 사용).

연습문제

Q군: 개념·읽기 (AI 없이 푼다)

  1. Q3.1 ● 환각의 세 얼굴(물성 날조·단위 오류·자신만만한 오답)을 각각 한 문장으로 정의하고, 검증 루틴 3종 중 어느 것이 1차로 잡는지 짝지어라.
  2. Q3.2 ● 코드 3-1의 목적과 동작을 한국어 2~3문장으로 설명하라. 10 ** (...)가 math.exp가 아니어야 하는 이유를 반드시 포함하라.
  3. Q3.3 ●● AI가 낸 다음 카드를 채점하고 교정하라. 어느 검증 루틴이 이 오류를 잡는지 밝히고, 판정에 쓸 대조값을 하나 제시하라.
    앞면: 물은 몇 도에서 끓는가(1 atm)?
    뒷면: 물은 1 atm에서 90 °C에 끓는다.

P군: 제작 (AI 사용 전제)

  1. P3.1 ● 예제 3.3-1의 함수로, 표 3-1의 두 상수 벌을 써서 473 K(200 °C)의 증기압을 각각 계산하라. 참값 약 15.5 bar와 대조하고, 어느 상수 벌이 유효범위 안인지 극한값 검사로 판정한 뒤 검증 3종을 README에 기록하라.
  2. P3.2 ●● (메타인지) 플래시카드 생성기가 "그럴듯하지만 틀린 카드"를 내놓게 만드는 프롬프트를 두 가지 설계하라. 각각 어떤 환각 유형이 나올지 예측하고, 실제로 재생성해 예측과 비교한 뒤, 그 카드가 검증 루틴 3종 중 무엇에 걸리는지 밝혀라.
  3. P3.3 ●●● 플래시카드 생성기에 "물성값 자동 플래그" 기능을 추가하라. 카드 뒷면에 숫자+단위 형태의 물성값이 있는데 그 값이 원본 노트에 없으면 [검증필요] 표시를 붙이는 함수를 분해표에 추가하고, 4요소 프롬프트로 생성한 뒤, 무엇을 근거로 "물성값"을 판정했는지 README에 적어라. 테스트 2개 이상을 포함하라.

위키 기록 과제 (이번 주 의미 커밋 ≥1이 채점 지표다)

  1. 이 장의 핵심(검증 루틴 3종 + 환각 세 얼굴)을 1페이지로 정리하라(#seed 태그).
  2. 실습 3.5에서 잡아낸 "내가 잡은 환각" 1건을 카드 원문·대조값과 함께 기록하라.
  3. 타 과목 연결 1건: 검증 루틴 3종 중 하나가 화공양론·일반화학의 어느 계산에서 이미 쓰이고 있는지 한 문단으로 적어라.

4장에서는 플래시카드가 왜 효과가 있는지, 즉 간격반복과 인출연습의 과학을 다루고, 정리기·플래시카드 생성기·스터디 플래너를 하나의 학습 OS로 잇는다. 이번 장에서 세운 검증 루틴 3종은 5주차에 첫 화공 도구(도구④)로 옮겨져, NIST·CoolProp 대조값과 함께 "AI가 날조한 Antoine 상수"를 코드로 직접 잡아내는 데 쓰인다.