밴드갭과 에이전트
반도체 46종과 합금 12계로 구성된 데이터 폴더를 열고, AI 에이전트를 사용하여 밴드갭–격자상수 지도를 작성한다. 화합물 반도체 분야에서 널리 쓰이는 도표로, 어떤 물질을 어떤 기판 위에 어떤 조성으로 성장시킬지를 이 도표 하나로 판단한다.
제공된 데이터에는 오류가 포함되어 있다. 오류의 개수와 유형은 제시하지 않는다. AI가 어떤 오류를 탐지하고 어떤 오류를 탐지하지 못하는지를 확인하는 것이 본 실습의 목적이다.
전체 흐름
다섯 단계로 진행한다. 초록색으로 표시한 두 단계가 본 실습의 핵심이며, 앞 단계가 지연될 경우 앞 단계를 단축한다.
사전 준비
네 항목을 모두 완료한 상태에서 실습을 시작한다. 마지막 항목까지 확인해야 준비가 완료된 것으로 본다. (체크 상태는 이 브라우저에만 저장된다.)
대부분의 에이전트는 유료 계정 또는 API 키가 있어야 동작한다. 계정과 인증은 강의자가 제공한 방식으로 처리한다. 인증 단계에서 반복하여 실패할 경우 개별적으로 해결을 시도하지 말고 즉시 보고한다. 계정 문제는 수강생이 해결할 수 있는 사항이 아니다.
어떤 에이전트를 써도 된다
본 실습의 자료는 특정 도구에 종속되지 않는다. 네 도구 모두 같은 규칙 파일을 읽도록 구성해 두었으므로, 사용하는 도구가 무엇이든 이후 절차는 동일하다.
| 도구 | 설치 | 읽는 규칙 파일 |
|---|---|---|
| Cline 본 수업 기본 | VS Code 확장 | AGENTS.md — 직접 읽는다 |
| Codex | VS Code 확장 또는 CLI | AGENTS.md — 직접 읽는다 |
| Claude Code | VS Code 확장 또는 CLI | AGENTS.md → AGENTS.md를 불러온다 |
| Gemini CLI | CLI | GEMINI.md → AGENTS.md를 불러온다 |
AGENTS.md는 여러 도구가 공통으로 사용하는 표준 파일명이다. 실습 폴더에는 이 파일 하나에 규칙을 두고,
CLAUDE.md와 GEMINI.md는 그것을 불러오는 한 줄만 들어 있다.
어떤 도구를 사용하든 수정할 파일은 AGENTS.md 하나다.
이 구조 자체가 실무에서 통용되는 방식이며, 여러 도구를 오가더라도 지시를 한 곳에서 관리할 수 있게 한다.
환경 연결
네 단계로 완료된다. 도구에 따라 화면은 다르지만 절차는 같다.
파일이 아니라 폴더를 연다
VS Code에서 File > Open Folder…를 선택하고 바탕화면의 mse-ai-w2 폴더를 연다.
파일 하나만 열면 본 실습이 성립하지 않는다. 에이전트가 폴더 전체를 작업 공간으로 인식하기 때문이다.
CLI 도구를 사용하는 경우 해당 폴더로 이동한 뒤 실행한다.
패널을 연다
확장을 설치하면 왼쪽 사이드바에 해당 도구의 아이콘이 추가된다. 이를 선택하면 대화 패널이 열린다.
아이콘이 표시되지 않으면 Ctrl+Shift+P를 눌러 도구 이름을 검색하거나,
Developer: Reload Window를 실행한 후 다시 확인한다.
인증
최초 실행 시 인증 화면이 표시된다. 강의자가 안내한 방식(계정 로그인 또는 API 키 입력)으로 처리한다. 입력창이 활성화되면 준비가 완료된 것이다.
AGENTS.md를 확인한 후 시작한다
왼쪽 탐색기에서 열어 통독한다. 단순한 텍스트 파일로 보이지만 에이전트가 대화할 때마다 자동으로 참조하는 파일이다. 강의에서 다룬 ① Load the Context가 파일 형태로 구현된 것이며, 본 실습의 마지막 단계에서 직접 수정한다.
강의에서 다룬 세 원칙의 적용 지점
강의에서 제시한 세 원칙이 본 실습의 어느 단계에 해당하는지 사전에 정리한다.
AGENTS.md 파일이 이에 해당하며, 마지막 단계에서 그 효과를 직접 확인한다.읽히기 · 그리기 · 의심하기
세 단계로 구성된다. 순서대로 수행하며, 각 단계의 끝에서 결과를 직접 확인한 후 다음 단계로 넘어간다.
에이전트는 파일을 직접 연다
챗봇은 내용을 붙여넣어야 하지만 에이전트는 파일을 직접 연다. 이 차이만으로 결과에 상당한 차이가 발생한다.
@data/semiconductors.csv 와 @data/alloys.csv 두 파일이 어떤 데이터인지 설명해줘. 각각 몇 행 몇 열인지, 컬럼이 무슨 뜻인지, 두 파일이 어떻게 연결되는지. 그리고 데이터에 이상해 보이는 점이 있으면 목록으로 알려줘. 찾은 것을 results/ai_findings.md 에 표로 저장해줘. 컬럼은 [행 번호 | 컬럼명 | 실제 값 | 무엇이 문제인가 | 근거]. 원본 파일은 고치지 마.
@를 입력하면 파일 목록이 표시된다. 파일 내용을 직접 붙여넣지 않았다는 점에 유의한다.
에이전트가 수십 초 내에 다수의 오류를 탐지하여 제시한다. 이는 정상적인 결과이며, 현재의 AI가 잘 수행하는 작업에 해당한다.
따라서 본 실습의 질문은 “AI가 오류를 탐지할 수 있는가”가 아니다.
방금 저장한 results/ai_findings.md가 이후 검증의 대상이 된다. 03에서 이 목록으로 돌아온다.
- 목록에 포함된 항목의 개수를 기록한다. 이후 비교에 사용한다.
- 행 수가 일치하는지 파일을 열어 확인한다. (VS Code 오른쪽 아래에 줄 번호가 표시된다.)
- 두 파일이
material↔endpoint_A/endpoint_B로 연결된다는 점을 확인한다.
지도를 작성한다
한 번에 완성되지 않는다. 수정을 반복하며 결과를 다듬는 과정 자체가 본 실습에서 익히려는 기술이다.
data/semiconductors.csv로 밴드갭과 격자상수의 관계를 보는 그림을 만들려고 해. 아직 시작하지 마. 결과가 달라지는 질문만 하나씩 나에게 물어봐. - 사소한 취향(색깔, 글꼴)은 묻지 말고 네가 정해. - 내가 "모르겠다"고 하면 멈추지 말고, 네 추천안과 이유를 말하고 다음으로 넘어가. 질문이 끝나면, 내가 말하지 않았지만 이런 작업에서 흔히 잘못되는 지점 2개를 짚어줘. 그 다음 무엇을 할지 요약하고 내 확인을 기다려.
받은 질문의 개수를 확인한다. 그중 사전에 고려하지 못했던 질문이 포함되어 있을 것이며, 이후 보고서에 사용하므로 기록해 둔다.
정제 전 데이터로 1차 도표를 작성한다에이전트는 01에서 이미 오류를 파악했으므로 이를 보정하여 작성하려 한다. 이를 명시적으로 제한한다.
좋아. 먼저 가장 단순한 버전으로 한 장 그려줘. x축 격자상수 a, y축 밴드갭, 점 하나가 물질 하나. results/에 저장. 중요: 이번 한 장은 데이터를 고치지 마. 이상한 값이 있어도 원본 그대로 찍어줘. 잘못된 데이터가 그림에서 어떻게 보이는지를 내가 눈으로 보려는 것이다.
두 지점을 확인한다. (1) y축 범위가 비정상적으로 확장되어 대부분의 점이 하단에 밀집한다. 그 원인을 파악한다. (2) x축 좌측 끝에 단독으로 떨어진 점이 존재한다. 해당 물질을 확인한다.
이 단계에서 확인할 사항은 다음과 같다. 원하는 결과를 얻기 위해서는 무엇을 수행하지 말아야 하는지까지 명시해야 하는 경우가 있으며, 이 역시 ② Set the Spec에 포함된다.
확인한 후 정제본을 작성하게 한다. 원본은 수정하지 않는다. 그 이유는 AGENTS.md에 명시되어 있다.
좋아. 이제 results/에 정제한 사본을 만들어줘. 원본은 그대로 두고. 무엇을 어떻게 고쳤는지 목록으로 남겨줘.
이 단계가 ② Set the Spec에 해당한다. 축, 마커, 수식, 안내선, 예외 처리를 한 번에 작성하여 전달한다. 아래 블록 전체를 복사하여 입력한다.
방금 만든 정제본으로 「밴드갭–격자상수 지도」를 제대로 만들어줘. 화합물 반도체 논문에 실리는 형식이다. [축] - x축: 격자상수 a (Å), 입방정 기준으로 통일한다. 우르차이트·육방정은 a_zb = √2 × a_wz 로 환산하고, 환산 사실을 캡션에 밝힌다. - y축 왼쪽: 밴드갭 (eV) - y축 오른쪽: 대응 파장 λ = 1239.8 / Eg (nm). 눈금 간격이 비선형인 점에 주의. [점] - 직접천이는 채운 마커, 간접천이는 빈 마커. - family 컬럼으로 색을 나누고 범례를 단다. - gap_type 표기가 제각각이니 먼저 통일해서 읽어라. [합금 곡선] - data/alloys.csv의 각 합금에 대해 두 끝점을 잇는 곡선을 그린다. - 격자상수는 직선: a(x) = x·a_A + (1−x)·a_B - 밴드갭은 휜다: Eg(x) = x·Eg_A + (1−x)·Eg_B − b·x·(1−x) (b = bowing_eV) - 곡선마다 합금 이름을 단다. - 그릴 수 없는 합금이 있으면 조용히 빼지 말고, 무엇을 왜 뺐는지 보고해라. [안내선] - Si, GaAs, InP의 격자상수 위치에 세로 점선을 긋고 이름을 단다. (기판 격자정합) - 가시광 영역(1.65 ~ 3.26 eV)을 옅게 음영 처리한다. - 광통신 파장 1.31 µm, 1.55 µm에 해당하는 밴드갭에 가로 점선을 긋는다. [출력] - results/에 저장. 캡션에 데이터 출처, 환산 방법, 제외한 데이터를 적는다. - 만들기 전에 계획을 먼저 말해줘.
조성이 A에서 B로 변화할 때 격자상수는 직선으로 변하지만 밴드갭은 아래로 휜다. 휘어지는 정도가 보윙 파라미터 b이다. 곡선이 직선으로 출력되었다면 b 항이 누락된 것이다.
라벨 겹침, 범례 누락, 축 범위 오류가 발생할 수 있다. 이 경우 무엇이 어떻게 잘못되었는지 구체적으로 지시하여 수정하게 한다. “이상하다”가 아니라 “합금 이름 라벨이 서로 겹치므로, 곡선 중간이 아니라 끝점 옆에 배치하라”와 같이 지시한다. 이 수정 과정이 본 실습에서 익히려는 기술의 핵심이다.
물리적으로 검산한다도표가 그럴듯한 것과 정확한 것은 다르다. 다음 여섯 항목을 직접 확인한다.
| # | 확인 사항 | 충족 시 의미 |
|---|---|---|
| 1 | ZnS의 두 상(우르차이트·징크블렌드)이 x축에서 거의 같은 위치에 있는지 확인한다 | √2 환산이 정상적으로 수행되었다 |
| 2 | GaN의 두 상에 대해서도 동일하게 확인한다 | 위와 같음 |
| 3 | AlGaAs 곡선이 거의 수직인지 확인한다 | GaAs와 AlAs의 a가 거의 같다. AlGaAs를 GaAs 기판에 사용하는 근거이다 |
| 4 | InP 세로선과 InGaAs 곡선이 교차하는지 확인한다 | 교차 조성은 In₀.₅₃Ga₀.₄₇As이다. 해당 밴드갭으로 1.55 µm 광의 흡수가 가능한지 판단한다 |
| 5 | Si의 오른쪽 축 값이 1100 nm 부근인지 확인한다 | 실리콘 태양전지가 근적외선까지 흡수함을 의미한다 |
| 6 | CdS → CdSe → CdTe 순으로 격자상수가 증가할 때 밴드갭이 단조롭게 변하는지 확인한다 | 동일 양이온에 음이온만 무거워지는 계열의 일반적 경향이다 |
환산을 수행하지 않았거나 잘못 수행한 것이다. 재작성을 지시한다. data/데이터설명.md에 두 상을 모두 수록한 이유와 검산표가 제시되어 있다.
6번이 충족되지 않는 경우는 도표의 오류가 아니다. 해당 결과를 기록하고 03으로 진행한다.
추가로, √2 환산 없이 우르차이트의 a를 그대로 사용했을 경우 도표가 어떻게 달라지는지, 그 도표로부터 도출한 결론에 어떤 오류가 발생하는지를 검토한다.
AI가 탐지하지 못하는 오류에는 유형이 있다
01의 결과로 돌아간다. results/ai_findings.md를 열고 그 목록을 그대로 수용하지 않고 검증한다.
목록에서 세 항목을 선정하여 CSV의 해당 행을 직접 확인한다.
- 해당 행에 그 값이 실제로 존재하는지 확인한다.
- 행 번호가 정확한지 확인한다. 헤더를 1행으로 계산했는지 0행으로 계산했는지에 따라 한 행씩 어긋나는 경우가 빈번하다.
- 문제로 판단한 근거가 타당한지 검토한다.
01에서 AI가 탐지한 항목들에는 공통점이 있다. 모두 값 자체로 이상이 판별되는 유형이다. 결측이거나, 범위를 벗어났거나, 형식이 상이한 경우이다. 값이 정상 범위에 있는 경우를 검토한다.
다음 두 항목은 AI에게 질의하기 전에 직접 확인한다.
동일 양이온에 음이온만 변화하는 계열을 밴드갭 순으로 배열한다.
CdS → CdSe → CdTe (S → Se → Te) ZnS → ZnSe → ZnTe
화합물 반도체에서 음이온이 무거워질 때 밴드갭이 어느 방향으로 변화하는지 확인한다. 두 계열이 동일한 방향으로 변화하는지, 한쪽 계열만 경향에서 벗어나지 않는지를 검토한다. (02의 검산 6번이 이에 해당한다.)
data/alloys.csv의 합금 명칭을 확인한다.
명칭에 포함된 원소와 두 끝점 화합물에 포함된 원소가 일치하는지 대조한다.
note에 기재된 격자정합 조성에 대해서도, 해당 끝점으로 계산했을 때 그 값이 산출되는지 확인한다.
(데이터설명.md의 Vegard 식으로 직접 계산한다.)
이상을 발견한 경우 AI에게 확인시킨다. 단, 답을 제시하지 않고 질의한다.
alloys.csv의 각 합금에 대해, 합금 이름에 들어간 원소와 두 끝점 화합물의 원소가 일치하는지 하나씩 확인해줘.
results/ai_findings.md에서 실제로는 정상이나 오류로 보고된 항목을 확인한다.
data/데이터설명.md를 참조하여 다음 두 항목을 판정한다.
lattice_c_ang가 비어 있는 행이 결측치에 해당하는지 판정한다.ZnS와GaN이 두 번씩 수록된 것이 중복에 해당하는지 판정한다.
거짓 양성도 오류에 해당한다. 존재하지 않는 문제를 검토하는 데 소요되는 시간도 손실이며, 더 중요하게는 정상 데이터를 삭제하도록 유도할 수 있다.
results/오류유형표.md를 작성하고 다음 표를 채운다.
| 오류 유형 | 이 데이터에서의 예 | AI 탐지 여부 | 그 원인에 대한 판단 |
|---|---|---|---|
| 범위를 벗어난 값 | |||
| 비어 있는 값 | |||
| 표기·형식 불일치 | |||
| 중복된 행 | |||
| 범위 안이지만 틀린 값 | |||
| 이름과 내용이 어긋난 것 | |||
| 정상이나 오류로 오인된 것 |
굵게 표시한 하위 세 항목이 본 실습에서 중점적으로 다루는 부분이다. AI가 세 항목을 모두 탐지한 경우에도 유효한 결과이므로 그대로 기록한다. 평가 대상은 AI의 성능이 아니라, 어떤 종류의 판단을 사람이 수행해야 하는지를 직접 정리하는 것이다.
마지막 단계 — 지식을 제공하면 탐지하는가
순서상 마지막 단계이나 본 실습의 핵심에 해당한다.
03에서 AI가 탐지하지 못한 항목이 있었다면, 이는 AI의 성능 문제가 아니라 해당 판단에 필요한 지식이 제공되지 않았기 때문일 수 있다. 이를 직접 확인한다.
AGENTS.md 하단에 다음 두 항목을 추가한다
## 이 데이터에서 알아 둘 것 - 같은 양이온에 음이온이 무거워지면(S→Se→Te, P→As→Sb) 밴드갭은 단조롭게 작아지고 격자상수는 커진다. 데이터가 이 경향을 어기면 보고해라. - 3원 합금의 이름에 든 원소와, 두 끝점 화합물의 원소는 일치해야 한다.
새 대화를 열고 01의 프롬프트를 동일하게 재입력한다
패널 상단의 +를 선택한 후, 최초에 사용한 프롬프트를 그대로 다시 입력한다.
동일한 AI, 동일한 데이터, 동일한 질의임에도 문맥 두 줄로 인해 결과가 달라진다. 이것이 ① Load the Context에 해당하며, 본 실습에서 다루는 내용 중 실무에서 가장 빈번하게 사용된다.
다만 그 두 줄을 작성하기 위해서는 해당 물리를 이해하고 있어야 한다. “AI를 사용하므로 전공 지식이 필요하지 않다”는 견해와 정반대의 결과에 해당한다.
시간이 남는 경우 도표 규칙도 추가한다. 예를 들어 “그림에는 항상 격자정합 세로선을 포함한다”를 기재한 후 02의 사양서를 재실행하면, 별도의 지시 없이도 반영된다.
제출물
results/에 회고.md를 작성하여 다음 다섯 항목에 각 2~4줄로 답하고, results/ 폴더 전체를 압축하여 제출한다.
| # | 작성 내용 |
|---|---|
| 1 | 인터뷰에서 에이전트가 제시한 질문 중 사전에 고려하지 못했던 질문 하나 |
| 2 | “고치지 마”라고 명시해야 했던 이유. 명시하지 않았을 경우 예상되는 결과 |
| 3 | 물리적 검산 여섯 항목 중 최초에 충족하지 못한 항목과 그 수정 과정. 모두 충족한 경우, √2 환산을 수행하지 않았을 때 도표가 어떻게 달라지는지 기술한다 |
| 4 | 오류유형표.md의 굵게 표시한 세 항목에서 확인한 내용, 그리고 마지막 단계의 결과. 두 줄을 추가하기 전과 후의 차이, 그리고 어떤 종류의 판단을 사람이 수행해야 한다고 판단하는지 |
| 5 | AI 에이전트가 챗봇과 다르다고 판단한 구체적인 지점 하나 |
문제 해결
아래 항목을 먼저 확인하고, 해결되지 않으면 주변 수강생과 화면을 함께 검토한다.
| 증상 | 조치 |
|---|---|
| 로그인 화면이 반복하여 표시된다 | 계정 문제일 가능성이 높다. 강의자가 안내한 방식을 다시 확인한다 |
@를 입력해도 파일 목록이 표시되지 않는다 | 폴더가 아니라 파일만 열었다. File > Open Folder…로 다시 연다 |
| 도표의 한글이 네모(□□□)로 표시된다 | 빈번한 현상이다. 그래프 한글 폰트를 Malgun Gothic으로 지정해줘 (macOS는 AppleGothic) |
| 합금 곡선이 직선으로 출력된다 | bowing 항이 누락되었다. 사양서의 Eg(x) 식을 다시 참조하게 하면 대부분 해결된다 |
| 오른쪽 파장 축이 생성되지 않는다 | 난이도가 있는 부분이다. 해결되지 않으면 주요 파장에 가로선만 표시해도 된다 |
| 파이썬이 설치되어 있지 않다고 응답한다 | 정상이다. AGENTS.md의 “환경” 항목을 다시 참조하게 한다 |
| 추가 설치 여부를 질의한다 | 실습 중에는 거절한다. 다른 방법으로 수행하도록 지시한다 |
| 응답이 주제에서 벗어난다 | 대화가 길어진 경우이다. 패널 상단의 +로 새 대화를 시작한다 |
| 수행 내역을 파악하기 어렵다 | 방금 뭘 했는지 한국어로 3줄로 요약해줘 |
| 작업을 되돌려야 한다 | 방금 만든 파일 지워줘 또는 편집기에서 Ctrl+Z |
| 확장이 표시되지 않는다 | Ctrl+Shift+P → Developer: Reload Window |
AI는 값 자체로 판별되는 오류를 수십 초 내에 탐지한다. 값만으로는 판별되지 않는 오류는 사람이 지식을 제공해야 탐지한다.
단위가 잘못된 값과 결측값은 즉시 탐지되었으나, 정상 범위 내에 있는 잘못된 값은 탐지되지 않았다.
이를 판별하려면 음이온이 무거워지면 밴드갭이 작아진다는 지식이 필요하기 때문이다.
해당 내용을 AGENTS.md에 한 줄 기재하자 탐지되었다.
그 한 줄을 작성할 수 있는 역량을 갖추는 것이 본 학과의 교육 목표이다.
인공지능재료공학 · 실습 02 · 신소재공학부
데이터: 수업용으로 정리한 상온 문헌 대표값 46종 + 합금 12계 — 논문 인용용이 아니다