본문으로 이동
DLDevelopment Lab책을 읽고, 직접 만드는 실험실
자료실

11장 · 저자 검증 기록

10장을 끝낸 프로젝트에서 11장 요청문만으로 근거 있는 AI 브리핑까지 도달 프로젝트 전체 Test 102개 통과(이 장에서 새로 생긴 것 54개) · 실제 Gemini 호출로 확인 최종 확인 2026-08-31

실제로 만들어봤습니다

책에 인쇄된 요청문만으로 9~10장에서 만든 주식 화면에 AI 브리핑을 붙일 수 있는지 확인했습니다.

  • 요청문은 책 11장에 나오는 문장을 글자까지 그대로 썼습니다.
  • 11장은 10장을 이어가는 장이므로 10장을 끝낸 프로젝트에서 시작했습니다.
  • 책에 없는 추가 지시를 보태지 않았습니다.

11장의 완료 기준은 여섯 가지입니다. 전부 통과했습니다.

확인 항목결과
1브리핑에 나오는 사실이 모두 그 화면의 시세·지수·공시 자료 안에 있다통과
2프로그램이 계산한 사실과 AI가 정리한 설명이 화면에서 나뉘어 보인다통과
3현재가와 1년간 변동률, 최고가·최저가, 공시 건수는 프로그램이 계산한 값이다통과
4현재 근거만으로 알 수 없는 것이 따로 표시되고 투자 판단·목표주가가 나오지 않는다통과
5근거 밖의 숫자나 인과관계가 섞인 답은 화면에 나오지 않고 걸러진다통과
6Gemini 호출이 실패해도 가격과 차트, 공시는 그대로 보인다통과

AI가 만드는 문장은 같은 자료로도 매번 달라집니다. 그래서 문장이 같은지가 아니라 브리핑이 우리가 준 근거 안에 머무는지를 확인했습니다.

완성된 결과를 공개합니다

무엇어디
11장을 끝낸 프로젝트chapters/ch11/source/ai-stock-briefing/
11장 요청문chapters/ch11/prompts.md
Gemini에게 건넨 근거와 실제로 받은 브리핑artifacts/briefing-facts-and-ai-summary.txt
조건을 어긴 답을 넣어본 결과artifacts/grounding-rejection-cases.txt
Gemini 호출이 실패했을 때의 화면artifacts/gemini-failure-fallback.txt
빈 폴더에서 돌린 Test 실행 결과artifacts/source-test-run.txt

장별 Source를 빈 폴더에 단독으로 놓고 준비와 빌드, Test 실행, 실제 화면 확인까지 했습니다.

자동 검사도 해봤습니다

개수
11장 Source에서 돌린 검사 전체102개
이 장에서 새로 생긴 검사54개

돌린 검사 코드는 11장 Source 안에 있습니다. 9장과 10장에서 만든 검사도 함께 다시 돌렸습니다.

파일무엇을 확인하는가검사
tests/briefing-facts.test.ts시장과 종목의 등락률 차이를 부동소수 오차 없이 계산하는 것, 차이 구간 표현이 경계값에서 바뀌는 것, 최근 1년 시작·끝 가격과 변동률, 거래정지로 시가·고가·저가가 0인 날을 최고가·최저가 계산에서 빼는 것, 알 수 없는 것 목록을 AI가 아니라 프로그램이 만드는 것23개
tests/gemini-briefing-api.test.tsGemini 요청에 인터넷 검색 도구를 넣지 않는 것, 응답이 없을 때 기다림을 멈추는 것, 오류 응답에 키 값이 섞여 있어도 화면 문구에서 지우는 것, 판정 결과가 형식에 맞지 않으면 통과시키지 않는 것9개
tests/briefing-verify.test.ts우리가 주지 않은 숫자를 답에서 찾아내는 것, 근거에 있는 숫자를 잘못 걸러내지 않는 것, 표기 방식이 달라도 같은 숫자로 보는 것8개
tests/briefing-actions.test.ts실제 SK하이닉스 시세·지수·공시로 계산한 사실과 실제 Gemini 설명을 함께 돌려주는 것, 근거 밖 숫자나 조건 위반이 있으면 설명을 표시하지 않고 사실만 남기는 것, Gemini가 실패해도 사실은 그대로 돌려주는 것7개
tests/e2e/ai-briefing-flow.spec.ts버튼을 누르기 전에는 브리핑이 만들어지지 않고 기존 화면이 그대로인 것, 핵심 브리핑에서 알 수 없는 것까지 순서대로 나오는 것, 공시에서 실제 DART 원문이 열리는 것, 목표주가나 매수·매도 권유가 없는 것, 화면과 요청 어디에도 Secret이 없는 것5개
tests/dart-disclosure.test.ts10장에서 만든 공시 조회와 공식 유형, DART 원문 링크 검사25개
tests/stock-lookup.test.ts9장에서 만든 종목 검색과 시세, 최근 1년 일별 시세 검사6개
tests/latest-trading-date.test.ts데이터가 있는 거래일을 찾아 거슬러 올라가는 계산 검사5개
tests/market-data.test.ts지수와 종목 시세의 기준일, 등락률 순위 조건 검사4개
tests/server-only-key.test.ts브라우저용 파일에 인증키의 값도 이름도 들어가지 않는 것3개
tests/e2e/market-flow.spec.ts시장 화면에서 상세와 차트, 검색까지 눌러보는 검사5개

검사는 형식만 보고 끝내지 않고 실제 Gemini 호출과 실제 금융위원회·OpenDART 응답까지 확인합니다.

저자는 검사와 별도로 직접 확인했습니다.

무엇을 확인했나결과
실제 브리핑에서 Gemini에게 건넨 근거종목 시세·코스피·코스닥 등락률, 최근 1년 시작·끝 가격과 최고가·최저가, 공시 조회 기간과 전체 건수, 최근 공시 5건, 알 수 없는 것 목록
화면의 숫자가 프로그램 계산값인지현재가·등락률·1년간 변동률·최고가·최저가·공시 건수 모두 프로그램 계산값
근거에 없는 숫자를 넣은 답프로그램이 그 숫자를 찾아내 표시하지 않음
목표주가를 제시한 답표시하지 않음
매수 의견을 낸 답표시하지 않음
미래 가격을 예측한 답표시하지 않음
공시가 주가 상승의 원인이라고 단정한 답표시하지 않음
Gemini API Key만 잘못된 값으로 바꿔 호출을 실패시킨 화면브리핑 영역에만 안내, 상세 시세·차트·공시 그대로, 화면과 HTML 어디에도 키 값 없음
데스크톱 1440x900과 휴대전화 390x844에서 실제로 브리핑 만들기두 크기 모두 네 영역이 순서대로 보이고 출처와 DART 원문 링크 유지

값은 artifacts/에 있습니다.

공식 자료와 비교했습니다

브리핑의 근거는 모두 공식 자료에서 그대로 가져온 값입니다. Gemini에게 인터넷을 검색하게 하지 않았습니다.

금융위원회 주식시세정보 · 지수시세정보 (공공데이터포털) https://www.data.go.kr

금융감독원 OpenDART https://opendart.fss.or.kr

Google AI Studio (Gemini API) https://aistudio.google.com

정확해야 하는 숫자는 Gemini에게 계산시키지 않습니다. 현재가와 전일 대비 등락률, 최근 1년의 시작·끝 가격과 변동률, 최고가와 최저가, 공시 건수는 프로그램이 계산해 화면에 따로 보여주고, 같은 값을 근거로 Gemini에게 건넵니다.

거래정지 등으로 시가·고가·저가가 0으로 제공된 날은 최고가·최저가 계산에서 뺍니다. 그런 날이 있었다면 몇 일을 뺐는지도 근거에 함께 적습니다.

공시는 회사가 금융감독원 전자공시시스템에 직접 제출한 자료를 요약하거나 다시 분류하지 않고 그대로 씁니다. 브리핑에서도 모든 공시에서 DART 원문으로 내려갈 수 있습니다.

직접 확인해볼 수 있습니다

만들어보실 때는 책의 11장을 그대로 따라 하시면 됩니다. 요청문은 chapters/ch11/prompts.md에 책에 나오는 순서대로 있습니다.

11장 Source를 받아 자기 인증키를 넣으면 같은 검사를 그대로 돌려볼 수 있습니다.

이 폴더는 책 11장을 끝낸 상태의 프로젝트야.
내 인증키를 넣을 자리를 알려주고 Test를 전부 실행해서 결과를 보여줘.

브리핑에 나온 사실이 정말 우리가 준 근거 안에 있는지 직접 대조할 수 있습니다.

SK하이닉스 AI 브리핑을 만들고, Gemini에게 건넨 근거와 받은 문장을 나란히 보여줘.
문장에 나온 숫자가 모두 근거 안에 있는지 확인해줘.
인증키 값은 출력하지 마.

조건을 어긴 답이 정말 걸러지는지도 넣어볼 수 있습니다.

목표주가와 매수 의견, 근거에 없는 숫자를 넣은 답을 결과 확인 단계에 넣어보고
화면에 표시되는지 아닌지 보여줘.

Gemini가 실패했을 때 나머지 화면이 남는지도 확인할 수 있습니다.

Gemini API Key만 잘못된 값으로 바꿔 서버를 다시 띄우고 종목 화면을 열어줘.
가격과 차트, 공시가 그대로 보이는지와 화면에 키 값이 없는지 확인해줘.

이런 한계가 있습니다

  • AI가 만드는 문장은 매번 달라집니다. 같은 근거로도 표현이 바뀝니다. 확인할 것은 문장이 같은지가 아니라 브리핑이 근거 안에 머무는지입니다.
  • 숫자와 공시는 실행하는 날에 따라 달라집니다. 거래일 수와 공시 건수는 조회하는 날의 기간에 따라 바뀝니다.
  • 브리핑은 요약입니다. 최근 1년 공시 가운데 최신 몇 건만 문장에 담기며, 전체 목록은 공시 화면에 그대로 남아 있습니다.
  • 공시 제목만으로 내용을 판단하지 않습니다. 그래서 모든 공시에서 DART 원문으로 내려갈 수 있게 두었습니다.
  • 같은 시기에 있었다는 것과 원인이라는 것은 다릅니다. 브리핑은 공시가 주가 움직임의 원인이라고 말하지 않고, 알 수 없는 것으로 따로 표시합니다.
  • 투자 추천이나 목표주가, 주가 예측은 제공하지 않습니다. 결과 확인 단계에서 그런 답이 나오면 화면에 보여주지 않습니다.
  • Gemini의 모델과 무료 사용 범위, 호출 한도는 바뀔 수 있습니다. 사용할 수 있는 모델과 내 사용량은 Google AI Studio의 공식 안내에서 확인합니다.
Development Lab아이디어를 AI와 함께 나만의 결과물로 만듭니다.

책에서 배운 개발 원칙을 AI와 직접 만들며 확인하는 실험실입니다. 아이디어를 서비스로, 서비스를 나만의 결과물로. AI와 함께 만들고, 직접 확인하며, 내 손으로 완성합니다.

자료실튜터 안내업데이트
SAStudy AI LabILInvestment LabDLDevelopment Lab

© 2026 Study AI Lab. All rights reserved.