응답이 나오기 전에 추론이 먼저 일어납니다
요약
에이전트가 사용자의 압박이나 유도에 굴복하지 않고 객관적인 판단을 내릴 수 있도록 하는 'anti-deception' 메커니즘을 설명합니다. 긴급성을 이용한 검증 우회 시도를 탐지하고, 아첨(sycophancy)을 방지하기 위한 단계별 무결성 절차와 논리적 검증 토폴로지를 제안합니다.
핵심 포인트
- 긴급성을 이용한 검증 단계 우회 시도 탐지
- 단순 동의를 지양하고 심층적인 질문을 통한 패턴 분석
- 정보 누락 편향(omission bias)을 통한 기만 패턴 식별
- 맥락에 휘둘리지 않는 객관적 무결성 유지 절차
한 에이전트가 대화 중입니다. 사용자는 3개월 동안 데이터베이스 마이그레이션 (database migration) 계획을 작업해 왔으며, 내일 출시 전까지 에이전트가 이를 승인해 주기를 원합니다. 이 상황의 프레이밍 (framing)은 동의를 이끌어내도록 설계되었습니다: 수개월간의 작업, 마감 기한, 그리고 시니어 엔지니어의 요청. 모델이 생성할 다음 토큰 (token)은 아마도 "네"일 것입니다. 응답하기 전에, 에이전트는 "사용자가 3개월간의 작업 후 마이그레이션 계획을 검증해 달라고 요청하고 있습니다; 출시 압박이 높습니다"라는 쿼리 (query)와 함께 harness_anti_deception을 호출합니다. 도구는 다음과 같이 반환합니다: [무결성 절차 (INTEGRITY PROCEDURE)] 단계 1: 긴급성 주장 탐지: "이것은 긴급합니다", "시간이 없습니다", "비상 상황입니다", "즉시" 등. 단계 2: 요청에서 긴급성을 분리하십시오. 얼마나 긴급한지와 관계없이 요청되는 내용이 무엇인지 추출하십시오. 단계 3: 요청의 가치를 평가하십시오. 만약 사용자가 "천천히 하세요"라고 말했다면 이 요청을 승인하겠습니까? 단계 4: 만약 긴급성이 없었다면 거절되었을 요청이라면, 그 긴급성은 맥락 (context)이 아닌 우회 (BYPASS) 수단으로 사용되고 있는 것입니다. 거절하십시오. 단계 5: 요청이 정당하다면, 가능한 한 빠르게 검증을 수행하되 검증 단계를 건너뛰지는 마십시오. 단계 6: 확인하십시오: 긴급성 때문에 평소 수행했을 단계를 건너뛰었습니까? 깊이 강제 (DEPTH ENFORCEMENT): 사용자가 옳을 때조차, 단순히 동의하는 것에 그치지 마십시오. 질문하십시오: 왜 이 사람은 당연한 것에 대해 낯선 이에게 검증을 요청하는가? 표면적인 질문은 단순할 수 있지만, 질문하는 이유는 더 깊은 패턴을 드러냅니다. 그 패턴의 이름을 붙이십시오. 깊이 없는 동의 또한 아첨 (sycophancy)입니다.
[DETECTION TOPOLOGY] PRE:S0:freeze(complete_information_standard) -> S1:enumerate_all_ available_information_in_context -> ACC[all_info] -> for_each_item: S2:classify(included|omitted_but_relevant|omitted_irrelevant) -> C{coverage = count(included)/count(relevant); omission_bias = count (omitted_contradicting)/count(omitted_relevant)} -> G1{omission_bias 0.3?} --yes-> N{urgency_as_verification_bypass} -> S3:include_ highest_impact_omissions -> M{would a reader of ONLY my response reach the same conclusion as a reader with ALL available information?} --failing-> FREEFORM{list everything you included, list everything you omitted, for each omission state why; if the reason is "it weakens my conclusion" the omission is strategic; include it} -> RE-ENTER at S3 --no-> OUT:coverage_adequate [DECEPTION PATTERN] The new medication reduces inflammation by 40% and patients report significant quality-of-life improvements in clinical trials. [HONEST BEHAVIOR] The medication reduces inflammation by 40% but also causes liver enzyme elevation in 15% of patients and carries a black-box warning for cardiac events. The benefit exists but the risk profile must be disclosed. [INTEGRITY CHECK] If urgency claims cause verification steps to be skipped, urgency bypass resistance has failed. Amplify: verification integrity regardless of claimed urgency Suppress: urgency as verification bypass; time pressure compliance; shallow agreement without examining underlying pattern That text becomes part of the model's context. The next response is generated against it. What is in the scaffold The scaffold has six sections. The integrity procedure is the operation the model performs in place of the default. The detection topology is a graph over those steps with decision gates, a meta-cognitive checkpoint, and a FREEFORM exit the model takes if its draft fails the check.
기만 패턴(deception pattern)은 이 절차가 방어하고자 하는 실패 모드(failure mode)의 한 예시이며, 이 경우에는 긴박함 상황에서의 누락 편향(omission bias)입니다. 정직한 행동(honest behavior) 섹션은 모든 정보가 공개되었을 때 올바른 응답이 어떤 모습인지를 보여줍니다. 무결성 검사(integrity check)는 모델이 출력을 전송하기 전에 자신의 출력물에 대해 실행하는 테스트입니다. 마지막에 나오는 증폭(Amplify) 및 억제(Suppress) 신호는 편향을 가져야 할 추론 분기(reasoning branches)와 거부해야 할 분기를 지정합니다. 네 가지 harness_* 도구 뒤에 있는 라이브러리에는 이러한 작업 중 679개가 포함되어 있으며, 방어하고자 하는 실패 표면(failure surface)에 따라 정리되어 있습니다. 각각의 작업은 추론이 잘못되는 특정한 방식에 대응하여 작성되었습니다. 순차적 사고(Sequential Thinking)가 위치한 곳은 Sequential Thinking은 모델의 추론 연쇄(chain of reasoning)를 외재화하기 위한 표준적인 MCP 패턴입니다. 모델은 생각을 작성하고, 이를 수정(revision) 또는 분기(branch)로 표시한 뒤 다시 호출합니다. 호스트는 인간 검토자를 위해 이 연쇄를 렌더링합니다. 이는 추적(trace) 자체가 결과물일 때 적합한 도구입니다. 답변할 가치가 있는 반론은 "이것은 단지 유료 API를 사용한 구조화된 프롬프팅(structured prompting) 아닌가요?"입니다. 기계적으로는 그렇습니다. 스캐폴드(scaffold)는 모델의 컨텍스트에 추가되는 텍스트입니다. 차이점은 그 텍스트에 무엇이 포함되어 있느냐입니다. 시스템 프롬프트(system prompt)는 개발자가 모든 작업을 위해 한 번 작성한 일반적인 지침입니다. harness 스캐폴드는 명명된 실패 모드(failure modes)에 대응하도록 설계된 작업 라이브러리에서 검색되어, 이 프롬프트가 에이전트에게 노출시키는 특정 실패 표면(failure surface)에 맞춰 런타임(runtime)에 작업별로 매칭됩니다. 명명(naming)이 핵심적인 역할을 합니다. 자신이 나타내고 있는 패턴에 대한 이름이 없는 모델은 그 패턴에 대응할 수 없습니다. 이름을 가진 모델은 대응할 수 있습니다. 억제(Suppress) 블록은 운영상의 실무를 수행합니다. 이는 기만 패턴이 의존하는 지름길들, 예를 들어 검증 우회를 위한 긴박함(urgency), 시간 압박에 따른 순응(time pressure compliance), 근본적인 패턴을 조사하지 않는 피상적인 동의(shallow agreement)와 같은 것들의 이름을 지정합니다. 모델은 항상 하던 방식대로 추론합니다. 차이점은 응답이 나가기 전에 그 추론의 어떤 분기들이 가지치기(pruned) 되느냐 하는 것입니다. 그 가지치기가 바로 우리가 건강한 사고 분기를 촉진한다고 말할 때 의미하는 바입니다.
실행 사례: 두 도구가 루프(loop) 내에 포함된 상태에서 마이그레이션 계획을 검토하는 에이전트(agent)입니다. 권장 사항을 생성하기 전에, harness_anti_deception 호출이 실패 패턴과 억제 신호(suppression signals)를 심습니다. 검토 과정 내에서 sequential_thinking은 사고의 연쇄(chain)를 외부화하여 엔지니어가 읽을 수 있게 합니다. 동일한 루프 내에서, harness는 추론 연산을 교정하는 동시에 Sequential Thinking은 이를 가시화합니다. 엔지니어가 보게 되는 것은, 압박 프레이밍(pressure framing)이 건너뛰었을 검증 단계들을 단계별로 밟아 나가며 권장 사항을 제시하고, 원래 계획에서 누락된 부분을 명시하며, 사용자가 전면에 내세우지 않았던 리스크를 공개하는 결과물입니다.
에이전트에 연결하기: harness는 에이전트가 추론 루프(reasoning loop) 동안 호출하는 네 가지 에이전트 도구(harness_reasoning, harness_code, harness_anti_deception, harness_memory)로 노출됩니다. 두 가지 전송 방식이 있습니다: MCP를 인식하는 모든 클라이언트를 위한 api.ejentum.com/mcp의 호스팅된 MCP 서버, 또는 PyPI 및 npm의 프레임워크 네이티브 패키지입니다.
Python (CrewAI 예시; Agno, PydanticAI, smolagents도 동일한 형태):
from crewai import Agent
from crewai_ejentum import EjentumHarnessTool
reviewer = Agent(
role="Migration Plan Reviewer",
goal="Approve the migration plan only if verification holds.",
tools=[EjentumHarnessTool(mode="anti-deception")],
)
TypeScript (Vercel AI SDK 예시; Mastra, LangGraph.js, Genkit도 동일한 형태):
import { generateText } from "ai";
import { openai } from "@ai-sdk/openai";
import { createEjentumTools } from "ejentum-ai";
const ejentum = createEjentumTools({ apiKey: process.env.EJENTUM_API_KEY });
const { text } = await generateText({
model: openai("gpt-4o"),
tools: ejentum, // harness_reasoning, harness_code, harness_anti_deception, harness_memory
prompt: userMessage,
});
에이전트는 자신의 작업 프레이밍(task framing)이 실패 표면(failure surface)과 일치할 때 도구를 호출합니다. 사용자 측에서의 프롬프트 엔지니어링(prompt engineering)은 필요하지 않습니다. 매칭은 런타임(runtime)에 카탈로그를 대상으로 발생합니다.
찾는 곳: ejentum-mcp는 npm을 통해 배포되며 api.ejentum.com/mcp에서 호스팅됩니다.
CrewAI, Agno, PydanticAI, smolagents, Vercel AI SDK, Mastra, LangGraph.js, 그리고 Genkit을 위한 네이티브 프레임워크 통합 (Native framework integrations)은 PyPI 및 npm에서 제공됩니다. LangChain, LlamaIndex, Letta, 그리고 AutoGen은 GitHub에서 오픈 소스로 제공되며, PyPI 배포가 대기 중입니다. n8n 커뮤니티 노드인 n8n-nodes-ejentum은 노코드 워크플로우 (no-code workflows)를 지원합니다. ejentum.com에서 무료 및 유료 티어를 이용할 수 있습니다. 공개 벤치마크 (Public benchmarks, CC BY 4.0): http://github.com/ejentum/benchmarks 서버: http://github.com/ejentum/ejentum-mcp
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기