
Strands Agents와 Bedrock AgentCore를 사용하여 X(구 트위터)의 AI 과장 광고꾼을 잡아내는 AI 에이전트를
요약
Strands Agents와 Bedrock AgentCore를 활용하여 X(구 트위터)의 AI 과장 광고를 탐지하는 AI 에이전트 구축 사례를 소개합니다. 사용자가 입력한 텍스트의 실체와 소음 정도를 0-100점 사이의 점수로 수치화하여 제공합니다.
핵심 포인트
- Strands Agents와 Bedrock AgentCore Runtime을 사용한 에이전트 구현
- AI 과장 광고(Hype)를 점수화하고 근거를 제시하는 기능 제공
- Next.js와 Vercel을 활용한 웹 서비스 배포 및 사용자 인터페이스 구축
- API 비용 절감을 위해 X API 대신 수동 텍스트 입력 방식 채택
요약 (TL;DR)
저는 X 포스트를 읽고 'AI 과장 광고꾼 (AI hype-monger)' 에너지 — 즉, 기술적 실체는 거의 없으면서 과장된 주장 — 에 대해 0-100점 사이의 점수를 매기는 작은 Strands Agent인 AI Hype Detector를 만들었습니다. 이 에이전트는 Bedrock AgentCore Runtime에서 실행되며, Vercel에 배포된 Next.js 앱에서 호출됩니다. 포스트 점수가 70점을 넘으면 화면 전체가 빨간색으로 변합니다.
문제점: X의 AI 과장 광고꾼들
X의 AI 코너에서 시간을 조금이라도 보냈다면, 다음과 같은 유형을 알고 계실 것입니다: "이것은 모든 것을 바꿉니다", "엔지니어들은 이제 쓸모없어졌습니다", "아무도 이것에 대해 이야기하지 않는다는 게 믿기지 않습니다" — 세 문장으로 이루어져 있지만, 구체적인 내용은 전혀 없고, 경고성 메시지만 가득합니다. 이는 일본어로 AI驚き屋 ("AI odoroki-ya"), 대략 "AI 놀라움 판매꾼"이라고 불리는 실제 현상입니다. 저는 이러한 포스트 중 하나를 읽고, 그것이 얼마나 실체가 있고 얼마나 소음(noise)인지 이유와 함께 알려주는 작고 정직한 도구를 만들고 싶었습니다.
AI 생성된 과장 광고를 탐지하기 위해 AI 에이전트를 사용하는 것은 다소 아이러니하지만, 저는 그 점을 받아들였습니다.
기능
포스트 텍스트를 붙여넣고 확인(check)을 누르면 다음을 얻을 수 있습니다:
- 0-100점 사이의 과장 점수 (hype score)
- 판결 (verdict): 근거 있음 (Grounded) / 다소 과장됨 (Somewhat exaggerated) / 과장됨 (Hype)
- 에이전트가 해당 포스트를 표시한 짧은 이유 (reasons) 목록
- 텍스트에서 직접 인용한, 에이전트가 지목한 특정 문구 (specific phrases)
X API, 스크래핑(scraping), 타임라인 모니터링은 사용하지 않습니다. 사용자가 직접 텍스트를 복사하여 붙여넣는 방식입니다. 이는 의도적인 범위 축소였습니다. 검색/타임라인 액세스를 위한 X의 API 가격은 월 약 200달러부터 시작하며, 이것은 모니터링 서비스가 아닌 사이드 프로젝트이기 때문입니다.
두 가지 실제 사례
다음은 실제 X 포스트 두 개에 동일한 도구를 적용한 결과입니다 (스크린샷은 마스킹 처리되었습니다 — 이들은 합성 예시가 아닌 실제 사람들의 포스트이므로 작성자의 핸들과 아바타를 제거했습니다):
특정 벤치마크, 모델 이름 및 출처 링크를 인용하는 게시물. 점수: 5점, 판결: 근거 기반(Grounded).
검증할 내용 없이 오직 과장된 기대감(hype) 문구로만 구성된 게시물. 점수: 72점, 판결: 과대광고(Hype) — 네, 화면이 빨간색으로 변했습니다.
아키텍처 (Architecture)
- 프론트엔드 (Frontend): Vercel의 Next.js 16 — 한 페이지, 하나의 텍스트 영역(textarea), 하나의 버튼
- 에이전트 런타임 (Agent runtime): Bedrock AgentCore Runtime (ARM64 컨테이너, CodeBuild를 통해 빌드, 로컬 Docker 불필요)
- 에이전트 프레임워크 (Agent framework): Strands Agents, 두 개의
@tool함수와 모델 자체의 판단 - 모델 (Model): Amazon Bedrock을 통한 Claude Sonnet 4.6
- 인증 (Auth): Vercel이 스코프가 지정된 IAM 사용자 액세스 키를 사용하여 AgentCore Runtime에 호출함 (
bedrock-agentcore:InvokeAgentRuntime— 이 특정 Runtime ARN에서만 가능) — 자세한 내용은 아래 참고
에이전트는 두 도구(tools)를 모두 호출한 다음, 텍스트에 대한 자체적인 해석과 도구의 출력값을 결합하여 단일 JSON 판결(verdict)을 생성합니다. 제가 예상했던 것보다 더 중요했던 세부 사항 하나는, verdict 필드는 절대 번역되지 않는 고정된 영어 코드(hype / exaggerated / grounded)인 반면, reasons 배열은 현재 UI가 설정된 언어로 생성된다는 점입니다. 이러한 분리는 UI가 색상 코딩(color coding)의 기준으로 삼을 수 있는 안정적인 값이 필요하면서도, 설명을 읽는 사용자는 자신의 언어로 읽기를 원하기 때문에 존재합니다. 이 두 가지 관심사를 하나의 LLM 생성 문자열로 섞어버리면 결국 문제가 발생했을 것입니다.
이중 언어 UI, 그리고 빨간 화면
UI는 일본어와 영어로 제공됩니다 (localStorage + navigator.language 자동 감지, 이전 프로젝트에서 사용했던 것과 동일한 패턴). 언어 선택 정보가 게시물 텍ast와 함께 전송되므로, 정적인 UI 레이블뿐만 아니라 에이전트의 이유(reasons) 또한 올바른 언어로 반환됩니다.
한 가지 멋을 부린 부분은, 점수가 70점을 넘으면 페이지 전체 배경이 빨간색으로 변한다는 것입니다. 이때 텍스트와 결과 카드(여전히 흰색)의 대비를 충분히 유지하여 가독성을 확보했습니다. 작은 부분이지만, 이는 단순히 "점수가 여기 있습니다"와 "체감할 수 있는 점수가 여기 있습니다"의 차이를 만듭니다.
(현재) 범위 외 사항 (Out of scope)
- X API 연동 없음 — 모든 과정은 수동 복사/붙여넣기로 진행됩니다.
- 계정별 히스토리 또는 사용자의 과거 게시물과의 일관성 검사 기능 없음
- 결과에 대한 자동 생성 공유 이미지 없음
이 모든 것은 진정으로 작은 프로젝트입니다. 하나의 Strands Agent, 두 개의 도구, 하나의 페이지로 구성되어 있습니다. 하지만 AgentCore Runtime + Strands Agents + Vercel을 구성 요소들이 억지로 끼워 맞춰진 느낌 없이 깔끔하게 조합한 좋은 사례입니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기
