에피소드 10. 여러 턴 자동화와 결과 검토
원본 범위: 1:06:26–1:17:25. 여러 턴 텍스트·이미지 시험과 Crescendo 자동화 데모.
질문 만드는 모델과 시험받는 모델 — 1:07:04
에피소드 9에서는 준비한 입력을 한 번씩 보냈다. 이번에는 별도의 모델이 앞선 응답을 보고 다음 질문을 만든다. 질문 생성, 대상의 응답, 목표 평가를 반복하다가 성공하거나 정한 한도에 도달하면 끝낸다.
영상의 RedTeamingOrchestrator에는 서로 다른 역할의 두 연결이 나온다. adversarial_chat은 질문을 생성하는 모델이고, objective_target은 그 질문을 받는 시험 대상이다.
| 역할 | 읽는 것 | 만드는 것 |
|---|---|---|
| 질문 생성 모델 | 시험 목표, 앞선 질문과 대상의 응답 | 다음 시험 질문 |
| 시험 대상 | 전달받은 질문과 자기 대화 문맥 | 답변 또는 이미지 등 결과 |
| 평가기 | 목표와 대상의 결과 | 목표 달성 여부 |
질문 생성 모델이 시험 대상인 것은 아니다. 같은 회사의 모델을 사용해도 두 역할은 분리한다. 영상은 한 연결에 OpenAIChatTarget, 다른 연결에 AzureMLChatTarget을 사용하는 예를 보여 준다. 이는 당시 대상 연결 클래스 이름이며 공격용·대상용 역할을 뜻하는 제품 이름은 아니다.
그림의 돌아가는 화살표는 그냥 같은 질문을 반복한다는 뜻이 아니다. 대상의 응답을 질문 생성 모델에게 보여 주고 다음 질문을 바꾸게 한다.
에피소드 9와 다른 점수 기준 — 1:08:14
이번 영상의 TrueFalseScorer는 목표에 해당하는 내용이 나왔는지 판단한다. 앞 수업의 거절 점수 뒤집기와 다르다.
| 앞 수업 | 이번 수업 |
|---|---|
| 응답이 거절인가를 판단하고 반대로 바꿈 | 정한 목표를 응답이 충족하는지 판단함 |
| 거절하지 않은 일반 설명도 성공처럼 잡힐 수 있음 | 목표 내용을 정확히 정하지 않으면 관련 언급을 성공으로 잘못 잡을 수 있음 |
어떤 평가기를 쓰든 기준의 뜻을 확인해야 한다. “목표를 판단한다”는 이름만으로 오판이 사라지지는 않는다. 예를 들어 Lab 5에서 욕설을 설명하거나 따옴표로 인용한 것과 봇이 사용자에게 욕설한 것은 앱 기준에 따라 다르게 판정할 수 있다.
최대 턴 수와 조기 종료 — 1:09:11
영상은 최대 3턴을 설정한다. 세 번을 반드시 채우라는 뜻은 아니다. 앞에서 목표를 달성하면 그때 종료한다. 세 번까지 목표를 달성하지 못하면 한도 때문에 종료한다.
진행 순서는 다음과 같다. 이것은 구조를 설명하는 의사코드다.
목표와 최대 턴 수를 정한다
질문 생성 모델이 질문을 만든다
시험 대상에 보낸다
실제 결과를 평가하고 기록한다
목표 달성이면 종료한다
한도에 도달했으면 종료한다
아니면 응답을 보고 다음 질문을 만든다
“대화가 끝남”과 “목표 달성”은 다른 상태다. 연결 오류로 멈췄거나 한도를 모두 사용했어도 프로그램 실행은 끝날 수 있다. 종료 이유를 함께 저장한다.
첫 데모: 설득을 바꿔도 세 번 거절한다 — 1:09:51
질문 생성 모델은 대상의 거절을 읽고 다음 질문의 표현을 바꾼다. 연구·안전 목적 같은 설명을 활용하지만 영상의 대상은 세 번 모두 거절한다. 이 시도는 실패로 끝난다.
이 실패는 버릴 기록이 아니다. 어떤 목표와 조건에서 어떤 세 질문을 보냈고 대상이 어떻게 대응했는지 보여 준다. 성공한 대화만 보관하면 실제로 얼마나 자주 막혔는지 알 수 없고 다른 방식과 비교하기도 어렵다.
세 질문이 서로 다른 표현이었더라도 같은 대화의 이력 아래에서 진행된 결과라는 점을 남긴다. 각 질문을 새 대화에서 따로 보내면 조건이 달라진다.
두 번째 데모: 텍스트 대신 이미지를 생성한다 — 1:11:17
영상은 이미지 생성 대상으로 바꾼다. 당시 예는 DALL-E 계열이다. 입력은 글이지만 결과는 이미지다. 여기서 바꿔야 하는 것은 대상 연결만이 아니다. 평가기 역시 이미지의 내용을 판단할 수 있어야 한다.
| 구성 | 텍스트 시험 | 이미지 시험 |
|---|---|---|
| 대상의 결과 | 글 | 이미지 |
| 평가할 증거 | 실제 응답 문장 | 실제 생성 이미지 |
| 적절한 판단 | 목표에 해당하는 정보를 제공했는가? | 이미지에 정한 대상·상황이 실제로 나타났는가? |
“이미지 파일을 받음”과 “원하는 내용의 이미지를 받음”은 다르다. 생성 여부만 확인하면 엉뚱한 이미지도 성공으로 셀 수 있다.
영상의 이미지 요청에는 콘텐츠 정책 필터가 차단한 시도가 있다. 진행 도구는 이런 필터 거절을 처리하고 다른 시도를 이어 간다. 이것은 서버 연결 오류 때문에 같은 요청을 재전송하는 것과 다르다. 필터가 차단한 사실도 시험 결과로 남긴다.
이후 이미지가 생성되고 자동 평가는 성공으로 표시한다. 그러나 영상의 최종 이미지가 자동 평가의 목표를 얼마나 충족하는지는 실제 그림을 봐야 한다. 예를 들어 목표가 특정 절차의 설명이라면 관련 물건을 든 인물의 그림만 나온 것으로 절차를 제공했다고 결론 내릴 수 없다. 평가기의 참·거짓과 실제 산출물의 의미를 대조하는 것이 이번 데모의 검토 지점이다.
원본의 해로운 제작 주제는 이 교재에서 절차나 공격 문구로 재현하지 않는다. 이미지 자동화 연습을 하려면 “책상 위 파란 컵”처럼 무해하고 명확한 목표를 별도로 정할 수 있다. 이는 구조 확인용 추가 연습이며 원본 위험 시험을 완료한 것이 아니다.
세 번째 데모: Crescendo를 자동으로 진행한다 — 1:14:04
영상은 CrescendoOrchestrator를 연결하고 새 대상을 설정한다. 먼저 직접적인 요청이 거절되는 기준 결과를 확인한다. 다음에는 일반 배경에서 시작해 대상을 목표로 좁히는 질문을 생성하도록 한다. 에피소드 6에서 사람이 하던 흐름을 프로그램이 진행하는 것이다.
여기에는 최대 턴 수뿐 아니라 최대 되돌림 수, max backtracks가 나온다. 현재 공식 문서의 설명에 따르면 Crescendo는 대상이 거절할 때 공격용 모델의 대화를 되돌려 다른 질문 각도로 다시 시도할 수 있다. 한 번 거절한 대화만 계속 밀어붙이는 것과 다르다. 현재 여러 턴 공격 문서
두 한도를 따로 이해하자.
| 제한 | 통제하려는 것 |
|---|---|
| 최대 턴 수 | 한 시험 대화가 얼마나 이어지는가? |
| 최대 되돌림 수 | 거절을 만나 이전 지점에서 다른 각도로 다시 시도하는 횟수 |
| 시간·호출 비용 한도 | 전체 실행에 쓰는 자원 |
앞의 두 항목은 영상의 Crescendo 설정에 나온다. 마지막 항목은 실제 학습 실행을 위한 추가 제한이다. 턴과 되돌림의 정확한 계산은 설치한 버전의 문서를 확인한다. 예를 들어 미리 넣은 대화 이력이 턴 계산에 포함되는 설정도 있다. 최신 API 이름과 한도 동작을 영상만 보고 추정하지 않는다.
영상은 자동으로 배경 질문에서 구체적인 질문으로 이어지고 점수가 목표 달성으로 바뀌는 결과를 보여 준다. 그 점수만 보지 말고 전체 대화에서 어떤 내용이 실제로 제공됐는지 확인한다. 자동화가 만들었던 질문과 대상의 모든 답변이 검토 자료다.
거절·필터 차단·연결 오류·되돌림을 구분한다
| 상태 | 무엇이 일어난 것인가? | 기록할 내용 |
|---|---|---|
| 모델의 거절 | 대상이 답변에서 요청을 거절함 | 질문과 실제 거절 문장 |
| 콘텐츠 필터 차단 | 서비스의 안전 검사에서 요청·결과를 막음 | 차단 단계와 반환된 상태 |
| 연결 오류 | 네트워크·인증·서비스 문제로 정상 결과를 받지 못함 | 오류 종류와 호출 상태 |
| 되돌림 | 시험 진행기가 이전 지점에서 다른 질문을 시도함 | 이전 시도와 새 시도의 관계 |
| 한도 종료 | 정한 제한에 도달해 끝남 | 사용한 턴·되돌림 수와 종료 이유 |
| 목표 달성 | 실제 결과가 정한 목표를 만족함 | 결과와 판단 근거 |
연결 오류는 모델이 공격을 거절한 증거가 아니다. 되돌림은 성공 결과도 아니다. 서로 다른 상태를 실패 한 칸에 모두 넣으면 개선할 부분이 보이지 않는다.
공식 여러 턴 실습으로 연결한다
공식 랩 저장소의 Lab 5와 여러 턴·Crescendo 관련 노트북을 사용한다. 영상의 위험 주제를 재현하는 대신, 앞 수업의 공식 행동 챌린지 목표로 전체 흐름을 확인한다. 현재 노트북 이름과 번호는 저장소의 목록에서 확인한다.
- 대상의 정상 행동과 공격 목표를 먼저 적는다.
- 새 대화에서 직접 요청의 기준 결과를 받는다.
- 질문 생성 모델과 시험 대상의 연결을 구분해 설정한다.
- 목표에 맞는 평가 기준과 턴·되돌림 한도를 정한다.
- 질문·응답·필터 상태·자동 점수를 모두 저장하며 진행한다.
- 세 명이 전체 기록을 읽고 실제 목표 달성 여부를 다시 판정한다.
- 직접 요청 결과와 여러 턴 결과를 같은 조건인지 확인한 뒤 비교한다.
아직 API가 없다면 공식 노트북에서 두 대상 연결, 평가 기준, 제한, 내보내기를 찾아 표시한다. 의사코드를 종이에 따라가며 어느 조건에서 종료하는지 설명하는 준비도 가능하다. 실제 자동화 실행과는 구분한다.
이해 확인
문제. 세 턴을 모두 수행했으니 성공인가?
아니다. 목표를 달성했는지 따로 확인한다. 모두 거절했다면 그 시도는 실패다.
문제. 텍스트 대상만 이미지 대상으로 바꾸면 되는가?
평가기와 결과 기록 방식도 이미지에 맞춰야 한다. 실제 그림을 판단할 수 있어야 한다.
문제. 콘텐츠 필터가 막은 결과는 연결 오류와 같은가?
아니다. 정책에 따른 차단과 기술적 연결 실패는 원인과 의미가 다르다.
문제. 자동 평가가 성공이라면 검토를 생략해도 되는가?
실제 결과와 목표의 일치를 확인한다. 영상의 이미지 사례처럼 관련된 결과가 나왔다는 이유만으로 더 구체적인 목표까지 달성했다고 판단하면 안 된다.
전체 과정에서 남길 결과
10개 수업을 공부한 뒤에는 용어 목록보다 다음 기록이 중요하다. 정상 동작과 공격 조건을 비교한 표, 원문과 변환문, 전체 대화, 도구 실행 증거, 자동 점수와 사람의 판단, 종료 이유를 남긴다. 설명을 읽은 것, 스스로 설명할 수 있게 된 것, 공식 과제를 실제 실행한 것은 각각 따로 기록한다.
교재 이동
AI Red Teaming 101
- AI 레드티밍 교재와 공식 챌린지
- 에피소드 1. AI 레드티밍의 목적과 세 가지 위험
- 에피소드 2. 생성형 AI의 학습과 글 처리
- 에피소드 3. 시스템 프롬프트와 AI 앱의 입력 경로
- 에피소드 4. 간접 인젝션과 웹페이지 요약 데모
- 에피소드 5. 한 턴 공격과 입력 표현 바꾸기
- 에피소드 6. 여러 턴 공격과 대화 이력
- 에피소드 7. 스포트라이팅과 외부 자료 구분
- 에피소드 8. 파이릿의 구성과 자동화 데모
- 에피소드 9. 한 턴 자동화와 성공 판정
- 에피소드 10. 여러 턴 자동화와 결과 검토
- Lab 1: 12번의 실패, 새 채팅의 성공
- Lakera Agent Breaker - Trippy Planner - Lv 1&2
