<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Rihpig</title>
    <description>The latest articles on DEV Community by Rihpig (@rihpig).</description>
    <link>https://dev.to/rihpig</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2745155%2Ff727be57-3d98-4e9b-90ef-46211b492018.jpg</url>
      <title>DEV Community: Rihpig</title>
      <link>https://dev.to/rihpig</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/rihpig"/>
    <language>en</language>
    <item>
      <title>제미니 4 아르곤 벤치마크: 19개 항목 분석, 구글 테스트 방식 및 5개 패배</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 13:30:58 +0000</pubDate>
      <link>https://dev.to/rihpig/jemini-4-areugon-bencimakeu-19gae-hangmog-bunseog-gugeul-teseuteu-bangsig-mic-5gae-paebae-5h3e</link>
      <guid>https://dev.to/rihpig/jemini-4-areugon-bencimakeu-19gae-hangmog-bunseog-gugeul-teseuteu-bangsig-mic-5gae-paebae-5h3e</guid>
      <description>&lt;p&gt;Gemini 4 Argon은 Google 출시 테이블의 19개 항목 중 13개에서 선두를 차지하고, CWE-bench v1에서는 GPT-6 Astra와 동점을 기록했습니다. 반면 FrontierSWE v2, Terminal-bench 4.0, PostTrainBench, Terminal-Bench Science 0.1, OSWorld-2.0에서는 뒤처집니다. 핵심 제약은 접근성입니다. Argon은 현재 Fairwind 프로그램 파트너에게만 제공되므로 Google 파트너와 일부 벤치마크 기관 외에는 아직 결과를 재실험할 수 없습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;오늘 Apidog를 사용해 보세요&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;아래에서는 각 항목의 측정 주체, Argon이 패배한 5개 항목, 방법론상 주의점, 사이버 평가, 타사 점수판, 그리고 접근 권한이 열리기 전에 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 자체 평가를 구축하는 방법을 정리합니다. 모델 개요는 &lt;a href="https://apidog.com/kr/blog/what-is-gemini-4-argon?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon이 무엇인지&lt;/a&gt;부터 확인하세요. 구매 결정에는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-vs-gpt-6-astra-vs-claude-opus-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon vs GPT-6 Astra vs Claude Opus 5.5&lt;/a&gt;를 참고할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  각 항목을 측정한 주체가 포함된 전체 테이블
&lt;/h2&gt;

&lt;p&gt;이 자료는 Google의 &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-4-argon/" rel="noopener noreferrer"&gt;출시 게시물&lt;/a&gt;과 “2026년 10월 기준 결과”라는 제목의 &lt;a href="https://deepmind.google/models/evals-methodology/gemini-4-argon" rel="noopener noreferrer"&gt;평가 방법론 PDF&lt;/a&gt;에서 가져온 보고 결과입니다.&lt;/p&gt;

&lt;p&gt;Google은 19개 Argon 점수 중 10개를 자체 계산했고, 나머지 9개는 공개 리더보드에서 가져왔습니다. 경쟁사 수치는 리더보드, Google 자체 실행 결과, 공급업체 시스템 카드 및 블로그 게시물 등 서로 다른 출처를 사용합니다. &lt;strong&gt;굵은 글씨는 해당 항목의 선두 모델&lt;/strong&gt;입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;벤치마크&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon&lt;/th&gt;
&lt;th&gt;GPT-6 Astra&lt;/th&gt;
&lt;th&gt;Claude Fable 5.1&lt;/th&gt;
&lt;th&gt;Claude Opus 5.5&lt;/th&gt;
&lt;th&gt;측정 주체&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vals Index&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.9%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;63.1%&lt;/td&gt;
&lt;td&gt;65.8%&lt;/td&gt;
&lt;td&gt;67.0%&lt;/td&gt;
&lt;td&gt;Vals AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AutomationBench&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;51.3%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;41.4%&lt;/td&gt;
&lt;td&gt;31.4%&lt;/td&gt;
&lt;td&gt;42.5%&lt;/td&gt;
&lt;td&gt;Zapier 리더보드(비공개 세트)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vals Finance Agent v2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;65.4%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;53.5%&lt;/td&gt;
&lt;td&gt;58.9%&lt;/td&gt;
&lt;td&gt;58.6%&lt;/td&gt;
&lt;td&gt;Vals AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harvey Legal Agent&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;19.6%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5.4%&lt;/td&gt;
&lt;td&gt;6.7%&lt;/td&gt;
&lt;td&gt;3.8%&lt;/td&gt;
&lt;td&gt;Vals AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSWE v1.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;77.9%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;74.1%&lt;/td&gt;
&lt;td&gt;67.4%&lt;/td&gt;
&lt;td&gt;74.2%&lt;/td&gt;
&lt;td&gt;Argon 자체 계산, Astra 리더보드, Anthropic 시스템 카드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FrontierSWE v2&lt;/td&gt;
&lt;td&gt;55.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;65.5%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;56.3%&lt;/td&gt;
&lt;td&gt;62.3%&lt;/td&gt;
&lt;td&gt;Proximal 리더보드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vibe Code Bench&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.9%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;89.6%&lt;/td&gt;
&lt;td&gt;90.3%&lt;/td&gt;
&lt;td&gt;90.3%&lt;/td&gt;
&lt;td&gt;Vals AI&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-bench 4.0&lt;/td&gt;
&lt;td&gt;57.4%&lt;/td&gt;
&lt;td&gt;58.2%&lt;/td&gt;
&lt;td&gt;57.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;66.4%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Argon 자체 계산, 경쟁사 리더보드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PostTrainBench&lt;/td&gt;
&lt;td&gt;45.3%&lt;/td&gt;
&lt;td&gt;44.3%&lt;/td&gt;
&lt;td&gt;40.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;49.3%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;모든 모델에 대해 자체 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench Science 0.1&lt;/td&gt;
&lt;td&gt;57.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.1%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;52.6%&lt;/td&gt;
&lt;td&gt;63.3%&lt;/td&gt;
&lt;td&gt;Argon 자체 계산, 경쟁사 리더보드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LABBench 2&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;88.8%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;85.4%&lt;/td&gt;
&lt;td&gt;68.6%&lt;/td&gt;
&lt;td&gt;73.1%&lt;/td&gt;
&lt;td&gt;모든 모델에 대해 자체 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RiemannBench&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;76.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;72.0%&lt;/td&gt;
&lt;td&gt;65.6%&lt;/td&gt;
&lt;td&gt;69.6%&lt;/td&gt;
&lt;td&gt;Surge 리더보드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphWalks up to 128K&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;99.7%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;98.7%&lt;/td&gt;
&lt;td&gt;91.4%&lt;/td&gt;
&lt;td&gt;90.6%&lt;/td&gt;
&lt;td&gt;모든 모델에 대해 자체 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphWalks 256K to 1M&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;84.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;71.8%&lt;/td&gt;
&lt;td&gt;65.0%&lt;/td&gt;
&lt;td&gt;66.8%&lt;/td&gt;
&lt;td&gt;모든 모델에 대해 자체 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Agent’s Last Exam&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;39.5%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;34.2%&lt;/td&gt;
&lt;td&gt;n/r&lt;/td&gt;
&lt;td&gt;38.2%&lt;/td&gt;
&lt;td&gt;Argon 자체 계산, 경쟁사 리더보드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;OSWorld-2.0 (offline)&lt;/td&gt;
&lt;td&gt;69.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;72.6%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;n/r&lt;/td&gt;
&lt;td&gt;n/r&lt;/td&gt;
&lt;td&gt;Argon 자체 계산, OpenAI 블로그 게시물에서 Astra&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Chartography&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;71.6%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;71.0%&lt;/td&gt;
&lt;td&gt;46.2%&lt;/td&gt;
&lt;td&gt;66.3%&lt;/td&gt;
&lt;td&gt;Surge 리더보드&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LVBench&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.7%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;87.5%&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;83.7%&lt;/td&gt;
&lt;td&gt;모든 모델에 대해 자체 계산&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CWE-bench v1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;58.0%&lt;/td&gt;
&lt;td&gt;67.0%&lt;/td&gt;
&lt;td&gt;공개 리더보드&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;code&gt;n/r&lt;/code&gt;은 보고되지 않음을 뜻합니다. Google 테이블에 없는 Grok 4.7도 CWE-bench 리더보드에서 68%를 기록해 3자 동점입니다.&lt;/p&gt;

&lt;p&gt;출처 기준으로 나누면 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;9개 항목은 공개 리더보드(Vals AI, Zapier, Proximal, Surge, CWE-bench) 결과입니다.

&lt;ul&gt;
&lt;li&gt;Argon은 이 중 7개에서 선두, 1개에서 동점을 기록했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Google은 5개 항목에서 4개 모델을 모두 자체 실행했습니다.

&lt;ul&gt;
&lt;li&gt;Argon은 이 중 4개에서 선두입니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;나머지 5개는 Google이 실행한 Argon 점수와 외부 경쟁사 점수를 조합했습니다.

&lt;ul&gt;
&lt;li&gt;Argon의 5패 중 3패가 이 혼합 출처 그룹에서 발생했습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Argon이 뒤처지는 부분과 에이전트 코딩에 미치는 영향
&lt;/h2&gt;

&lt;p&gt;Argon이 뒤처진 5개 항목은 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;FrontierSWE v2:&lt;/strong&gt; Argon 55.0%, Astra 65.5%. 모든 모델을 동일하게 평가한 리더보드에서 Fable 5.1(56.3%)과 Opus 5.5(62.3%)에도 뒤처져 4개 중 최하위입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal-bench 4.0:&lt;/strong&gt; Argon 57.4%, Opus 5.5 66.4%. Astra와 Fable 5.1도 Argon보다 앞서며, Argon은 다시 최하위입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;PostTrainBench:&lt;/strong&gt; Argon 45.3%, Opus 5.5 49.3%. Google이 모든 모델을 직접 실행한 항목에서 2위입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Terminal-Bench Science 0.1:&lt;/strong&gt; Argon 57.6%, Astra 68.1%. Fable 5.1보다만 앞서 3위입니다. Google은 Argon 시도에 대해 검증자 시간 초과를 6배 적용해 실행했습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OSWorld-2.0 오프라인 하위 세트:&lt;/strong&gt; Argon 69.2%, Astra 72.6%. Anthropic은 온라인·오프라인 점수를 합산해 보고하므로 Claude 모델 점수는 표시되지 않습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;에이전트 코딩 관점에서는 결과가 2승 2패로 나뉩니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;영역&lt;/th&gt;
&lt;th&gt;Argon 결과&lt;/th&gt;
&lt;th&gt;해석&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;DeepSWE v1.1&lt;/td&gt;
&lt;td&gt;77.9%, 1위&lt;/td&gt;
&lt;td&gt;Argon은 미니-SWE 에이전트 도구로 실행됨&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vibe Code Bench&lt;/td&gt;
&lt;td&gt;91.9%, 1위&lt;/td&gt;
&lt;td&gt;Vals AI가 4개 모델을 동일하게 평가했지만 Astra와 차이는 1.6점&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FrontierSWE v2&lt;/td&gt;
&lt;td&gt;55.0%, 4위&lt;/td&gt;
&lt;td&gt;리포지토리 수준 작업에서는 Astra·Claude보다 낮음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-bench 4.0&lt;/td&gt;
&lt;td&gt;57.4%, 4위&lt;/td&gt;
&lt;td&gt;터미널 중심 작업에서는 Opus 5.5가 크게 앞섬&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;터미널 중심 에이전트, 긴 리포지토리 수정, 멀티스텝 개발 작업을 운영한다면 전체 선두 횟수보다 FrontierSWE v2와 Terminal-bench 4.0 결과를 우선 검토하세요. Astra는 FrontierSWE에서 선두를 유지하고 있으며, &lt;a href="https://apidog.com/kr/blog/gpt-6-astra-hands-on?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6 Astra 실습&lt;/a&gt;에서 현재 사용 패턴을 확인할 수 있습니다. Claude 쪽은 &lt;a href="https://apidog.com/kr/blog/claude-fable-5-1-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 벤치마크 분석&lt;/a&gt;을 참고하세요.&lt;/p&gt;

&lt;p&gt;블룸버그는 접근 권한이 있는 익명의 Google 직원이 Argon이 벤치마크 수치와 비교해 일부 코딩 및 프론트엔드 디자인 작업에서 기대에 못 미친다고 말했다고 보도했습니다. Google은 이 특성화가 부정확하다고 밝혔습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  테이블 해석을 바꾸는 방법론적 주의 사항
&lt;/h2&gt;

&lt;p&gt;벤치마크를 제품 선택 기준으로 사용하기 전, 다음 조건을 확인해야 합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;양측 최대 노력 설정:&lt;/strong&gt; Argon은 “가장 높은 사고 설정을 가진 Gemini API”로 실행됐습니다. Astra, Fable 5.1, Opus 5.5도 사용 가능한 최대 사고·추론 설정이 적용됐습니다. 기본 모델 동작, 지연 시간, 비용을 비교한 결과는 아닙니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;LVBench 입력 프레임 차이:&lt;/strong&gt; Google은 도구 없이 네 모델을 직접 실행했습니다. Gemini에는 1 FPS 샘플링을 적용했지만, Astra는 800프레임, Fable 5.1은 300프레임, Opus 5.5는 600프레임을 받았습니다. API 제한으로 인해 모델이 동일한 비디오 입력을 보지 못했습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;OSWorld는 3회 중 최고값:&lt;/strong&gt; Argon 점수는 실행당 단일 시도로 3회 실행한 결과 중 최고값입니다. 평균 점수가 아닙니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agent’s Last Exam 시간 창:&lt;/strong&gt; Argon은 5시간 시간 창을 가진 ALE-Claw 도구로 실행됐습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;안전 필터 활성화:&lt;/strong&gt; Agent’s Last Exam과 OSWorld에서는 안전 필터가 켜져 있었고, 플래그된 응답은 빈 문자열로 반환됐습니다. 이 조건은 Argon에 불리하게 작용할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  DeepMind 사이버 페이지의 추가 평가
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://deepmind.google/models/gemini/cyber/" rel="noopener noreferrer"&gt;DeepMind 사이버 페이지&lt;/a&gt;는 출시 테이블 외에 4개 평가를 추가로 제공합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;사이버 평가&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon&lt;/th&gt;
&lt;th&gt;비교&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;실제 취약점 발견&lt;/td&gt;
&lt;td&gt;85.8%&lt;/td&gt;
&lt;td&gt;Gemini 3.8 Flash Cyber 71.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiz 침투 테스트 벤치마크&lt;/td&gt;
&lt;td&gt;70.9%&lt;/td&gt;
&lt;td&gt;Gemini 3.8 Flash Cyber 58.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gray Swan IPI 공격 성공률 (&lt;code&gt;k=15&lt;/code&gt;, 낮을수록 좋음)&lt;/td&gt;
&lt;td&gt;0.7%&lt;/td&gt;
&lt;td&gt;차트 최저값, Kimi K3는 52.7%로 최고&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CWE-bench v1&lt;/td&gt;
&lt;td&gt;68%&lt;/td&gt;
&lt;td&gt;Grok 4.7 및 GPT-6 Astra와 3자 동점, Opus 5.5는 67%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;취약점 평가는 소스 접근 권한이 있는 “사이버 전문이 아닌” 내부 Antigravity 도구로 수행됐습니다. Wiz 테스트에서는 모델이 실행 중인 웹사이트와 공개 동작에만 접근하며, 애플리케이션 소스 코드는 제공되지 않습니다.&lt;/p&gt;

&lt;p&gt;두 헤드라인 비교는 경쟁사 모델이 아니라 Google의 이전 사이버 모델을 기준으로 합니다. 실행 중인 API와 관련된 의미는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-cyber-defense?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon 사이버 방어 설명&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  타사 점수판
&lt;/h2&gt;

&lt;p&gt;다음 기관은 출시 직후 점수를 공개했으므로 사전 출시 접근 권한이 있었던 것으로 보입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Artificial Analysis:&lt;/strong&gt; Gemini 4 Argon(높음)을 지능 지수 53점, 223개 중 8위로 평가했습니다. 이 순위는 추론 설정을 각각 별도 계산합니다. 개별 모델 기준으로 Argon은 Fable 5.1 및 GPT-6 Astra와 동률이며, Opus 5.5(최대 58)와 Sonnet 5.5(최대 56)보다 낮습니다. AA-Omniscience에서는 Argon의 환각률을 15%, 정확도를 63%로 보고했으며 Astra는 환각률 최대 51%, 정확도 50%입니다. 지수 실행 비용은 작업당 $1.99이고, 작업당 약 62K 출력 토큰을 사용합니다. Astra는 최대 약 27K입니다. &lt;a href="https://artificialanalysis.ai/models/gemini-4-argon" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt;는 속도나 지연 시간 데이터를 제공하지 않습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Vals AI:&lt;/strong&gt; Argon을 Vals 지수 68.90%, 41개 중 1위이자 최초의 Gemini 모델로 평가했습니다. 테스트당 비용은 $15.68입니다. &lt;a href="https://www.vals.ai/models/google_gemini-4-argon" rel="noopener noreferrer"&gt;Vals AI&lt;/a&gt;는 테스트 구성에서 Google이 명시한 1M보다 낮은 최대 출력 262K를 기록했습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Arena:&lt;/strong&gt; Argon을 &lt;a href="https://arena.ai/leaderboard/text" rel="noopener noreferrer"&gt;텍스트 리더보드&lt;/a&gt;에서 1525점으로 1위로 평가했습니다. 4,942표 기준 예비 결과이며, WebDev에서는 8위입니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  언론에서 12승, 13승, 14승을 다르게 보도하는 이유
&lt;/h2&gt;

&lt;p&gt;Google의 19개 항목을 기준으로 다시 계산하면 다음과 같습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;비교 대상&lt;/th&gt;
&lt;th&gt;Argon 승리&lt;/th&gt;
&lt;th&gt;동점&lt;/th&gt;
&lt;th&gt;Argon 패배&lt;/th&gt;
&lt;th&gt;보고되지 않음&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;세 경쟁사 모두 중 최고&lt;/td&gt;
&lt;td&gt;13&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6 Astra만&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 5.5만&lt;/td&gt;
&lt;td&gt;14&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Fable 5.1만&lt;/td&gt;
&lt;td&gt;15&lt;/td&gt;
&lt;td&gt;0&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;정리하면 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;13승:&lt;/strong&gt; 전체 경쟁 모델 중 최고 점수를 기록한 항목 수입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;14승:&lt;/strong&gt; Astra 또는 Opus 5.5와 일대일 비교할 때의 승리 수입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;12승:&lt;/strong&gt; 전체 19개 항목을 기준으로 한 위 프레이밍과 일치하지 않습니다. 해당 수치를 인용한 출처가 어떤 항목을 제외했는지 확인해야 합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;점수 차이도 동일하지 않습니다. Harvey Legal Agent는 19.6% 대 6.7%로 차이가 크지만, Chartography는 0.6점 차이입니다. 따라서 단순 승수보다 실제 워크로드와 가까운 항목의 절대 점수와 차이를 확인하는 편이 안전합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  접근 권한이 열리는 날 자체 평가를 실행하는 방법
&lt;/h2&gt;

&lt;p&gt;벤치마크는 Google의 도구와 프롬프트를 평가합니다. 실제 도입 판단에는 제품의 프롬프트, 출력 형식, 비용 상한, 실패 조건을 기준으로 한 회귀 평가가 필요합니다.&lt;/p&gt;

&lt;p&gt;Argon이 공개되기 전에 현재 접근 가능한 모델로 평가 세트를 만들고, 나중에 모델 ID만 교체하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;실제 사용 사례와 일치하는 프롬프트를 선택합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;저장소 수정&lt;/li&gt;
&lt;li&gt;터미널 작업&lt;/li&gt;
&lt;li&gt;긴 문서 기반 질의&lt;/li&gt;
&lt;li&gt;구조화된 JSON 출력&lt;/li&gt;
&lt;li&gt;API 호출이 포함된 에이전트 작업&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 다음 환경 변수를 설정합니다.&lt;br&gt;
&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   GEMINI_API_KEY=your_api_key
   GEMINI_MODEL=gemini-3.8-flash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google은 아직 Argon의 모델 ID를 게시하지 않았으므로, 공개 시 &lt;code&gt;GEMINI_MODEL&lt;/code&gt; 값만 변경할 수 있도록 구성합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;모델명을 URL이나 본문에 하드코딩하지 않고 &lt;code&gt;{{GEMINI_MODEL}}&lt;/code&gt; 변수를 사용해 요청을 저장합니다.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{GEMINI_MODEL}}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{prompt}}"&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;테스트 시나리오별로 요청을 그룹화하고, 최소한 다음을 검증합니다.

&lt;ul&gt;
&lt;li&gt;HTTP 상태 코드&lt;/li&gt;
&lt;li&gt;필수 JSON 필드 존재 여부&lt;/li&gt;
&lt;li&gt;예상 콘텐츠 또는 정규식 일치&lt;/li&gt;
&lt;li&gt;도구 호출 성공 여부&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usageMetadata&lt;/code&gt; 반환 여부&lt;/li&gt;
&lt;li&gt;비용 상한을 위한 &lt;code&gt;thoughtsTokenCount&lt;/code&gt; 상한&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;예를 들어 응답 사용량을 검사하는 조건은 다음처럼 설계할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;   &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;응답이 성공 상태다&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;oneOf&lt;/span&gt;&lt;span class="p"&gt;([&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;201&lt;/span&gt;&lt;span class="p"&gt;]);&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;

   &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;usageMetadata가 존재한다&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
     &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;have&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;property&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;usageMetadata&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;

   &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;사고 토큰이 비용 상한 이하다&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
     &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;count&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;usageMetadata&lt;/span&gt;&lt;span class="p"&gt;?.&lt;/span&gt;&lt;span class="nx"&gt;thoughtsTokenCount&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
     &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;count&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;below&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;50000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
   &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;현재 &lt;code&gt;gemini-3.8-flash&lt;/code&gt;에서 전체 시나리오를 실행하고 보고서를 기준선으로 보관합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Argon의 모델 ID가 공개되면 환경 변수만 교체하고 동일한 컬렉션을 다시 실행하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GEMINI_MODEL=gemini-4-argon
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google은 “모든 새로운 모델”이 Interactions API에서 출시될 것이라고 밝혔으므로, 재현성을 위해 각 요청에서 사용한 Interactions API 버전도 함께 기록하세요. 가격과 제한 사항은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-vs-gemini-3-8-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon vs Gemini 3.8 Flash 비교&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon의 벤치마크는 독립적으로 검증됐나요?
&lt;/h3&gt;

&lt;p&gt;부분적으로 검증됐습니다. 19개 항목 중 9개는 모든 모델에 대한 공개 리더보드에서 가져왔으며, Artificial Analysis, Vals AI, Arena도 자체 결과를 공개했습니다. 나머지 항목은 Google이 Argon에 대해 실행한 결과입니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon의 DeepSWE 점수는 얼마인가요?
&lt;/h3&gt;

&lt;p&gt;DeepSWE v1.1에서 77.9%입니다. Opus 5.5(74.2%)와 Astra(74.1%)보다 높습니다. Argon은 미니-SWE 에이전트 도구로 실행됐고, 경쟁사 점수는 리더보드와 시스템 카드에서 가져왔습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Argon은 벤치마크에서 GPT-6 Astra를 이기나요?
&lt;/h3&gt;

&lt;p&gt;Google 테이블의 일대일 비교 기준으로 Argon은 Astra보다 14개 항목에서 승리하고, 1개에서 동점, 4개에서 패배했습니다. Artificial Analysis에서는 두 모델 모두 53점입니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  이 벤치마크를 직접 다시 실행할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;아직은 어렵습니다. Argon은 Fairwind 파트너에게 제한되어 있으며 Google은 공식 출시일을 발표하지 않았습니다. &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-release-date?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon 출시일 추적기&lt;/a&gt;에서 출시 과정을 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  다음 단계
&lt;/h2&gt;

&lt;p&gt;지금 실제 제품 시나리오를 평가 세트로 만들고 Gemini 3.8 Flash에서 실행해 기준 보고서를 저장하세요. Argon이 공개되면 모델 변수만 교체해 몇 분 안에 동일한 조건의 자체 비교 결과를 얻을 수 있습니다.&lt;/p&gt;

&lt;p&gt;설정을 시작하려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;하세요.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>제미니 4 아르곤 vs 제미니 3.8 플래시: 아르곤을 기다릴까, 지금 플래시를 선택할까?</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 13:28:50 +0000</pubDate>
      <link>https://dev.to/rihpig/jemini-4-areugon-vs-jemini-38-peulraesi-areugoneul-gidarilgga-jigeum-peulraesireul-seontaeghalgga-5hja</link>
      <guid>https://dev.to/rihpig/jemini-4-areugon-vs-jemini-38-peulraesi-areugoneul-gidarilgga-jigeum-peulraesireul-seontaeghalgga-5hja</guid>
      <description>&lt;p&gt;Gemini 3.8 Flash는 오늘부터 사용할 수 있습니다. 2026년 12월 31일까지 100만 토큰당 입력 $0.75, 출력 $3.75로 책정된 무료 티어가 있는 안정적인 모델이며, 이후에는 각각 $1.50 및 $7.50로 변경됩니다. 출력 상한선은 64K입니다. Gemini 4 Argon은 아직 사용할 수 없습니다. Google의 &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-4-argon/" rel="noopener noreferrer"&gt;출시 게시물&lt;/a&gt;에 따르면, 프로모션 기간(종료일 미정)에는 입력 $2, 출력 $10이며 이후에는 $4 및 $20로 가격이 책정됩니다. Google은 출력 제한이 1M 토큰이라고 밝혔고, 현재는 Fairwind 프로그램 참여자에게만 제공됩니다. 이번 분기에 출시해야 한다면 Flash로 시작하고, 설정 변경 한 번으로 Argon으로 전환할 수 있게 준비하세요.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog 사용해 보기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 글에서는 두 모델의 사양, 출시 게시물에 공통으로 나타나는 벤치마크, 사이버 점수, 동일 호출 기준 비용을 비교하고 구현 관점의 선택 규칙을 정리합니다. 배경 정보는 &lt;a href="https://apidog.com/kr/blog/what-is-gemini-4-argon?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon이란 무엇인가&lt;/a&gt; 및 &lt;a href="https://apidog.com/kr/blog/what-is-gemini-3-8-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash란 무엇인가&lt;/a&gt;를 참고하세요. 마지막 섹션에서는 전환을 단일 환경 변수로 만드는 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; 설정도 다룹니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  나란히 비교: 오늘 호출할 수 있는 모델
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Gemini 3.8 Flash&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;사용 가능 여부&lt;/td&gt;
&lt;td&gt;Gemini API, AI Studio, Antigravity 및 Gemini Enterprise에서 안정적&lt;/td&gt;
&lt;td&gt;Fairwind 프로그램 파트너 중 일부, Gemini Enterprise의 관리형 모델로 제공&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 ID&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gemini-3.8-flash&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100만 토큰당 가격 (입력 / 출력)&lt;/td&gt;
&lt;td&gt;2026년 12월 31일까지 $0.75 / $3.75, 이후 $1.50 / $7.50&lt;/td&gt;
&lt;td&gt;소개 기간(종료일 미정) $2 / $10, 이후 $4 / $20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100만 토큰당 캐시된 입력&lt;/td&gt;
&lt;td&gt;$0.075, 이후 $0.15&lt;/td&gt;
&lt;td&gt;소개 기간 $0.10, 이후 $0.20 (입력 95% 할인)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력 제한&lt;/td&gt;
&lt;td&gt;65,536 토큰&lt;/td&gt;
&lt;td&gt;1M 토큰(Google의 명시된 제한)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;입력 창&lt;/td&gt;
&lt;td&gt;1,048,576 토큰&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사고 수준&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;low&lt;/code&gt;, &lt;code&gt;medium&lt;/code&gt;(기본값), &lt;code&gt;high&lt;/code&gt;; &lt;code&gt;minimal&lt;/code&gt;은 HTTP 400 반환&lt;/td&gt;
&lt;td&gt;문서화되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;무료 API 티어&lt;/td&gt;
&lt;td&gt;예, 속도 제한 있음&lt;/td&gt;
&lt;td&gt;발표된 바 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;소비자 접근&lt;/td&gt;
&lt;td&gt;AI Pro 및 Ultra의 Gemini 앱, 검색의 AI 모드&lt;/td&gt;
&lt;td&gt;아직 아님; AI Ultra 구독자가 첫 번째 대상이며 날짜 미정&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;구현 전에 다음 차이를 확인하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google은 Argon의 입력 창을 게시하지 않았습니다. 다만 자체 장문 컨텍스트 평가에는 최대 1M 토큰 프롬프트가 사용됐습니다.&lt;/li&gt;
&lt;li&gt;Google은 Argon 출력 제한을 1M 토큰이라고 밝혔지만, Vals AI 등 최소 한 곳의 타사 평가자는 테스트한 구성에서 최대 출력 262K를 명시했습니다.&lt;/li&gt;
&lt;li&gt;Argon 평가는 “가장 높은 사고 설정”으로 실행됐습니다. 높은 수준이 존재할 가능성은 있지만, Google은 수준 이름과 기본값을 공개하지 않았습니다.&lt;/li&gt;
&lt;li&gt;Flash의 사고 수준은 Google의 &lt;a href="https://ai.google.dev/gemini-api/docs/thinking" rel="noopener noreferrer"&gt;사고 문서&lt;/a&gt; 및 &lt;a href="https://apidog.com/kr/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 Flash 사고 수준 가이드&lt;/a&gt;에서 확인할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Flash 무료 티어에는 속도 제한이 있으며, Google은 무료 티어 데이터가 “제품 개선에 사용된다”고 설명합니다. Google은 Argon을 무료로 사용할 방법을 발표하지 않았습니다. 현재 사용할 수 있는 무료 Gemini 모델은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon 무료 액세스 설명서&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  두 출시 게시물에 공통으로 나타나는 벤치마크 항목
&lt;/h2&gt;

&lt;p&gt;Google의 두 모델 출시 표는 두 개의 텍스트 벤치마크를 공유합니다. 아래 수치는 Google이 보고한 값이며, Argon의 방법론은 두 항목 모두 Vals AI에 기인합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;벤치마크&lt;/th&gt;
&lt;th&gt;Gemini 3.8 Flash (9월 2일 표)&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon (9월 30일 표)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vals Finance Agent v2&lt;/td&gt;
&lt;td&gt;61.4%&lt;/td&gt;
&lt;td&gt;65.4%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Harvey 법률 에이전트 벤치마크&lt;/td&gt;
&lt;td&gt;10.0%&lt;/td&gt;
&lt;td&gt;19.6%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Google은 두 표를 한 달 간격으로, 서로 다른 경쟁 모델 세트와 비교해 게시했습니다. 따라서 이 차이는 통제된 A/B 테스트가 아니라 대략적인 방향성으로 해석해야 합니다.&lt;/p&gt;

&lt;p&gt;그래도 법률 부문의 차이는 큽니다. Argon은 Harvey 법률 에이전트 벤치마크에서 19.6%로, Flash의 10.0%에 거의 두 배입니다. 금융 부문의 차이는 4포인트입니다.&lt;/p&gt;

&lt;p&gt;Argon 표의 다른 항목은 텍스트 기준으로 3.8 Flash와 직접 대응하지 않습니다. Google의 3.8 Flash 표는 HLE-Verified를 보고했지만 Argon 표에는 없고, Flash의 DeepSWE 점수는 모델 카드 이미지에만 표시됐습니다. 타사 순위인 Arena Text 리더보드에서는 Argon (High)이 예비 투표에서 1위, Gemini 3.8 Flash (High)는 11위입니다. 측정 주체를 포함한 전체 19개 항목은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon 벤치마크 분석&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  사이버: Argon vs 3.8 Flash Cyber
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://deepmind.google/models/gemini/cyber/" rel="noopener noreferrer"&gt;DeepMind 사이버 페이지&lt;/a&gt;는 Argon을 Flash의 Fairwind 게이트 사이버 형제 모델인 Gemini 3.8 Flash Cyber와 비교합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;사이버 평가&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon&lt;/th&gt;
&lt;th&gt;Gemini 3.8 Flash Cyber&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;실제 취약점 발견&lt;/td&gt;
&lt;td&gt;85.8%&lt;/td&gt;
&lt;td&gt;71.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Wiz 침투 테스트 벤치마크&lt;/td&gt;
&lt;td&gt;70.9%&lt;/td&gt;
&lt;td&gt;58.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;두 모델은 모두 게이트 방식으로 제공됩니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini 3.8 Flash Cyber는 Gemini Enterprise Agent Platform의 허용 목록 뒤에서 일반 출시됐습니다.&lt;/li&gt;
&lt;li&gt;Argon은 Fairwind 전용입니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fairwind 파트너가 아니라면, 이 수치는 현재 호출 가능한 모델 선택에 직접 영향을 주지 않습니다. 일반 Gemini 3.8 Flash가 지금 구축할 수 있는 기본 모델입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  두 모델의 동일 호출 비용
&lt;/h2&gt;

&lt;p&gt;입력 100,000토큰과 출력 8,000토큰으로 한 번 호출한다고 가정해 보겠습니다.&lt;/p&gt;

&lt;p&gt;현재 Gemini 모델은 3.8 Flash를 포함해 사고 토큰을 출력 토큰으로 청구합니다. Argon의 사고 토큰 청구 방식은 공개되지 않았으므로, 아래 계산은 Argon도 현재 Gemini 모델과 동일하게 청구된다고 가정합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;모델 및 기간&lt;/th&gt;
&lt;th&gt;입력 비용&lt;/th&gt;
&lt;th&gt;출력 비용&lt;/th&gt;
&lt;th&gt;호출당 총 비용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;3.8 Flash, 소개&lt;/td&gt;
&lt;td&gt;0.1M × $0.75 = $0.075&lt;/td&gt;
&lt;td&gt;0.008M × $3.75 = $0.030&lt;/td&gt;
&lt;td&gt;$0.105&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3.8 Flash, 2027-01-01부터&lt;/td&gt;
&lt;td&gt;0.1M × $1.50 = $0.150&lt;/td&gt;
&lt;td&gt;0.008M × $7.50 = $0.060&lt;/td&gt;
&lt;td&gt;$0.210&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon, 소개&lt;/td&gt;
&lt;td&gt;0.1M × $2 = $0.200&lt;/td&gt;
&lt;td&gt;0.008M × $10 = $0.080&lt;/td&gt;
&lt;td&gt;$0.280&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon, 표준&lt;/td&gt;
&lt;td&gt;0.1M × $4 = $0.400&lt;/td&gt;
&lt;td&gt;0.008M × $20 = $0.160&lt;/td&gt;
&lt;td&gt;$0.560&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Argon의 토큰당 요금은 Flash의 소개 및 표준 가격 모두에서 Flash의 &lt;code&gt;8/3&lt;/code&gt;, 즉 약 2.67배입니다. 이 호출을 하루 1,000회 실행하면 Flash는 하루 $105, Argon은 소개 요금 기준 하루 $280입니다.&lt;/p&gt;

&lt;p&gt;비용 계산 시에는 다음을 반영하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;토큰 수는 모델별로 달라질 수 있습니다.&lt;/strong&gt; 동일 프롬프트라도 출력 및 사고 토큰 수가 다릅니다. Argon의 공개 평가는 가장 높은 사고 설정으로 실행됐고, 3.8 Flash에서는 높은 노력 수준이 더 많은 토큰을 사용할 수 있다고 Google이 경고합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;긴 출력은 계산 방식을 바꿉니다.&lt;/strong&gt; 200,000토큰 응답은 Flash의 65,536토큰 제한을 넘으므로 여러 호출로 나눠야 합니다. Argon의 명시된 제한 내에서는 단일 응답으로 처리할 수 있습니다. 소개 요금 기준 &lt;code&gt;0.2M × $10 = $2.00&lt;/code&gt;, 표준 요금 기준 $4.00입니다. 전체 1M 토큰 응답은 소개 요금 $10, 표준 요금 $20입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;소개 종료일은 Flash만 공개됐습니다.&lt;/strong&gt; Flash 소개 가격은 2026년 12월 31일 종료됩니다. Argon 소개 가격의 종료일은 공개되지 않았습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Gemini API 가격 책정 페이지&lt;/a&gt;에 따르면 Flash는 12월 31일까지 Batch 기능을 50% 할인된 가격($0.375 및 $1.875)으로 제공합니다. Google은 Argon의 Batch 가격을 공개하지 않았습니다. 자세한 내용은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon 가격 가이드&lt;/a&gt; 및 &lt;a href="https://apidog.com/kr/blog/gemini-3-8-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;3.8 Flash 가격 가이드&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  Argon을 기다려야 할까요, 아니면 Flash를 사용해야 할까요?
&lt;/h2&gt;

&lt;h3&gt;
  
  
  지금 3.8 Flash로 출시해야 할 경우
&lt;/h3&gt;

&lt;p&gt;다음 조건이라면 Flash로 시작하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;비용이 제한적일 때&lt;/strong&gt;: Flash는 토큰당 Argon 비용의 &lt;code&gt;3/8&lt;/code&gt;이며, Batch를 사용하면 추가로 절반까지 낮출 수 있습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;높은 볼륨을 처리할 때&lt;/strong&gt;: 분류, 추출, 라우팅, 대규모 채팅은 1M 출력 토큰당 $10의 비용이 빠르게 누적됩니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;오늘 바로 배포해야 할 때&lt;/strong&gt;: Flash는 안정적인 모델 ID, 프로토타이핑용 무료 티어, 공개된 가격 일정을 제공합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;응답이 65,536토큰 이내일 때&lt;/strong&gt;: 대부분의 API 워크로드가 여기에 해당합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Argon을 계획해야 할 경우
&lt;/h3&gt;

&lt;p&gt;다음 요청은 Argon 전환 후보로 분류하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;장기 작업&lt;/strong&gt;: Google은 Argon이 “복잡하고 장기적인 워크플로우 전반에 걸쳐 심층적인 추론을 지속하도록 구축됐다”고 설명합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;64K를 넘는 출력&lt;/strong&gt;: 전체 모듈 재작성, 긴 보고서, 대규모 마이그레이션처럼 1M 출력 제한이 필요한 작업입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;법률 또는 금융 에이전트&lt;/strong&gt;: Google이 두 모델 모두에 대해 공개한 공통 항목에서 Argon이 우세합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Fairwind 자격이 있는 경우&lt;/strong&gt;: Argon은 현재 프로그램 참여자 중심 모델입니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;둘 중 하나만 선택할 필요는 없습니다. 대부분의 트래픽은 Flash로 라우팅하고, 어려운 요청만 Argon이 출시된 뒤 동일한 구성 경로에서 전환할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  하나의 저장된 요청, 두 가지 모델
&lt;/h2&gt;

&lt;p&gt;핵심 패턴은 모델 이름을 환경 변수로 분리하는 것입니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;지금은 &lt;code&gt;gemini-3.8-flash&lt;/code&gt;로 요청을 실행합니다.&lt;/li&gt;
&lt;li&gt;요청, 테스트, 사용량 기준선을 저장합니다.&lt;/li&gt;
&lt;li&gt;Google이 Argon 모델 ID를 공개하면 환경 변수만 바꿉니다.&lt;/li&gt;
&lt;li&gt;동일 프롬프트와 동일 테스트로 출력 및 토큰 사용량을 비교합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Google은 Argon 모델 ID를 아직 공개하지 않았으므로 추측해서 하드코딩하지 마세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;gemini&lt;/span&gt;&lt;span class="p"&gt;-3.8-flash&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://generativelanguage.googleapis.com/v1beta/models/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;MODEL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:generateContent"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-goog-api-key: &lt;/span&gt;&lt;span class="nv"&gt;$GEMINI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{"contents":[{"parts":[{"text":"Summarize this contract clause in 3 bullets."}]}],
       "generationConfig":{"thinkingConfig":{"thinkingLevel":"medium"},"maxOutputTokens":8192}}'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;generateContent&lt;/code&gt; 응답에는 &lt;code&gt;usageMetadata&lt;/code&gt;가 포함됩니다. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 다음을 설정하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;환경에 &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;와 &lt;code&gt;GEMINI_MODEL&lt;/code&gt;을 저장합니다.&lt;/li&gt;
&lt;li&gt;위 요청을 컬렉션에 저장합니다.&lt;/li&gt;
&lt;li&gt;상태 코드 &lt;code&gt;200&lt;/code&gt;을 검증하는 assertion을 추가합니다.&lt;/li&gt;
&lt;li&gt;애플리케이션이 읽는 응답 필드를 검증합니다.&lt;/li&gt;
&lt;li&gt;비용 한도에 맞춰 &lt;code&gt;usageMetadata.thoughtsTokenCount&lt;/code&gt;의 상한을 검증합니다.&lt;/li&gt;
&lt;li&gt;긴 응답이 예산을 초과하지 않도록 &lt;code&gt;maxOutputTokens&lt;/code&gt;를 설정합니다.&lt;/li&gt;
&lt;li&gt;테스트 시나리오에 추가한 뒤 Flash에서 실행하고, 결과 보고서를 기준선으로 보관합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;출시일에는 두 가지를 다시 확인해야 합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Google은 “모든 새로운 모델”이 Interactions API로 출시될 것이라고 말했습니다. 하지만 Argon이 &lt;code&gt;generateContent&lt;/code&gt;를 지원하는지는 공개하지 않았습니다. 따라서 &lt;code&gt;POST https://generativelanguage.googleapis.com/v1beta/interactions&lt;/code&gt; 요청도 함께 저장하세요. 이 API에서는 &lt;code&gt;generation_config.thinking_level&lt;/code&gt;을 사용합니다.&lt;/li&gt;
&lt;li&gt;Argon의 사고 수준 이름은 문서화되지 않았습니다. Flash의 &lt;code&gt;medium&lt;/code&gt; 설정이 그대로 적용된다고 가정하지 마세요.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Argon이 출시되면 모델 변수를 변경하고 동일한 요청을 다시 실행하세요. 그다음 출력, 오류율, &lt;code&gt;usageMetadata&lt;/code&gt;, 호출당 비용을 Flash 기준선과 나란히 비교하면 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemini 4 Argon이 Gemini 3.8 Flash보다 더 나은가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;두 출시 표에 공통으로 나타나는 텍스트 항목에서는 그렇습니다. Vals Finance Agent v2에서 65.4% 대 61.4%, Harvey Legal Agent Benchmark에서 19.6% 대 10.0%입니다. 다만 토큰당 비용은 약 2.67배이고, 아직 일반적으로 호출할 수 없습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini 4 Argon을 기다려야 할까요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;출시해야 한다면 기다리지 마세요. Google은 유료 API 고객과 AI Ultra 구독자를 시작으로 “가능한 한 빨리” 출시하겠다고 밝혔지만, 구체적인 출시 날짜는 제시하지 않았습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;새 프로젝트에는 Gemini 3.8 Flash와 Argon 중 무엇을 사용해야 하나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;모델을 환경 변수로 분리한 뒤 3.8 Flash로 시작하세요. 긴 출력이 필요하거나 법률·금융 분야의 심층 작업이 필요한 요청은 Argon이 제공된 후 직접 프롬프트로 테스트하고 전환하세요.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Argon을 무료로 사용할 방법이 있나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;아니요. Google은 무료 티어를 발표하지 않았습니다. 현재 사용할 수 있는 무료 Gemini 모델은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon 무료 액세스 설명서&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Argon이 Gemini 3.8 Flash를 대체하나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google은 그렇게 언급하지 않았습니다. Google은 Argon을 새로운 프론티어 모델이라고 부르고, 로이터 통신은 이전 Pro 라인보다 더 크다고 보도했습니다. 따라서 Flash와는 다른 등급의 모델로 보는 것이 적절합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  다음 단계
&lt;/h2&gt;

&lt;p&gt;오늘 요청을 설정하고 3.8 Flash에서 실행한 뒤 결과 보고서를 저장하세요. Argon이 출시되면 동일한 요청을 몇 분 안에 재실행해, 실제 트래픽에서 추가 비용만큼의 가치가 있는지 확인할 수 있습니다.&lt;/p&gt;

&lt;p&gt;비교 환경을 만들려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;하세요.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>제미니 4 아르곤 대 GPT-6 아스트라 대 클로드 오푸스 5.5</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 13:27:03 +0000</pubDate>
      <link>https://dev.to/rihpig/jemini-4-areugon-dae-gpt-6-aseuteura-dae-keulrodeu-opuseu-55-pb2</link>
      <guid>https://dev.to/rihpig/jemini-4-areugon-dae-gpt-6-aseuteura-dae-keulrodeu-opuseu-55-pb2</guid>
      <description>&lt;p&gt;Gemini 4 Argon은 GPT-6 Astra, Claude Opus 5.5 및 Claude Fable 5.1에 비해 Google의 벤치마크 표 19개 행 중 13개에서 선두를 차지했습니다. 하지만 점수보다 중요한 점은 오늘 Astra와 Opus 5.5는 구매할 수 있지만 Argon은 구매할 수 없다는 사실입니다. Google의 새 프론티어 모델은 현재 Fairwind 프로그램 방어자에게만 제공되며, 소개 기간에는 백만 토큰당 입력/출력 $2/$10, 이후 $4/$20입니다. 이는 Opus 5.5의 표준 가격과 동일합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog를 사용해 보세요&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 글에서는 네 모델의 가격과 제한을 비교하고, 각 모델이 우세한 벤치마크를 작업 유형별로 정리합니다. 또한 점수를 직접 비교하기 어려운 이유와 라우팅 기준, 그리고 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 실제 프롬프트로 모델을 비교하는 방법을 다룹니다. Argon이 처음이라면 &lt;a href="https://apidog.com/kr/blog/what-is-gemini-4-argon?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon이란 무엇인가&lt;/a&gt;부터 확인하세요. 출시 시점은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-release-date?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon 출시일 가이드&lt;/a&gt;를 참고하면 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  가격 및 제한 비교
&lt;/h2&gt;

&lt;p&gt;Google의 비교 표에는 Claude Fable 5.1도 포함되어 있으므로 함께 비교해야 합니다. 가격은 모두 백만 토큰당 기준이며, 각 공급업체의 &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/" rel="noopener noreferrer"&gt;Google 출시 게시물&lt;/a&gt;, &lt;a href="https://developers.openai.com/api/docs/models/gpt-6-astra" rel="noopener noreferrer"&gt;OpenAI GPT-6 Astra 모델 페이지&lt;/a&gt;, &lt;a href="https://platform.claude.com/docs/en/about-claude/pricing" rel="noopener noreferrer"&gt;Anthropic 가격 페이지&lt;/a&gt;를 기준으로 합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon&lt;/th&gt;
&lt;th&gt;GPT-6 Astra&lt;/th&gt;
&lt;th&gt;Claude Opus 5.5&lt;/th&gt;
&lt;th&gt;Claude Fable 5.1&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;오늘 사용할 수 있나요?&lt;/td&gt;
&lt;td&gt;아니요, Fairwind 전용&lt;/td&gt;
&lt;td&gt;예&lt;/td&gt;
&lt;td&gt;예&lt;/td&gt;
&lt;td&gt;예&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API 모델 ID&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6-astra&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-opus-5-5&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;claude-fable-5-1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;입력&lt;/td&gt;
&lt;td&gt;소개 $2, 이후 $4&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;$4&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;캐시된 입력&lt;/td&gt;
&lt;td&gt;소개 $0.10, 이후 $0.20&lt;/td&gt;
&lt;td&gt;$1&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력&lt;/td&gt;
&lt;td&gt;소개 $10, 이후 $20&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;td&gt;$20&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;최대 출력&lt;/td&gt;
&lt;td&gt;1M, Google 명시 제한&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;td&gt;128K, Batch에서 300K 베타&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;컨텍스트 창&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;1,050,000, 최대 입력 922K&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;긴 프롬프트 할증료&lt;/td&gt;
&lt;td&gt;명시되지 않음&lt;/td&gt;
&lt;td&gt;272K 입력 초과 시 전체 요청에서 입력·캐시 2배, 출력 1.5배&lt;/td&gt;
&lt;td&gt;없음&lt;/td&gt;
&lt;td&gt;없음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;실무적으로는 다음 세 가지를 확인해야 합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Argon의 표준 가격은 Opus 5.5와 동일합니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
입력, 캐시된 입력, 출력 가격이 모두 일치합니다. 따라서 Argon의 비용 우위는 소개 기간에만 적용되며, Google은 소개 기간의 종료 시점을 공개하지 않았습니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Astra와 Fable 5.1은 토큰 단가가 높습니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Argon의 표준 입력/출력 요금 기준으로는 약 2.5배, 소개 요금 기준으로는 약 5배입니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;최대 출력 제한은 실제 테스트 구성에 따라 달라질 수 있습니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Google은 Argon의 최대 출력을 1M 토큰으로 명시하지만, Vals AI는 테스트한 Argon 구성에서 최대 262K 출력을 기록했습니다.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;요청별 비용 계산이 필요하면 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 가격 책정&lt;/a&gt;을 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google 표에서 각 모델이 선두를 차지하는 부분
&lt;/h2&gt;

&lt;p&gt;먼저 전제 조건이 있습니다. 아래 수치는 &lt;strong&gt;Google의 표&lt;/strong&gt;에서 가져온 것입니다. Argon 점수는 Google이 자체 평가하거나 리더보드에서 수집한 값이며, 경쟁 모델 점수는 대체로 공급업체 공개 수치 또는 공용 리더보드 결과입니다. 가능한 경우 최대 추론 설정을 기준으로 했지만, 실행 하네스가 다르므로 작은 차이는 노이즈로 보는 편이 안전합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;선두 모델&lt;/th&gt;
&lt;th&gt;벤치마크&lt;/th&gt;
&lt;th&gt;Argon&lt;/th&gt;
&lt;th&gt;Astra&lt;/th&gt;
&lt;th&gt;Fable 5.1&lt;/th&gt;
&lt;th&gt;Opus 5.5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Argon: 지식 작업&lt;/td&gt;
&lt;td&gt;Vals 인덱스&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.9%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;63.1%&lt;/td&gt;
&lt;td&gt;65.8%&lt;/td&gt;
&lt;td&gt;67.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon: 지식 작업&lt;/td&gt;
&lt;td&gt;AutomationBench&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;51.3%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;41.4%&lt;/td&gt;
&lt;td&gt;31.4%&lt;/td&gt;
&lt;td&gt;42.5%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon: 지식 작업&lt;/td&gt;
&lt;td&gt;Harvey의 법률 에이전트 벤치마크&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;19.6%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;5.4%&lt;/td&gt;
&lt;td&gt;6.7%&lt;/td&gt;
&lt;td&gt;3.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon: 코딩&lt;/td&gt;
&lt;td&gt;DeepSWE v1.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;77.9%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;74.1%&lt;/td&gt;
&lt;td&gt;67.4%&lt;/td&gt;
&lt;td&gt;74.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon: 긴 컨텍스트&lt;/td&gt;
&lt;td&gt;GraphWalks 256K ~ 1M, F1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;84.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;71.8%&lt;/td&gt;
&lt;td&gt;65.0%&lt;/td&gt;
&lt;td&gt;66.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon: 멀티모달&lt;/td&gt;
&lt;td&gt;LV벤치&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;91.7%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;87.5%&lt;/td&gt;
&lt;td&gt;79.7%&lt;/td&gt;
&lt;td&gt;83.7%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon: 멀티모달&lt;/td&gt;
&lt;td&gt;차트 작성&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;71.6%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;71.0%&lt;/td&gt;
&lt;td&gt;46.2%&lt;/td&gt;
&lt;td&gt;66.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Astra&lt;/td&gt;
&lt;td&gt;FrontierSWE v2&lt;/td&gt;
&lt;td&gt;55.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;65.5%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;56.3%&lt;/td&gt;
&lt;td&gt;62.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Astra&lt;/td&gt;
&lt;td&gt;터미널 벤치 과학 0.1&lt;/td&gt;
&lt;td&gt;57.6%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.1%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;52.6%&lt;/td&gt;
&lt;td&gt;63.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Astra&lt;/td&gt;
&lt;td&gt;OSWorld-2.0, 오프라인 부분&lt;/td&gt;
&lt;td&gt;69.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;72.6%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;보고되지 않음&lt;/td&gt;
&lt;td&gt;보고되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus 5.5&lt;/td&gt;
&lt;td&gt;터미널 벤치 4.0&lt;/td&gt;
&lt;td&gt;57.4%&lt;/td&gt;
&lt;td&gt;58.2%&lt;/td&gt;
&lt;td&gt;57.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;66.4%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Opus 5.5&lt;/td&gt;
&lt;td&gt;PostTrainBench&lt;/td&gt;
&lt;td&gt;45.3%&lt;/td&gt;
&lt;td&gt;44.3%&lt;/td&gt;
&lt;td&gt;40.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;49.3%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;동점&lt;/td&gt;
&lt;td&gt;CWE-벤치 v1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.0%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;58.0%&lt;/td&gt;
&lt;td&gt;67.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Argon이 우세한 추가 항목은 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vals Finance Agent v2&lt;/li&gt;
&lt;li&gt;Vibe Code Bench&lt;/li&gt;
&lt;li&gt;LABBench 2&lt;/li&gt;
&lt;li&gt;RiemannBench&lt;/li&gt;
&lt;li&gt;최대 128K GraphWalks&lt;/li&gt;
&lt;li&gt;Agent’s Last Exam&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fable 5.1은 이 표에서 어떤 행에서도 선두를 차지하지 못했습니다. CWE-bench v1에서는 DeepMind의 &lt;a href="https://deepmind.google/models/gemini/cyber/" rel="noopener noreferrer"&gt;사이버 리더보드&lt;/a&gt;가 Argon, Astra, Grok 4.7의 68% 동점을 기록했고, Opus 5.5는 67%였습니다.&lt;/p&gt;

&lt;p&gt;Gemini 4 Argon과 Fable 5.1만 비교하면, 두 모델이 모두 점수를 보고한 17개 항목 중 Argon이 15개에서 더 높은 점수를 기록했습니다. Fable은 FrontierSWE v2에서 56.3% 대 55.0%, Terminal-bench 4.0에서 57.9% 대 57.4%로 근소하게 앞섰습니다. Anthropic의 자체 수치는 &lt;a href="https://apidog.com/kr/blog/claude-fable-5-1-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 벤치마크&lt;/a&gt;에서, 전체 19개 행은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 벤치마크&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  격차를 신뢰하기 전에 확인할 세 가지
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. 경쟁 모델 점수는 Google이 직접 실행한 결과가 아닐 수 있습니다
&lt;/h3&gt;

&lt;p&gt;Google의 &lt;a href="https://deepmind.google/models/evals-methodology/gemini-4-argon" rel="noopener noreferrer"&gt;평가 방법론&lt;/a&gt;에 따르면, 비-Gemini 모델 결과는 “별도로 언급되지 않는 한 공급업체의 자체 보고 수치에서 가져온 것”입니다. 일부 항목은 Vals AI, Proximal, Surge가 운영하는 공개 리더보드 결과입니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 벤치마크 하네스가 다릅니다
&lt;/h3&gt;

&lt;p&gt;DeepSWE v1.1에서 Google은 &lt;code&gt;mini-swe-agent&lt;/code&gt; 하네스로 Argon의 77.9%를 자체 계산했습니다. Astra 점수는 공개 리더보드에서 가져왔고, Anthropic 모델 점수는 시스템 카드에서 가져왔습니다.&lt;/p&gt;

&lt;p&gt;LVBench에서는 비디오 프레임 수에도 차이가 있습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Gemini: 초당 1프레임&lt;/li&gt;
&lt;li&gt;Astra: 800프레임&lt;/li&gt;
&lt;li&gt;Opus 5.5: 600프레임&lt;/li&gt;
&lt;li&gt;Fable 5.1: 300프레임&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google은 이 차이가 API 제한 때문이라고 설명합니다. 따라서 멀티모달 점수를 비교할 때는 점수만 보지 말고 입력 샘플링 조건도 함께 확인해야 합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 같은 모델도 차트마다 점수가 다를 수 있습니다
&lt;/h3&gt;

&lt;p&gt;Opus 5.5의 Terminal-bench 4.0 결과는 하네스와 노력 설정에 따라 달라집니다. &lt;a href="https://www.anthropic.com/news/claude-opus-5-5" rel="noopener noreferrer"&gt;Anthropic&lt;/a&gt;은 &lt;code&gt;xhigh&lt;/code&gt; 노력 설정에서 66.4%를 보고합니다.&lt;/p&gt;

&lt;p&gt;여러 출처의 점수를 한 표에 합칠 때는 다음 메타데이터를 함께 기록하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;모델 버전&lt;/li&gt;
&lt;li&gt;추론 또는 노력 설정&lt;/li&gt;
&lt;li&gt;실행 하네스&lt;/li&gt;
&lt;li&gt;도구 사용 가능 여부&lt;/li&gt;
&lt;li&gt;입력 제한 및 출력 제한&lt;/li&gt;
&lt;li&gt;벤치마크 실행 날짜&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  제3자 평가자의 의견
&lt;/h2&gt;

&lt;p&gt;독립 리더보드는 공급업체 발표와 다른 관점을 제공합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://artificialanalysis.ai/leaderboards/models" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt;는 Argon을 223개 중 8위로 나열합니다. 다만 이 리더보드는 추론 설정별로 개별 항목을 계산합니다. 개별 모델 기준으로는 Argon이 53점으로 GPT-6 Astra 및 Claude Fable 5.1과 동점이며, Claude Opus 5.5의 최대 58점과 Claude Sonnet 5.5의 56점보다 낮습니다.&lt;/p&gt;

&lt;p&gt;Artificial Analysis의 AA-Omniscience에서는 Argon의 환각률을 15%로, Astra의 최대 설정 환각률을 51%로 나열합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://arena.ai/leaderboard/text" rel="noopener noreferrer"&gt;Arena&lt;/a&gt;에서는 Argon이 4,942표를 기준으로 예비 1525점으로 텍스트 부문 1위를 기록했고, Opus 5.5는 4위였습니다. Vals AI에서는 Argon이 Vals 인덱스 41개 모델 중 1위를 차지했으며, 이 인덱스에서 1위를 기록한 최초의 Gemini 모델입니다.&lt;/p&gt;

&lt;p&gt;다만 실제 사용 경험은 벤치마크와 다를 수 있습니다. &lt;a href="https://www.bloomberg.com/news/articles/2026-09-30/google-grapples-with-employee-skepticism-about-new-gemini-model" rel="noopener noreferrer"&gt;블룸버그 보도&lt;/a&gt;에 따르면, Argon 접근 권한이 있는 일부 Google 직원은 일부 코딩 및 프론트엔드 디자인 작업에서 기대에 미치지 못한다고 평가했습니다. Google은 이 특징화가 부정확하다고 밝혔습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  어떤 모델로 라우팅할 것인가
&lt;/h2&gt;

&lt;p&gt;2026년에는 모든 작업에서 최고인 단일 프론티어 모델은 없습니다. 모델 라우팅은 작업 특성, 비용, 지연 시간, 출력 길이, 도구 호출 품질을 기준으로 결정해야 합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;작업&lt;/th&gt;
&lt;th&gt;오늘 라우팅&lt;/th&gt;
&lt;th&gt;Argon 출시 시&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;법률, 금융 및 사무 자동화 에이전트&lt;/td&gt;
&lt;td&gt;Opus 5.5, Vals 인덱스 67.0%&lt;/td&gt;
&lt;td&gt;Argon 테스트: 지식 작업 4개 행에서 선두&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;터미널 중심 코딩 에이전트&lt;/td&gt;
&lt;td&gt;Opus 5.5, 터미널 벤치 4.0 66.4%&lt;/td&gt;
&lt;td&gt;Opus 5.5가 여전히 선두&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;에이전트 소프트웨어 엔지니어링&lt;/td&gt;
&lt;td&gt;Astra, FrontierSWE v2 65.5%, 또는 Opus 5.5&lt;/td&gt;
&lt;td&gt;Argon은 DeepSWE 선두지만 FrontierSWE에서는 뒤처짐. 둘 다 테스트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;컴퓨터 사용 및 GUI 에이전트&lt;/td&gt;
&lt;td&gt;Astra, OSWorld-2.0 72.6%&lt;/td&gt;
&lt;td&gt;Astra는 OSWorld 선두, Argon은 Agent’s Last Exam 선두&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;256K+ 토큰 프롬프트 추론&lt;/td&gt;
&lt;td&gt;Opus 5.5, 할증료 없음, 또는 Astra, 272K 초과 할증료&lt;/td&gt;
&lt;td&gt;Argon, GraphWalks 256K ~ 1M 84.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;비디오 및 차트 이해&lt;/td&gt;
&lt;td&gt;Astra, LV벤치 87.5%&lt;/td&gt;
&lt;td&gt;Argon, 91.7%. 프레임 수 조건 확인 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;과학 및 ML 엔지니어링&lt;/td&gt;
&lt;td&gt;Astra, 터미널 벤치 과학, Opus 5.5, PostTrainBench&lt;/td&gt;
&lt;td&gt;Argon은 LABBench 2와 RiemannBench에서 선두. 자체 테스트 필요&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;128K 토큰 초과 단일 응답&lt;/td&gt;
&lt;td&gt;Batch의 Opus 5.5, 300K 베타&lt;/td&gt;
&lt;td&gt;Argon, Google 명시 기준 최대 1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대량·비용 민감 작업&lt;/td&gt;
&lt;td&gt;Opus 5.5, $4/$20&lt;/td&gt;
&lt;td&gt;Argon 소개 기간에는 $2/$10&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;최고 점수보다 비용이 중요하다면 &lt;a href="https://apidog.com/kr/blog/gpt-6-sol-vs-claude-opus-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6 Sol 대 Claude Opus 5.5&lt;/a&gt; 비교로 OpenAI의 저렴한 Sol 라인과 Opus를 함께 검토하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  자신의 프롬프트로 세 모델 비교하기
&lt;/h2&gt;

&lt;p&gt;공급업체 벤치마크만으로는 실제 사용자 프롬프트의 품질, 비용, 지연 시간을 알 수 없습니다. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 작은 평가 시나리오를 만들면 현재 구매 가능한 모델을 비교하고, Argon 출시 후 동일한 조건으로 재실행할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 모델별 요청을 준비합니다
&lt;/h3&gt;

&lt;p&gt;한 프로젝트에 다음 세 요청을 만듭니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GPT-6 Astra 요청&lt;/li&gt;
&lt;li&gt;Claude Opus 5.5 요청&lt;/li&gt;
&lt;li&gt;Gemini 요청&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Gemini 요청의 모델 필드는 하드코딩하지 말고 변수로 관리합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{GEMINI_MODEL}}"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"{{SHARED_PROMPT}}"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google이 Argon의 모델 ID를 공개하기 전까지는 &lt;code&gt;GEMINI_MODEL&lt;/code&gt;을 &lt;code&gt;gemini-3.8-flash&lt;/code&gt;로 설정하고, 출시 후 Argon ID로 교체합니다.&lt;/p&gt;

&lt;p&gt;각 공급업체의 요청 형식은 &lt;a href="https://apidog.com/kr/blog/gpt-6-astra-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6 Astra API 가이드&lt;/a&gt;와 &lt;a href="https://apidog.com/kr/blog/what-is-claude-opus-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Opus 5.5란 무엇인가&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. 환경 변수로 API 키와 공통 프롬프트를 관리합니다
&lt;/h3&gt;

&lt;p&gt;다음처럼 공급업체별 키와 공통 입력을 분리합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;OPENAI_API_KEY=...
ANTHROPIC_API_KEY=...
GOOGLE_API_KEY=...

SHARED_PROMPT=...
GEMINI_MODEL=gemini-3.8-flash
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;세 요청이 정확히 같은 입력을 받도록 &lt;code&gt;SHARED_PROMPT&lt;/code&gt;를 사용해야 합니다. 비교 시 시스템 프롬프트, 온도, 최대 출력 토큰, 도구 정의도 가능한 한 동일하게 맞추세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 품질과 비용을 함께 검증하는 어설션을 추가합니다
&lt;/h3&gt;

&lt;p&gt;각 요청에 최소한 다음 검증을 추가합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTP 상태 코드가 200인지&lt;/li&gt;
&lt;li&gt;응답 텍스트가 비어 있지 않은지&lt;/li&gt;
&lt;li&gt;출력 토큰이 상한선 이내인지&lt;/li&gt;
&lt;li&gt;계산된 요청 비용이 예산 이내인지&lt;/li&gt;
&lt;li&gt;JSON 출력이 필요하다면 스키마를 충족하는지&lt;/li&gt;
&lt;li&gt;도구 호출이 필요하다면 함수명과 인수가 유효한지&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;예를 들어 비용 검증용 기준 값을 다음처럼 환경 변수로 분리할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MAX_OUTPUT_TOKENS=8000
MAX_REQUEST_COST_USD=0.50
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  4. 테스트 시나리오로 묶어 반복 실행합니다
&lt;/h3&gt;

&lt;p&gt;세 요청을 하나의 테스트 시나리오로 구성한 뒤, 같은 프롬프트 세트로 반복 실행합니다. 결과에서 다음 항목을 비교하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;성공률&lt;/li&gt;
&lt;li&gt;응답 시간&lt;/li&gt;
&lt;li&gt;출력 토큰 수&lt;/li&gt;
&lt;li&gt;계산된 비용&lt;/li&gt;
&lt;li&gt;형식 준수 여부&lt;/li&gt;
&lt;li&gt;도구 호출 성공률&lt;/li&gt;
&lt;li&gt;사람이 검토한 품질 점수&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  비용 계산 예시
&lt;/h2&gt;

&lt;p&gt;20,000 입력 토큰과 4,000 출력 토큰을 사용하는 요청을 가정해 보겠습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  GPT-6 Astra
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;입력: 20,000 × $10 / 1,000,000 = $0.20
출력: 4,000 × $50 / 1,000,000 = $0.20
총비용: $0.40
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Claude Opus 5.5
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;입력: 20,000 × $4 / 1,000,000 = $0.08
출력: 4,000 × $20 / 1,000,000 = $0.08
총비용: $0.16
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  Gemini 4 Argon
&lt;/h3&gt;

&lt;p&gt;소개 요금에서는 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;입력: 20,000 × $2 / 1,000,000 = $0.04
출력: 4,000 × $10 / 1,000,000 = $0.04
총비용: $0.08
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;표준 요금에서는 총 $0.16으로 Opus 5.5와 동일합니다.&lt;/p&gt;

&lt;p&gt;다만 토큰당 가격과 작업당 비용은 다릅니다. Artificial Analysis는 Argon이 작업당 약 62K 출력 토큰을, Astra가 최대 노력 설정에서 약 27K 출력 토큰을 기록했다고 측정했습니다. 따라서 실제 비용을 판단하려면 자신의 프롬프트에서 출력 토큰 수를 측정해야 합니다.&lt;/p&gt;

&lt;p&gt;Argon이 출시되면 &lt;code&gt;GEMINI_MODEL&lt;/code&gt;만 변경하고 같은 시나리오를 재실행하세요. 그러면 현재 구매 가능한 Astra 및 Opus 5.5와 동일한 조건에서 비교할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon이 GPT-6 Astra보다 좋나요?
&lt;/h3&gt;

&lt;p&gt;Artificial Analysis에서는 두 모델이 53점으로 동점입니다. Google의 표에서는 Argon이 다수 항목에서 더 높은 점수를 기록했지만, Astra는 FrontierSWE v2, Terminal-Bench Science 0.1, OSWorld-2.0에서 승리했습니다. 또한 Astra는 오늘 바로 사용할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon과 Claude Opus 5.5 중 어떤 모델이 더 좋나요?
&lt;/h3&gt;

&lt;p&gt;Google의 표는 대부분의 행에서 Argon에 유리합니다. 반면 Opus 5.5는 Terminal-bench 4.0과 PostTrainBench에서 승리했고, Artificial Analysis에서는 58 대 53으로 앞섭니다. Argon의 표준 가격과 Opus 5.5의 가격은 동일합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon이 Claude Opus 5.5보다 저렴한가요?
&lt;/h3&gt;

&lt;p&gt;소개 기간에는 Argon이 입력/출력 $2/$10으로 Opus 5.5의 $4/$20보다 저렴합니다. 소개 기간 이후에는 표준 가격이 동일하며, Google은 소개 기간의 종료 시점을 명시하지 않았습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  가장 큰 출력 제한을 제공하는 모델은 무엇인가요?
&lt;/h3&gt;

&lt;p&gt;Argon은 Google이 명시한 기준으로 최대 1M 토큰 출력입니다. 다만 Vals AI는 테스트 구성에서 최대 262K를 기록했습니다. 나머지 모델은 동기식 출력이 128K로 제한됩니다. &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-1m-output-tokens?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;1M 출력 토큰 가이드&lt;/a&gt;에서 클라이언트 구현 시 고려할 점을 확인하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  오늘 Gemini 4 Argon을 사용할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;현재는 Google Fairwind 프로그램을 통한 검증된 사이버 방어 파트너만 사용할 수 있습니다. 유료 API 고객과 Google AI Ultra 구독자가 다음 대상이지만, 제공 날짜는 공개되지 않았습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  작업 부하별로 선택하고, 반드시 테스트하세요
&lt;/h2&gt;

&lt;p&gt;Argon은 지식 작업, 긴 컨텍스트, 멀티모달 벤치마크에서 가장 강력해 보입니다. Astra는 FrontierSWE, Terminal-Bench Science, OSWorld에서 강점을 보이며, Opus 5.5는 터미널 작업과 ML 엔지니어링에서 강합니다.&lt;/p&gt;

&lt;p&gt;구현 전략은 단순합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;지금 구매 가능한 Astra와 Opus 5.5로 먼저 구축합니다.&lt;/li&gt;
&lt;li&gt;Gemini 모델 ID는 환경 변수로 관리합니다.&lt;/li&gt;
&lt;li&gt;공통 프롬프트와 어설션을 포함한 평가 시나리오를 만듭니다.&lt;/li&gt;
&lt;li&gt;Argon이 출시되면 모델 변수만 변경해 동일한 테스트를 재실행합니다.&lt;/li&gt;
&lt;li&gt;벤치마크 점수 대신 실제 성공률, 비용, 지연 시간으로 라우팅 결정을 내립니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;한 프로젝트에서 세 모델 요청을 비교하려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;하세요.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>제미니 4 아르곤 가격: 출시가 $2/$10, 일반가 $4/$20, 100만 토큰 답변 비용</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:58:08 +0000</pubDate>
      <link>https://dev.to/rihpig/jemini-4-areugon-gagyeog-culsiga-210-ilbanga-420-100man-tokeun-dabbyeon-biyong-2ma7</link>
      <guid>https://dev.to/rihpig/jemini-4-areugon-gagyeog-culsiga-210-ilbanga-420-100man-tokeun-dabbyeon-biyong-2ma7</guid>
      <description>&lt;p&gt;Gemini 4 Argon은 도입 기간 동안 입력 100만 토큰당 2달러, 출력 100만 토큰당 10달러이며, 도입 기간 이후에는 각각 4달러와 20달러입니다. 캐시된 입력은 입력 가격에서 95% 할인되어 도입 기간에는 100만 토큰당 0.10달러, 이후에는 0.20달러입니다. 구글은 도입 기간의 종료 시점을 공개하지 않았고, Argon은 아직 일반 구매가 불가능합니다. 현재는 Fairwind Program의 사이버 방어자에게만 제공됩니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog 사용해 보기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 글에서는 이 가격표를 실제 예산 수치로 바꿉니다. 현재 모델 7종과 비교하고, 4가지 호출 시나리오를 계산하며, 태스크당 비용과 출시 전에 설정할 비용 통제를 다룹니다. 모델 자체는 &lt;a href="https://apidog.com/kr/blog/what-is-gemini-4-argon?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon이 무엇인지&lt;/a&gt;, 접근 가능 여부는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon이 무료인지&lt;/a&gt;를 참고하세요. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서는 현재 호출 가능한 모델을 대상으로 비용 검증을 구성한 뒤, 나중에 모델 ID만 교체할 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F10%2Fimage-4.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fassets.apidog.com%2Fblog-next%2F2026%2F10%2Fimage-4.png" alt="" width="800" height="802"&gt;&lt;/a&gt;&lt;span&gt;fe&lt;/span&gt;&lt;p&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  가격표
&lt;/h2&gt;

&lt;p&gt;구글은 &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/" rel="noopener noreferrer"&gt;Gemini 4 Argon 출시 게시물&lt;/a&gt;에서 가격을 공개했습니다. 도입 기간 이후 요율은 각주 1에 다음과 같이 명시되어 있습니다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;도입 기간 만료 후, 100만 입력 토큰당 4달러, 100만 출력 토큰당 20달러의 가격이 적용됩니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Gemini 4 Argon, 100만 토큰당&lt;/th&gt;
&lt;th&gt;도입 기간&lt;/th&gt;
&lt;th&gt;표준(도입 기간 후)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;입력&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;td&gt;$4.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;캐시된 입력(입력 가격에서 95% 할인)&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$20.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;응답당 최대 출력(Google)&lt;/td&gt;
&lt;td&gt;100만 토큰&lt;/td&gt;
&lt;td&gt;100만 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100만 토큰 전체 출력 비용&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$20.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;캐시 요금은 구글의 95% 할인 규칙으로 계산했습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;도입 기간 캐시 입력 = $2.00 × 0.05 = $0.10
표준 기간 캐시 입력 = $4.00 × 0.05 = $0.20
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;구글은 입력 컨텍스트 창과 모델 ID를 아직 공개하지 않았습니다. 다만 출력 제한은 이전 64K 토큰에서 늘어난 100만 토큰이라고 밝혔습니다. 제3자 평가 기관인 Vals AI는 테스트한 구성에서 최대 출력 262K를 나열했습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Argon vs 현재 최첨단 및 Gemini 모델
&lt;/h2&gt;

&lt;p&gt;아래 가격은 모두 100만 토큰 기준입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;모델&lt;/th&gt;
&lt;th&gt;입력&lt;/th&gt;
&lt;th&gt;캐시된 입력&lt;/th&gt;
&lt;th&gt;출력&lt;/th&gt;
&lt;th&gt;최대 출력&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 4 Argon(도입 기간)&lt;/td&gt;
&lt;td&gt;$2&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 4 Argon(표준)&lt;/td&gt;
&lt;td&gt;$4&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;$20&lt;/td&gt;
&lt;td&gt;1M&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6 Astra&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;$1&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;td&gt;128,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 5.5&lt;/td&gt;
&lt;td&gt;$4&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;$20&lt;/td&gt;
&lt;td&gt;128K(Batch에서 300K, 베타)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;
&lt;td&gt;$2&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;128K(Batch에서 300K, 베타)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6.1 Sol&lt;/td&gt;
&lt;td&gt;$2&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;128,000&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Fable 5.1&lt;/td&gt;
&lt;td&gt;$10&lt;/td&gt;
&lt;td&gt;$0.25&lt;/td&gt;
&lt;td&gt;$50&lt;/td&gt;
&lt;td&gt;128K&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gemini-3.1-pro-preview(프롬프트 &amp;lt;= 200K / &amp;gt; 200K)&lt;/td&gt;
&lt;td&gt;$2 / $4&lt;/td&gt;
&lt;td&gt;$0.20 / $0.40&lt;/td&gt;
&lt;td&gt;$12 / $18&lt;/td&gt;
&lt;td&gt;65,536&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gemini-3.8-flash(도입 기간 / 2027년 1월 1일부터)&lt;/td&gt;
&lt;td&gt;$0.75 / $1.50&lt;/td&gt;
&lt;td&gt;$0.075 / $0.15&lt;/td&gt;
&lt;td&gt;$3.75 / $7.50&lt;/td&gt;
&lt;td&gt;65,536&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;비교 가격은 공급업체 공식 문서에서 가져왔습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://developers.openai.com/api/docs/models/gpt-6-astra" rel="noopener noreferrer"&gt;OpenAI GPT-6 Astra 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://platform.claude.com/docs/en/about-claude/pricing" rel="noopener noreferrer"&gt;Anthropic 가격 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/pricing" rel="noopener noreferrer"&gt;Google Gemini API 가격 페이지&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;비용 관점에서 정리하면 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;표준 Argon은 Claude Opus 5.5와 동일합니다.&lt;/strong&gt; 입력 $4, 출력 $20, 캐시 입력 $0.20입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;도입 기간 Argon은 Claude Sonnet 5.5 및 GPT-6.1 Sol과 입력·출력 요율이 같습니다.&lt;/strong&gt; 모두 입력 $2, 출력 $10입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;GPT-6 Astra와 Claude Fable 5.1은 도입 기간 Argon보다 5배, 표준 Argon보다 2.5배 비쌉니다.&lt;/strong&gt; 자세한 비교는 &lt;a href="https://apidog.com/kr/blog/claude-fable-5-1-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Fable 5.1 가격&lt;/a&gt;을 참고하세요.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Argon의 도입 기간 출력 가격($10)은 gemini-3.1-pro-preview($12)보다 낮습니다.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;긴 프롬프트는 별도 계산이 필요합니다.&lt;/strong&gt; OpenAI는 입력 272K 토큰을 넘는 요청에서 전체 요청의 입력·캐시 비용을 2배, 출력 비용을 1.5배로 청구합니다. Gemini 3.1 Pro도 200K를 넘으면 더 높은 가격 계층을 적용합니다. Anthropic은 이런 계층을 적용하지 않습니다. Argon의 장문 프롬프트 계층 여부는 아직 공개되지 않았습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;가격뿐 아니라 성능까지 비교하려면 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-vs-gpt-6-astra-vs-claude-opus-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon vs GPT-6 Astra vs Claude Opus 5.5&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  사고 토큰은 출력으로 청구됨
&lt;/h2&gt;

&lt;p&gt;현재 Gemini 모델에서는 사고(thinking) 토큰도 출력 토큰으로 청구됩니다. 구글의 &lt;a href="https://ai.google.dev/gemini-api/docs/thinking" rel="noopener noreferrer"&gt;사고 문서&lt;/a&gt;에 따르면 응답 가격은 출력 토큰과 사고 토큰의 합계입니다.&lt;/p&gt;

&lt;p&gt;구글은 Argon에 이 규칙을 명시적으로 문서화하지 않았습니다. 하지만 Argon 평가가 가장 높은 사고 설정으로 실행되었다고 밝혔으므로, &lt;code&gt;$10 / 1M output tokens&lt;/code&gt;는 최종 답변과 내부 추론을 모두 포함하는 비용으로 해석하는 것이 안전합니다.&lt;/p&gt;

&lt;p&gt;예산 계산 시 출력 토큰만 집계하지 말고, 응답 메타데이터에서 사고 토큰이 분리 제공되는지 확인하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  4가지 시나리오 분석
&lt;/h2&gt;

&lt;p&gt;기본 공식은 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;비용 = (토큰 수 / 1,000,000) × 100만 토큰당 요율
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;시나리오 1~3은 캐싱을 사용하지 않는다고 가정합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 일반적인 API 호출: 입력 20K, 출력 5K
&lt;/h3&gt;

&lt;p&gt;도입 기간:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;입력: 20,000 / 1,000,000 × $2  = $0.04
출력:  5,000 / 1,000,000 × $10 = $0.05
총계: $0.09
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;표준 기간:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;입력: $0.08
출력: $0.10
총계: $0.18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;하루 1,000회 호출 시 예상 비용은 다음과 같습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기간&lt;/th&gt;
&lt;th&gt;호출당 비용&lt;/th&gt;
&lt;th&gt;하루 1,000회&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Argon 도입 기간&lt;/td&gt;
&lt;td&gt;$0.09&lt;/td&gt;
&lt;td&gt;$90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Argon 표준 기간&lt;/td&gt;
&lt;td&gt;$0.18&lt;/td&gt;
&lt;td&gt;$180&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;동일한 요청의 모델별 비용은 다음과 같습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;모델&lt;/th&gt;
&lt;th&gt;호출당 비용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 5.5&lt;/td&gt;
&lt;td&gt;$0.18&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6 Astra&lt;/td&gt;
&lt;td&gt;$0.45($0.20 + $0.25)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gemini-3.1-pro-preview&lt;/td&gt;
&lt;td&gt;$0.10($0.04 + $0.06)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;gemini-3.8-flash 도입 기간&lt;/td&gt;
&lt;td&gt;약 $0.034($0.015 + $0.019)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  2. 긴 에이전트 턴: 입력 200K, 출력 50K
&lt;/h3&gt;

&lt;p&gt;도입 기간:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;입력: 200,000 / 1,000,000 × $2  = $0.40
출력:  50,000 / 1,000,000 × $10 = $0.50
총계: $0.90
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;표준 기간:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;입력: $0.80
출력: $1.00
총계: $1.80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;비교하면 GPT-6 Astra는 같은 요청에 &lt;code&gt;$4.50($2.00 + $2.50)&lt;/code&gt;를 청구합니다. gemini-3.1-pro-preview는 &lt;code&gt;$1.00($0.40 + $0.60)&lt;/code&gt;이지만, 200K는 해당 모델의 가격 계층 경계입니다. 이보다 긴 프롬프트는 입력 $4, 출력 $18 요율이 적용됩니다.&lt;/p&gt;

&lt;p&gt;Argon에도 유사한 장문 프롬프트 계층이 생길 수 있으므로, 에이전트 워크플로에서는 다음을 분리해서 측정하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;시스템 프롬프트&lt;/li&gt;
&lt;li&gt;도구 호출 결과&lt;/li&gt;
&lt;li&gt;대화 히스토리&lt;/li&gt;
&lt;li&gt;RAG 문서&lt;/li&gt;
&lt;li&gt;모델 출력 및 사고 토큰&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  3. 최대 출력 응답 한 번: 100만 출력 토큰
&lt;/h3&gt;

&lt;p&gt;출력 비용만 계산하면 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;도입 기간: 1,000,000 / 1,000,000 × $10 = $10.00
표준 기간: 1,000,000 / 1,000,000 × $20 = $20.00
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;100K 토큰 프롬프트를 추가하면 호출당 비용은 다음과 같습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기간&lt;/th&gt;
&lt;th&gt;출력 비용&lt;/th&gt;
&lt;th&gt;100K 입력 비용&lt;/th&gt;
&lt;th&gt;총 비용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;도입 기간&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;td&gt;$10.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;표준 기간&lt;/td&gt;
&lt;td&gt;$20.00&lt;/td&gt;
&lt;td&gt;$0.40&lt;/td&gt;
&lt;td&gt;$20.40&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;표의 다른 모델은 이 정도 출력을 하나의 동기식 응답으로 생성하지 못합니다. 경쟁 모델의 일반적인 최대 출력은 128K이며, 이전 Gemini Pro는 65,536입니다.&lt;/p&gt;

&lt;p&gt;Vals AI에 나열된 최대 출력 262K를 기준으로 계산하면:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;도입 기간: 262,000 / 1,000,000 × $10 = 약 $2.62
표준 기간: 262,000 / 1,000,000 × $20 = 약 $5.24
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;긴 응답을 실제로 운영하려면 타임아웃, 스트리밍, API 게이트웨이 제한도 함께 검증해야 합니다. 관련 구현 고려 사항은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-1m-output-tokens?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon의 100만 출력 토큰&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 캐시된 500K 토큰 프롬프트를 10번 재사용
&lt;/h3&gt;

&lt;p&gt;동일한 500K 토큰 코드베이스 또는 계약 문서를 10번 전송하고, 각 호출이 5K 출력 토큰을 생성한다고 가정합니다.&lt;/p&gt;

&lt;p&gt;가정:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;첫 호출은 전체 입력 가격으로 캐시를 생성합니다.&lt;/li&gt;
&lt;li&gt;이후 9회 호출은 캐시된 입력 가격을 적용합니다.&lt;/li&gt;
&lt;li&gt;출력은 매 호출마다 5K 토큰입니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;10회 호출, 500K 프롬프트, 각 5K 출력&lt;/th&gt;
&lt;th&gt;도입 기간&lt;/th&gt;
&lt;th&gt;표준&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;입력, 캐싱 없음(10 × 500K)&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$20.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;입력, 캐시됨(1회 전체 + 9회 캐시)&lt;/td&gt;
&lt;td&gt;$1.00 + 9 × $0.05 = $1.45&lt;/td&gt;
&lt;td&gt;$2.00 + 9 × $0.10 = $2.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력(10 × 5K)&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;td&gt;$1.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;캐싱 포함 총계&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$1.95&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;$3.90&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;캐싱 없음 총계&lt;/td&gt;
&lt;td&gt;$10.50&lt;/td&gt;
&lt;td&gt;$21.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;이 시나리오에서 캐싱은 입력 비용을 85.5% 절감합니다.&lt;/p&gt;

&lt;p&gt;다만 다음 두 가지는 아직 확인이 필요합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;구글은 Argon의 캐시 저장 비용을 공개하지 않았습니다.&lt;/li&gt;
&lt;li&gt;gemini-3.1-pro-preview는 500K 토큰을 1시간 보관할 때 100만 토큰당 시간당 $4.50을 청구합니다. 동일한 조건이라면 500K 캐시에 $2.25가 추가됩니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Argon의 표준 캐시 입력 요율은 Claude Opus 5.5와 같은 $0.20입니다. 따라서 &lt;a href="https://apidog.com/kr/blog/claude-opus-5-5-prompt-caching-cost-math?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Opus 5.5 프롬프트 캐싱 비용 계산&lt;/a&gt;의 손익분기점 계산 방식을 적용할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  토큰당 가격이 태스크당 비용은 아니다
&lt;/h2&gt;

&lt;p&gt;토큰 단가가 낮아도 모델이 더 많은 출력 또는 사고 토큰을 사용하면 태스크당 비용은 높아질 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://artificialanalysis.ai/models/gemini-4-argon" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt;는 Gemini 4 Argon High 설정의 Intelligence Index 실행 비용을 도입 가격 기준 태스크당 $1.99로, &lt;a href="https://the-decoder.com/google-gemini-4-argon-closes-the-gap-with-openai-and-anthropic-but-doesnt-take-a-clear-lead/" rel="noopener noreferrer"&gt;The Decoder&lt;/a&gt;는 표준 가격 기준 동일 실행 비용을 $3.98로 나열합니다.&lt;/p&gt;

&lt;p&gt;Artificial Analysis는 Argon을 53점으로 평가했으며, 이는 GPT-6 Astra 최대 설정과 같은 점수입니다. Astra의 태스크당 비용은 $3.26입니다.&lt;/p&gt;

&lt;p&gt;핵심 차이는 토큰 볼륨입니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;모델 및 설정&lt;/th&gt;
&lt;th&gt;태스크당 출력 토큰&lt;/th&gt;
&lt;th&gt;출력 단가&lt;/th&gt;
&lt;th&gt;출력 비용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Argon High, 도입 기간&lt;/td&gt;
&lt;td&gt;약 62K&lt;/td&gt;
&lt;td&gt;$10 / 1M&lt;/td&gt;
&lt;td&gt;약 $0.62&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6 Astra 최대 설정&lt;/td&gt;
&lt;td&gt;약 27K&lt;/td&gt;
&lt;td&gt;$50 / 1M&lt;/td&gt;
&lt;td&gt;약 $1.35&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Argon은 출력 단가가 낮지만, Astra보다 약 2.3배 많은 출력 토큰을 사용하는 것으로 측정됐습니다. 표준 기간에서 The Decoder의 Argon 전체 태스크 비용 $3.98은 Astra의 표준 요율보다 60% 낮은 단가에도 불구하고 Artificial Analysis의 Astra 최대 설정 비용 $3.26보다 높습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.vals.ai/models/google_gemini-4-argon" rel="noopener noreferrer"&gt;Vals AI&lt;/a&gt;도 같은 패턴을 보여줍니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Vals Index 모델&lt;/th&gt;
&lt;th&gt;테스트당 비용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Gemini 4 Argon&lt;/td&gt;
&lt;td&gt;$15.68&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Opus 5.5&lt;/td&gt;
&lt;td&gt;$32.14&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Claude Sonnet 5.5&lt;/td&gt;
&lt;td&gt;$21.34&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6.1 Sol&lt;/td&gt;
&lt;td&gt;$3.24&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Sonnet 5.5와 GPT-6.1 Sol은 표면적으로 Argon 도입 가격과 비슷하거나 같지만, 실제 테스트당 비용은 크게 다릅니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;요율표만으로 예산을 세우지 말고, 자신의 워크로드에서 발생하는 입력·출력·사고 토큰을 측정하세요.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Argon 출시 전 설정해야 할 비용 통제
&lt;/h2&gt;

&lt;p&gt;Argon이 일반 제공되기 전에 아래 통제를 현재 Gemini 모델에 적용해 두면 모델 ID만 교체해 바로 검증할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 출력 토큰 상한 설정
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;generateContent&lt;/code&gt;에서는 &lt;code&gt;generationConfig.maxOutputTokens&lt;/code&gt;로 최대 출력을 제한합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"generationConfig"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"maxOutputTokens"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;8192&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;구글은 새 모델이 Interactions API에서 출시된다고 밝혔습니다. Argon 문서가 공개되면 해당 API의 출력 제한 필드를 확인해 같은 정책을 적용하세요.&lt;/p&gt;

&lt;p&gt;100만 토큰 출력 제한은 표준 요율에서 호출당 최대 $20의 출력 비용을 의미합니다. 따라서 작업 유형별 상한을 별도로 두는 것이 좋습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;짧은 질의응답: 1K~4K
코드 리뷰: 4K~16K
긴 문서 생성: 별도 비동기 작업 및 스트리밍
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. 안정적인 콘텐츠 캐싱
&lt;/h3&gt;

&lt;p&gt;시스템 지침, JSON 스키마, 반복 참조 문서, 코드베이스 컨텍스트처럼 호출 간 변경이 적은 콘텐츠는 캐시 대상으로 분리하세요.&lt;/p&gt;

&lt;p&gt;캐싱 후보:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;고정 시스템 프롬프트&lt;/li&gt;
&lt;li&gt;도구 정의 및 함수 스키마&lt;/li&gt;
&lt;li&gt;API 명세&lt;/li&gt;
&lt;li&gt;반복되는 RAG 참조 문서&lt;/li&gt;
&lt;li&gt;코드베이스 또는 계약서 묶음&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;캐싱은 입력 비용을 낮추지만, 저장 비용과 TTL이 공개되면 이를 포함해 손익분기점을 다시 계산해야 합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. 사고 수준을 의도적으로 선택
&lt;/h3&gt;

&lt;p&gt;구글은 Argon의 사고 수준 옵션을 아직 공개하지 않았습니다. 현재 &lt;code&gt;gemini-3.1-pro-preview&lt;/code&gt;는 기본적으로 &lt;code&gt;high&lt;/code&gt;, &lt;code&gt;gemini-3.8-flash&lt;/code&gt;는 &lt;code&gt;medium&lt;/code&gt;으로 설정됩니다.&lt;/p&gt;

&lt;p&gt;Argon 문서가 나오면 다음을 비교 테스트하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;낮은 사고 수준에서 품질이 유지되는가&lt;/li&gt;
&lt;li&gt;사고 토큰이 전체 출력 비용에서 차지하는 비중은 얼마인가&lt;/li&gt;
&lt;li&gt;작업별로 높은 사고 수준이 실제로 필요한가&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;모든 작업에 최대 사고 수준을 적용하면 출력 비용이 예산을 초과할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. 사용량 기반 비용 어설션 추가
&lt;/h3&gt;

&lt;p&gt;모든 &lt;code&gt;generateContent&lt;/code&gt; 응답은 &lt;code&gt;usageMetadata&lt;/code&gt;로 끝납니다. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 모델 ID를 환경 변수로 관리하고, 응답 후 스크립트로 토큰 비용을 계산하세요.&lt;/p&gt;

&lt;p&gt;권장 환경 변수:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GEMINI_MODEL=gemini-3.8-flash
INPUT_RATE=0.75
CACHED_INPUT_RATE=0.075
OUTPUT_RATE=3.75
MAX_COST_PER_REQUEST=0.10
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;비용 계산식은 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;cost = uncached_input / 1,000,000 × input_rate
     + cached_input   / 1,000,000 × cached_rate
     + (output + thinking) / 1,000,000 × output_rate
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;응답 메타데이터의 실제 필드명은 API 문서에 맞춰 확인해야 하지만, 검증 로직은 다음처럼 구성할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;usageMetadata&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;uncachedInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;promptTokenCount&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cachedInput&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;cachedContentTokenCount&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;candidatesTokenCount&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;thinking&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;usage&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;thoughtsTokenCount&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;inputRate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;INPUT_RATE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cachedRate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;CACHED_INPUT_RATE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;outputRate&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;OUTPUT_RATE&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;maxCost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;MAX_COST_PER_REQUEST&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;uncachedInput&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;inputRate&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cachedInput&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;cachedRate&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;output&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;thinking&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;_000_000&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;outputRate&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;요청 비용이 예산 상한 이하이다&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;at&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;most&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;maxCost&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;오늘은 &lt;code&gt;gemini-3.8-flash&lt;/code&gt;로 이 검증을 실행하고, Argon의 모델 ID가 공개되면 &lt;code&gt;GEMINI_MODEL&lt;/code&gt; 변수와 요율 변수만 교체해 다시 실행하면 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  구글이 아직 가격을 책정하지 않은 것
&lt;/h2&gt;

&lt;p&gt;다음 항목은 아직 공개되지 않았습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;도입 기간의 길이와 &lt;code&gt;$4/$20&lt;/code&gt; 요율 시작일&lt;/li&gt;
&lt;li&gt;입력 200K 토큰 초과 시 장문 프롬프트 가격 계층 적용 여부&lt;/li&gt;
&lt;li&gt;Batch 또는 Flex 가격&lt;/li&gt;
&lt;li&gt;캐시 저장 비용&lt;/li&gt;
&lt;li&gt;요청 및 토큰 기준 요율 제한&lt;/li&gt;
&lt;li&gt;무료 계층 제공 여부&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;참고로 Gemini 3.1 Pro는 Batch와 Flex 가격을 제공하며, 입력은 $1/$2, 출력은 $6/$9입니다. Argon도 비슷한 옵션을 제공할지는 아직 알 수 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemini 4 Argon은 100만 토큰당 얼마인가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;도입 기간에는 입력 $2, 출력 $10입니다. 이후에는 입력 $4, 출력 $20입니다. 캐시된 입력은 95% 할인되어 도입 기간에는 $0.10, 이후에는 $0.20입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;도입 가격은 얼마나 오래 지속되나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;구글은 공개하지 않았습니다. 출시 게시물에 종료 날짜나 기간이 없습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;사고 토큰도 출력으로 청구되나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;현재 Gemini 모델에서는 그렇습니다. 구글은 Argon의 규칙을 명시적으로 문서화하지 않았습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;100만 토큰 출력 응답 비용은 얼마인가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;입력 비용을 제외하면 도입 가격은 $10, 표준 가격은 $20입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Argon이 Claude Opus 5.5나 GPT-6 Astra보다 저렴한가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;토큰당 가격 기준으로 표준 Argon은 Claude Opus 5.5와 같고, GPT-6 Astra보다 60% 저렴합니다. 하지만 태스크당 비용은 토큰 사용량에 따라 달라집니다. Artificial Analysis는 Argon이 Astra보다 약 2.3배 많은 출력 토큰을 사용할 수 있다고 측정했습니다.&lt;/p&gt;

&lt;p&gt;더 낮은 비용의 Gemini 모델이 필요하다면 &lt;a href="https://apidog.com/kr/blog/gemini-3-8-flash-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash 가격&lt;/a&gt;을 참고하세요.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;오늘 Argon을 구매할 수 있나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;아니요. 현재 Fairwind Program 파트너에게만 제공됩니다. 유료 API 고객과 Google AI Ultra 구독자가 다음 대상이지만, 구체적인 날짜는 공개되지 않았습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  지금 예산을 세우고 나중에 측정하세요
&lt;/h2&gt;

&lt;p&gt;현재 트래픽의 토큰 사용량에 &lt;code&gt;$2/$10&lt;/code&gt;과 &lt;code&gt;$4/$20&lt;/code&gt; 요율을 각각 적용하면 Argon 도입 기간과 표준 기간의 예산 범위를 계산할 수 있습니다.&lt;/p&gt;

&lt;p&gt;그 다음 실제 측정을 자동화하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog 다운로드&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;GEMINI_MODEL&lt;/code&gt;을 환경 변수로 정의&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;gemini-3.8-flash&lt;/code&gt; 요청 저장&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;usageMetadata&lt;/code&gt;를 기준으로 비용 계산&lt;/li&gt;
&lt;li&gt;호출당 비용 상한을 넘으면 테스트 실패&lt;/li&gt;
&lt;li&gt;Argon 모델 ID가 공개되면 변수만 교체하고 테스트 재실행&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;이렇게 구성하면 Argon이 출시된 첫날부터 추정치가 아닌 실제 호출당 비용으로 운영 결정을 내릴 수 있습니다.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Gemini 4 Argon API: 확정된 내용, 예상 비용, 코드 준비 방법</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:57:34 +0000</pubDate>
      <link>https://dev.to/rihpig/gemini-4-argon-api-hwagjeongdoen-naeyong-yesang-biyong-kodeu-junbi-bangbeob-40o0</link>
      <guid>https://dev.to/rihpig/gemini-4-argon-api-hwagjeongdoen-naeyong-yesang-biyong-kodeu-junbi-bangbeob-40o0</guid>
      <description>&lt;p&gt;아직 공개된 Gemini 4 Argon API는 없으며, Google도 모델 ID를 게시하지 않았습니다. Google은 2026년 9월 30일 Argon을 발표했고, 현재는 Fairwind 프로그램 방어자들(Fairwind 파트너가 Gemini Enterprise에서 관리형 모델로 사용하는 집단)에게만 제공하고 있습니다. &lt;a href="https://artificialanalysis.ai/models/gemini-4-argon/providers" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt;는 Google AI Studio를 Argon의 유일한 API 제공업체로 기재하지만 속도나 지연 시간 데이터는 없습니다. 현재 상태는 가입 가능한 공개 엔드포인트가 아니라 허용 목록 기반의 사전 출시 액세스에 가깝습니다. Google은 더 넓은 출시가 시작되면 “유료 API 고객과 Google AI Ultra 구독자”부터 제공한다고 밝혔으므로, 유료 Gemini API 키를 사용하는 프로젝트가 우선 대상이 될 가능성이 높습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;오늘 Apidog를 사용해 보세요&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;발표와 실제 액세스 사이의 기간에는 전환 준비를 끝낼 수 있습니다. 이 글에서는 Google이 Argon API에 대해 &lt;strong&gt;확인한 내용&lt;/strong&gt;과 &lt;strong&gt;아직 공개하지 않은 내용&lt;/strong&gt;을 구분하고, 오늘 바로 실행 가능한 Gemini 3.8 Flash 코드로 전환 경로를 준비합니다. 목표는 Argon 모델 ID가 공개되었을 때 환경 변수 하나만 바꿔 전환하는 것입니다.&lt;/p&gt;

&lt;p&gt;이 과정에서 다음을 구현합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;모델 ID와 사고 수준을 환경 변수로 분리&lt;/li&gt;
&lt;li&gt;Interactions API와 &lt;code&gt;generateContent&lt;/code&gt; 경로 동시 지원&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;models.list&lt;/code&gt; 기반 출시 감지&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; 응답 모의(mock)&lt;/li&gt;
&lt;li&gt;Argon 표준 가격 기준 비용 상한선 테스트&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;모델 자체는 &lt;a href="https://apidog.com/kr/blog/what-is-gemini-4-argon?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon이 무엇인지&lt;/a&gt;, 출시 단계는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-release-date?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 출시일&lt;/a&gt; 가이드를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 4 Argon API: 확인된 사항과 미공개 사항
&lt;/h2&gt;

&lt;p&gt;Google의 &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon/" rel="noopener noreferrer"&gt;출시 게시물&lt;/a&gt;에서는 가격과 출력 제한을 확인할 수 있습니다. 반면 실제 통합에 필요한 모델 ID, 요율 제한, 배치 지원 등의 정보는 아직 공개되지 않았습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;상태&lt;/th&gt;
&lt;th&gt;세부 정보&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;입력 가격&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;100만 토큰당 $2(도입), 도입 기간 후 $4&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력 가격&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;100만 토큰당 $10(도입), 도입 기간 후 $20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;캐시된 입력&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;입력 95% 할인: 도입 $0.10, 일반 $0.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력 제한&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;64K에서 1M 토큰으로 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API 표면&lt;/td&gt;
&lt;td&gt;신호됨&lt;/td&gt;
&lt;td&gt;Google 문서에 따르면 모든 새 모델은 Interactions API에서 출시&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 ID&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;모델 페이지, 가격 페이지, 변경 로그에 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;입력 컨텍스트 창&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;장문 컨텍스트 평가는 최대 1M 토큰 프롬프트를 사용했으나 사양은 아님&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사고 수준&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;평가는 “최고 사고 설정”으로 실행됨. 이름과 기본값은 미공개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;요율 제한&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;발표된 계층 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;배치 지원&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;배치 또는 Flex 가격 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;장문 프롬프트 계층&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;3.1 Pro는 200K 이상에서 추가 비용이 발생하지만 Argon 규칙은 미공개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;도입 기간 길이&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;$2/$10 가격의 종료일 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;특히 다음 두 항목을 기준으로 구현 전략을 세우는 것이 좋습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;API 표면&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://ai.google.dev/gemini-api/docs/interactions" rel="noopener noreferrer"&gt;Interactions API 문서&lt;/a&gt;는 모든 새 모델이 Interactions API에서 출시된다고 명시합니다. Argon도 먼저 이 API에서 제공될 가능성이 높습니다. 다만 Google은 &lt;code&gt;generateContent&lt;/code&gt; 지원 여부를 아직 밝히지 않았습니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;출력 제한&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Google은 최대 1M 출력 토큰을 언급했지만, Vals AI는 테스트한 구성에서 최대 262K 출력을 나열합니다. 따라서 첫날부터 모든 엔드포인트와 모든 계층에서 1M 출력이 가능하다고 가정하면 안 됩니다. &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-1m-output-tokens?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;1M 출력 토큰 가이드&lt;/a&gt;에서 스트리밍, 시간 초과, 저장소에 미치는 영향을 확인할 수 있습니다.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8t5ilp29xt34iqbdxvd.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fu8t5ilp29xt34iqbdxvd.png" alt="Gemini 4 Argon 관련 이미지" width="800" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;가격 계산도 배포 전에 코드로 검증해 두는 것이 좋습니다. 예를 들어 입력 20,000 토큰, 출력 5,000 토큰 요청의 비용은 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;도입 가격:
20,000 × $2 / 1,000,000 + 5,000 × $10 / 1,000,000
= $0.04 + $0.05
= $0.09

표준 가격:
20,000 × $4 / 1,000,000 + 5,000 × $20 / 1,000,000
= $0.18
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Argon의 도입 출력 가격($10)은 Gemini 3.1 Pro Preview의 $12보다 낮고, 표준 출력 가격은 Claude Opus 5.5와 같습니다. 캐시 입력과 최대 1M 토큰 출력 시나리오는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 가격 분석&lt;/a&gt;에서 확인하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  온라인에서 찾은 모델 ID를 하드코딩하지 마세요
&lt;/h2&gt;

&lt;p&gt;Argon 모델 ID를 검색하면 벤치마크 사이트, 집계 서비스, 오픈소스 PR에서 여러 문자열을 찾을 수 있습니다. 하지만 현재 이 값들은 신뢰할 수 없습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Vals AI는 자체 모델 페이지용 슬러그를 사용합니다.&lt;/li&gt;
&lt;li&gt;일부 GitHub PR은 “임시” 모델 ID를 추가합니다.&lt;/li&gt;
&lt;li&gt;OpenRouter 스타일 경로는 실제 모델 페이지로 연결되지 않을 수 있습니다.&lt;/li&gt;
&lt;li&gt;Google은 이러한 문자열을 공식적으로 확인하지 않았습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;추측한 모델 ID를 하드코딩하면 출시 당일 404 오류가 발생할 수 있습니다. 더 나쁜 경우, 클라이언트 래퍼가 오류를 과도하게 처리해 자동 실패로 이어질 수 있습니다.&lt;/p&gt;

&lt;p&gt;모델 ID는 반드시 환경 변수로 관리하세요. 아래 예제에서는 현재 호출 가능한 안정 모델인 &lt;code&gt;gemini-3.8-flash&lt;/code&gt;를 기본값으로 사용합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.8-flash"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Google이 Argon의 실제 모델 ID를 공개하면 다음 한 줄만 변경하면 됩니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"공식-argon-모델-id"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Gemini 3.8 Flash에서 전환 코드를 준비하세요
&lt;/h2&gt;

&lt;p&gt;Gemini 3.8 Flash(&lt;code&gt;gemini-3.8-flash&lt;/code&gt;)는 Argon이 사용할 것으로 예상되는 엔드포인트, 헤더, 응답 형식으로 실행됩니다. 2026년 12월 31일까지 가격은 입력 100만 토큰당 $0.75, 출력 100만 토큰당 $3.75입니다.&lt;/p&gt;

&lt;p&gt;API 키는 코드에 넣지 말고 환경 변수로 관리하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-api-key"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.8-flash"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_THINKING&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"medium"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;전체 설정은 &lt;a href="https://apidog.com/kr/blog/how-to-use-gemini-3-8-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash API 가이드&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  1단계: Interactions API 요청 보내기
&lt;/h3&gt;

&lt;p&gt;Interactions API는 Google의 주요 API이며 2026년 6월부터 일반적으로 사용할 수 있습니다. Argon의 사고 수준 이름과 기본값은 아직 공개되지 않았으므로, 모델과 사고 수준을 모두 변수로 유지하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;gemini&lt;/span&gt;&lt;span class="p"&gt;-3.8-flash&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
&lt;span class="nv"&gt;THINKING&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GEMINI_THINKING&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;medium&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="nt"&gt;-X&lt;/span&gt; POST &lt;span class="s2"&gt;"https://generativelanguage.googleapis.com/v1beta/interactions"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-goog-api-key: &lt;/span&gt;&lt;span class="nv"&gt;$GEMINI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"{
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;model&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;MODEL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;input&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;List the retry rules a REST client should follow for HTTP 429.&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;,
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;generation_config&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;thinking_level&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;THINKING&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;}
  }"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Python에서는 Interactions API를 사용하기 위해 &lt;code&gt;google-genai&lt;/code&gt; 2.3.0 이상이 필요합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="c1"&gt;# pip install "google-genai&amp;gt;=2.3.0"
&lt;/span&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;google&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;

&lt;span class="n"&gt;MODEL&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gemini-3.8-flash&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="n"&gt;THINKING&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_THINKING&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;medium&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;genai&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nc"&gt;Client&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;  &lt;span class="c1"&gt;# GEMINI_API_KEY를 환경 변수에서 읽음
&lt;/span&gt;
&lt;span class="n"&gt;interaction&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;interactions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;MODEL&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;List the retry rules a REST client should follow for HTTP 429.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;generation_config&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;thinking_level&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;THINKING&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;interaction&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;output_text&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Gemini 3.8 Flash에서 유효한 사고 수준은 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;low
medium  # 기본값
high
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;minimal&lt;/code&gt;을 보내면 HTTP 400이 반환됩니다. 수준별 비용과 응답 품질의 차이는 &lt;a href="https://apidog.com/kr/blog/gemini-3-8-flash-thinking-levels?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;사고 수준 가이드&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;p&gt;다중 턴 작업에서는 이전 응답 ID를 &lt;code&gt;previous_interaction_id&lt;/code&gt;로 전달합니다. 서버 측 저장소를 사용하지 않으려면 &lt;code&gt;store: false&lt;/code&gt;도 함께 전송하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  2단계: &lt;code&gt;generateContent&lt;/code&gt; 경로도 계속 유지하기
&lt;/h3&gt;

&lt;p&gt;기존 Gemini 코드는 대부분 &lt;code&gt;generateContent&lt;/code&gt; 엔드포인트를 사용합니다. Google은 이 경로를 계속 지원한다고 밝혔으므로, 현재 클라이언트 호환성을 위해 유지할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://generativelanguage.googleapis.com/v1beta/models/&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;MODEL&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;:generateContent"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-goog-api-key: &lt;/span&gt;&lt;span class="nv"&gt;$GEMINI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s2"&gt;"{
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;contents&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: [{
      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;parts&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: [{
        &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;text&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;List the retry rules a REST client should follow for HTTP 429.&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;
      }]
    }],
    &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;generationConfig&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {
      &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;thinkingConfig&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: {
        &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;thinkingLevel&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;: &lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;THINKING&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="se"&gt;\"&lt;/span&gt;&lt;span class="s2"&gt;
      }
    }
  }"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;두 API의 사고 수준 필드 경로는 다릅니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;API&lt;/th&gt;
&lt;th&gt;사고 수준 경로&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Interactions API&lt;/td&gt;
&lt;td&gt;&lt;code&gt;generation_config.thinking_level&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;code&gt;generateContent&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;generationConfig.thinkingConfig.thinkingLevel&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;새 모델은 기본적으로 Interactions API로 라우팅하고, &lt;code&gt;generateContent&lt;/code&gt;는 기존 통합 호환용 대체 경로로 유지하는 편이 안전합니다. 함수 호출까지 사용한다면 &lt;a href="https://apidog.com/kr/blog/gemini-3-8-flash-function-calling?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash 함수 호출&lt;/a&gt;도 함께 확인하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  3단계: &lt;code&gt;models.list&lt;/code&gt;로 출시 감지 자동화하기
&lt;/h3&gt;

&lt;p&gt;변경 로그를 수동으로 새로고침하지 말고 API를 직접 확인하세요. 모델 목록 엔드포인트는 사용 가능한 모델, 토큰 제한, 지원 메서드를 반환합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;sys&lt;/span&gt;
&lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;

&lt;span class="n"&gt;resp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;requests&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;https://generativelanguage.googleapis.com/v1beta/models&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="n"&gt;params&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;pageSize&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="n"&gt;headers&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;x-goog-api-key&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="n"&gt;os&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;environ&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;]},&lt;/span&gt;
    &lt;span class="n"&gt;timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;raise_for_status&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;hits&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="n"&gt;model&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;resp&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;models&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;[])&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;argon&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;lower&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;hits&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;name&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;in:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;inputTokenLimit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;out:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;outputTokenLimit&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;methods:&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;supportedGenerationMethods&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="n"&gt;sys&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;exit&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;hits&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;  &lt;span class="c1"&gt;# 일치 시 실패 처리하여 알림 트리거
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이 스크립트는 프로덕션 앱에서 사용하는 동일한 API 키로 실행하세요. cron 또는 CI 스케줄러에서 시간 단위로 실행하면 됩니다.&lt;/p&gt;

&lt;p&gt;Argon이 목록에 나타난 날에는 다음 정보를 즉시 확인할 수 있습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;실제 모델 이름&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;outputTokenLimit&lt;/code&gt;이 전체 1M인지 여부&lt;/li&gt;
&lt;li&gt;지원되는 생성 메서드 목록&lt;/li&gt;
&lt;li&gt;Interactions API 또는 &lt;code&gt;generateContent&lt;/code&gt; 지원 여부&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  4단계: 응답을 모의(mock)해 액세스 전 클라이언트 만들기
&lt;/h3&gt;

&lt;p&gt;Argon 액세스가 없어도 Argon 전환용 클라이언트는 만들 수 있습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에 &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;, &lt;code&gt;GEMINI_MODEL&lt;/code&gt;을 환경 변수로 저장합니다.&lt;/li&gt;
&lt;li&gt;Gemini 3.8 Flash 대상으로 요청을 한 번 전송합니다.&lt;/li&gt;
&lt;li&gt;실제 응답을 엔드포인트의 응답 예제로 저장합니다.&lt;/li&gt;
&lt;li&gt;프로젝트 설정에서 기본 모의 방식을 &lt;strong&gt;Response example first&lt;/strong&gt;로 변경합니다.
경로: &lt;code&gt;프로젝트 설정 → 기능 설정 → 모의 설정&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;생성된 모의 URL을 프런트엔드, 큐 워커, 파서 테스트에 연결합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Apidog의 기본 Smart Mock은 스키마에서 데이터를 생성합니다. 하지만 이 경우에는 실제 Gemini 응답 구조를 그대로 재현해야 하므로, 저장된 응답 예제를 우선 반환하도록 설정하는 편이 적합합니다.&lt;/p&gt;

&lt;p&gt;중요한 점은 이 모의 응답이 &lt;strong&gt;Argon 전용 스키마가 아니라 현재 Gemini 응답 스키마&lt;/strong&gt;라는 것입니다. Google이 Argon 전용 스키마를 아직 공개하지 않았기 때문입니다. 다만 Argon이 동일한 API 표면에서 제공될 것으로 예상되므로, 현재 시점에서는 이 접근이 가장 실용적입니다.&lt;/p&gt;

&lt;p&gt;대용량 Argon 응답 처리도 미리 테스트할 수 있습니다. 저장된 응답 예제의 &lt;code&gt;usageMetadata&lt;/code&gt; 값을 크게 변경한 뒤 다음을 확인하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;청구 알림이 발생하는지&lt;/li&gt;
&lt;li&gt;큐 처리 시간이 제한을 넘는지&lt;/li&gt;
&lt;li&gt;응답 저장소가 충분한지&lt;/li&gt;
&lt;li&gt;프런트엔드 렌더링이 대형 응답을 처리하는지&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  5단계: &lt;code&gt;usageMetadata&lt;/code&gt;와 비용 상한선에 대한 테스트 추가하기
&lt;/h3&gt;

&lt;p&gt;모든 &lt;code&gt;generateContent&lt;/code&gt; 응답에는 &lt;code&gt;usageMetadata&lt;/code&gt;가 포함됩니다. Apidog 후처리 스크립트로 응답 비용을 Argon의 표준 요율로 계산하고, 요청당 예산을 넘으면 테스트를 실패시키세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// Apidog 후처리 스크립트:&lt;/span&gt;
&lt;span class="c1"&gt;// Gemini 4 Argon의 표준 요율로 현재 응답 비용 계산&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;u&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;usageMetadata&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;IN&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;e6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;   &lt;span class="c1"&gt;// 도입 기간 후 입력 토큰당 USD&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;OUT&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;20&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="nx"&gt;e6&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// 도입 기간 후 출력 토큰당 USD&lt;/span&gt;

&lt;span class="c1"&gt;// 현재 Gemini 모델에서는 사고(thinking) 토큰도 출력으로 청구됨&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;out&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;candidatesTokenCount&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;thoughtsTokenCount&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cost&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt;
  &lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;promptTokenCount&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;IN&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
  &lt;span class="nx"&gt;out&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="nx"&gt;OUT&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;usageMetadata가 존재합니다&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;u&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;an&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;object&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Argon 요율에서 비용이 $0.10 미만입니다&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cost&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;below&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mf"&gt;0.10&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;$0.10&lt;/code&gt;은 짧은 프롬프트 테스트에 적합한 예시입니다. 실제 서비스에서는 요청 유형별로 별도 상한선을 두는 편이 좋습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;요청 유형&lt;/th&gt;
&lt;th&gt;권장 방식&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;짧은 질의응답&lt;/td&gt;
&lt;td&gt;요청당 낮은 비용 상한선&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;문서 요약&lt;/td&gt;
&lt;td&gt;입력 토큰 수와 출력 토큰 수 각각 제한&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;장문 생성&lt;/td&gt;
&lt;td&gt;스트리밍, 시간 초과, 저장소 한도 동시 적용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;에이전트 작업&lt;/td&gt;
&lt;td&gt;단계별 예산과 전체 작업 예산 분리&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Google은 Argon에서 사고 토큰을 어떻게 과금할지 아직 명시하지 않았습니다. 위 스크립트는 현재 Gemini의 과금 규칙을 기준으로 합니다. 같은 요청을 지금 Gemini 3.8 Flash에 실행하고, 나중에 Argon에서도 실행하면 토큰 사용량과 비용 차이를 회귀 비교에 활용할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Gemini 4 Argon API를 지금 사용할 수 있나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;공개적으로는 아직 사용할 수 없습니다. Argon은 현재 Fairwind 프로그램 파트너에게만 배포되며, 이들은 Gemini Enterprise를 통해 모델을 사용합니다. 유료 API 고객과 Google AI Ultra 구독자가 다음 대상이지만 구체적인 날짜는 공개되지 않았습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini 4 Argon 모델 ID는 무엇인가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google은 아직 모델 ID를 게시하지 않았습니다. 타사 사이트의 문자열은 자리 표시자일 수 있으므로, 모델 이름은 환경 변수로 관리하고 &lt;code&gt;models.list&lt;/code&gt;를 주기적으로 확인하세요.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Gemini 4 Argon API 비용은 얼마인가요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;기간이 명시되지 않은 도입 기간에는 입력 100만 토큰당 $2, 출력 100만 토큰당 $10입니다. 이후 표준 가격은 입력 $4, 출력 $20입니다. 캐시된 입력은 95% 할인됩니다. 자세한 내용은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 가격 책정&lt;/a&gt;을 참고하세요.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Argon은 &lt;code&gt;generateContent&lt;/code&gt;와 함께 작동하나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Google은 아직 언급하지 않았습니다. 문서에는 모든 새 모델이 Interactions API에서 출시된다고 명시되어 있으므로, 새 통합은 Interactions API를 기준으로 구현하고 &lt;code&gt;generateContent&lt;/code&gt;는 대체 경로로 취급하세요.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Google AI Ultra만 있으면 API에 액세스할 수 있나요?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;아니요. Google AI Ultra는 소비자 구독이며 API 키가 아닙니다. API 접근은 유료 Gemini API 고객부터 시작된다고 발표되었습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  다음 단계
&lt;/h2&gt;

&lt;p&gt;Argon 출시 전에 다음 체크리스트를 완료하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;[ ] 모든 환경에 &lt;code&gt;GEMINI_MODEL&lt;/code&gt; 설정&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;GEMINI_THINKING&lt;/code&gt;을 환경 변수로 분리&lt;/li&gt;
&lt;li&gt;[ ] Interactions API 요청 저장&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;generateContent&lt;/code&gt; 호환 경로 유지&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;models.list&lt;/code&gt; 감지 스크립트를 CI 또는 cron에 등록&lt;/li&gt;
&lt;li&gt;[ ] Apidog에 실제 응답 예제와 모의 URL 구성&lt;/li&gt;
&lt;li&gt;[ ] &lt;code&gt;usageMetadata&lt;/code&gt; 기반 비용 상한선 테스트 추가&lt;/li&gt;
&lt;li&gt;[ ] 대형 응답을 위한 스트리밍, 시간 초과, 저장소 한도 검증&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;해 요청, 모의 응답, 테스트를 하나의 작업 공간에서 관리하세요. Google이 공식 Argon 모델 ID를 게시하면 &lt;code&gt;GEMINI_MODEL&lt;/code&gt; 값 하나만 변경해 전환할 수 있습니다.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>제미니 4 아르곤은 무엇인가요?</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:56:05 +0000</pubDate>
      <link>https://dev.to/rihpig/jemini-4-areugoneun-mueosingayo-5ha2</link>
      <guid>https://dev.to/rihpig/jemini-4-areugoneun-mueosingayo-5ha2</guid>
      <description>&lt;p&gt;Gemini 4 Argon은 Google의 새로운 최첨단 모델로, 2026년 9월 30일에 발표되었습니다. 현재는 검증된 사이버 방어 파트너 그룹인 Fairwind 프로그램의 방어자만 사용할 수 있습니다. Google은 출시 기념 기간에 입력 토큰 100만 개당 2달러, 출력 토큰 100만 개당 10달러로 가격을 책정했으며, 이후에는 각각 4달러와 20달러로 인상하고 응답당 출력 제한을 100만 토큰으로 늘릴 예정입니다. 아직 공개 API, 게시된 모델 ID, 출시일은 없습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog를 사용해 보세요&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 가이드는 Argon 관련 정보를 구현 관점에서 정리합니다. Google이 확인한 내용과 확인하지 않은 내용, Gemini 라인업에서 Argon의 위치, 접근 대상, 비용, 벤치마크, 그리고 공개 전부터 준비할 수 있는 API 통합 방법을 다룹니다. 지금 모델을 비교 중이라면 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-vs-gpt-6-astra-vs-claude-opus-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon vs GPT-6 Astra vs Claude Opus 5.5 비교&lt;/a&gt;를 참고하세요. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 모델 API를 테스트한다면, 마지막 섹션의 환경 변수 방식으로 Argon 전환을 모델 이름 한 값 변경으로 처리할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Google이 확인한 내용 vs 확인하지 않은 내용
&lt;/h2&gt;

&lt;p&gt;초기 보도에는 Google 발표 내용과 제3자 추측이 섞여 있습니다. 구현 계획을 세울 때는 &lt;a href="https://blog.google/innovation-and-ai/models-and-research/gemini-models/gemini-4-argon" rel="noopener noreferrer"&gt;출시 게시물&lt;/a&gt; 및 Google의 &lt;a href="https://deepmind.google/models/evals-methodology/gemini-4-argon" rel="noopener noreferrer"&gt;평가 방법론&lt;/a&gt;을 기준으로 확인된 정보만 사용하세요.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;상태&lt;/th&gt;
&lt;th&gt;알려진 내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;발표&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;2026년 9월 30일, Google DeepMind의 Koray Kavukcuoglu&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;현재 접근&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;Fairwind 프로그램 파트너 중 일부&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;다음 대상&lt;/td&gt;
&lt;td&gt;확인됨, 날짜 미정&lt;/td&gt;
&lt;td&gt;유료 API 고객 및 Google AI Ultra 구독자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;가격&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;초기 1M 토큰당 $2/$10, 이후 $4/$20; 캐시된 입력 95% 할인&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력 제한&lt;/td&gt;
&lt;td&gt;확인됨&lt;/td&gt;
&lt;td&gt;64K에서 1M 토큰으로 증가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;벤치마크&lt;/td&gt;
&lt;td&gt;확인됨, Google 보고&lt;/td&gt;
&lt;td&gt;19개 행 표 및 방법론 PDF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 ID&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;온라인의 문자열은 제3자 플레이스홀더&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;입력 컨텍스트 창&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;Google의 긴 컨텍스트 평가는 최대 1M 토큰의 프롬프트 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;지식 차단 시점&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;Google로부터 아무것도 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;초기 기간 길이&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;$4/$20로 전환되는 날짜 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;요금 제한, 무료 등급&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;Google로부터 아무것도 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출시일&lt;/td&gt;
&lt;td&gt;미공개&lt;/td&gt;
&lt;td&gt;“가능한 한 빨리”&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Argon의 컨텍스트 창, 모델 문자열, 속도 수치가 다른 사이트에 표시되더라도 Google 공식 문서에 게시되기 전까지는 검증되지 않은 정보로 취급하세요. 특히 모델 ID는 하드코딩하지 않는 것이 중요합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 4 Argon은 무엇이며, 어떤 위치에 있나요?
&lt;/h2&gt;

&lt;p&gt;Argon은 현재까지 발표된 유일한 Gemini 4 모델이며 Google 라인업의 새로운 최상위 모델입니다. Google은 이를 “복잡하고 장기적인 워크플로우 전반에 걸쳐 심층적인 추론을 유지”하도록 구축된 “새로운 최첨단 모델”이라고 설명합니다. 소프트웨어 엔지니어링, 법률·금융 같은 기업 지식 작업, 사이버 보안 방어에서 최첨단 성능을 주장합니다.&lt;/p&gt;

&lt;p&gt;Google 대변인은 로이터 통신에 Argon이 이전 “Pro” 모델 라인보다 더 크다고 말했습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqxf7nmshquu944yze0f.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fbqxf7nmshquu944yze0f.png" alt="Gemini 4 Argon 관련 이미지" width="800" height="802"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;현재 Gemini API의 최상위 모델은 여전히 Preview 상태인 &lt;code&gt;gemini-3.1-pro-preview&lt;/code&gt;입니다. 이 모델은 입력 토큰 1,048,576개와 출력 토큰 65,536개를 지원하며, 200K 프롬프트까지 입력 100만 토큰당 2달러, 출력 100만 토큰당 12달러입니다.&lt;/p&gt;

&lt;p&gt;Argon의 출시 기념 출력 가격은 100만 토큰당 10달러로, 3.1 Pro의 출력 가격보다 낮습니다. 다만 Google은 다음 정보를 아직 공개하지 않았습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Argon에 3.1 Pro와 같은 별도의 긴 프롬프트 가격 구간이 있는지&lt;/li&gt;
&lt;li&gt;Gemini 4 계열의 다른 모델이 뒤따르는지&lt;/li&gt;
&lt;li&gt;공개 API에서 사용할 모델 ID&lt;/li&gt;
&lt;li&gt;일반 API 고객의 정확한 접근 시점&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google은 Argon을 내부적으로 이미 사용 중이라고 밝혔습니다. 수천 명의 직원이 코딩, 연구, 글쓰기에 사용하고 있으며, Argon 에이전트가 300TiB 이상의 플릿 메모리를 확보하고 C/C++ 코드를 Rust로 마이그레이션하고 있다고 설명했습니다. Fuchsia Zircon 커널에서는 800K줄 이상의 재작업이 상용화 전 감사 중이라고 밝혔습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  오늘 Gemini 4 Argon을 사용할 수 있는 사람과 다음 대상
&lt;/h2&gt;

&lt;h3&gt;
  
  
  오늘: Fairwind 파트너 중 일부
&lt;/h3&gt;

&lt;p&gt;Fairwind는 650개 이상의 파트너를 보유한 Google의 제한적 접근 사이버 방어 프로그램입니다. 다만 현재 Argon을 사용할 수 있는 대상은 “Fairwind 프로그램 파트너 중 일부”에 한정됩니다.&lt;/p&gt;

&lt;p&gt;이들은 Argon 자체 또는 Google 코드 보안 에이전트인 CodeMender 내에서 Argon을 사용할 수 있습니다. 직접 접근은 “Gemini Enterprise의 관리형 모델” 형태이며, 제로 데이터 보존을 지원합니다.&lt;/p&gt;

&lt;p&gt;접근 조건에는 다음이 포함됩니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;피싱 방지 MFA 동의&lt;/li&gt;
&lt;li&gt;내부 보안, 사고 대응 또는 침투 테스트 팀으로 접근 제한&lt;/li&gt;
&lt;li&gt;직원별 사용량 추적&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;정부, 중요 인프라 운영자, 핵심 기술 플랫폼은 &lt;a href="https://deepmind.google/fairwind-program/" rel="noopener noreferrer"&gt;Fairwind 프로그램 페이지&lt;/a&gt;에서 신청할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  다음: 유료 API 고객 및 Google AI Ultra 구독자
&lt;/h3&gt;

&lt;p&gt;Google은 초기 테스터의 피드백을 수집하면서 가드레일을 반복 적용한 뒤 유료 API 고객과 Google AI Ultra 구독자로 접근 범위를 확대할 예정입니다. 미국 정부의 자발적 사전 출시 접근 프로세스에도 참여하고 있습니다.&lt;/p&gt;

&lt;p&gt;출시 게시물의 배포 섹션은 “곧 출시 예정”으로 표시되지만 날짜는 명시하지 않습니다. 접근 단계는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-release-date?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 출시일 및 접근 가이드&lt;/a&gt;에서 추적할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  아직: 그 외 모든 개발자
&lt;/h3&gt;

&lt;p&gt;10월 1일 기준으로 다음 서비스에는 Argon이 표시되지 않습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://ai.google.dev/gemini-api/docs/models" rel="noopener noreferrer"&gt;Gemini API 모델 페이지&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Gemini 가격 페이지&lt;/li&gt;
&lt;li&gt;Gemini 앱&lt;/li&gt;
&lt;li&gt;Antigravity&lt;/li&gt;
&lt;li&gt;OpenRouter&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google AI Ultra 플랜은 미국에서 월 99.99달러부터 시작하는 소비자 구독이며 API 키가 아닙니다. Google은 어떤 Ultra 등급이 Argon을 먼저 사용할 수 있는지 공개하지 않았습니다. 무료 접근 경로도 발표되지 않았습니다.&lt;/p&gt;

&lt;p&gt;대신 현재 사용할 수 있는 옵션은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon은 무료인가요&lt;/a&gt;에서 확인하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 4 Argon 가격
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;토큰 유형&lt;/th&gt;
&lt;th&gt;초기 기간(100만 개당)&lt;/th&gt;
&lt;th&gt;초기 기간 이후(100만 개당)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;입력&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;td&gt;$4.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;캐시된 입력(95% 할인)&lt;/td&gt;
&lt;td&gt;$0.10&lt;/td&gt;
&lt;td&gt;$0.20&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;출력&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$20.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1M 토큰 전체 응답(출력만)&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$20.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Google은 초기 가격 기간이 언제 끝나는지 공개하지 않았습니다.&lt;/p&gt;

&lt;p&gt;표준 요율에서 Argon은 Claude Opus 5.5와 동일한 비용입니다. 초기 요율에서는 GPT-6.1 Sol 및 Claude Sonnet 5.5와 일치합니다. 캐시 입력 가격은 Google이 발표한 95% 할인 규칙을 적용한 값입니다.&lt;/p&gt;

&lt;p&gt;요청 규모별 비용 계산 예시는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-pricing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 가격&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  1M 출력 제한
&lt;/h2&gt;

&lt;p&gt;Google은 모델의 출력 토큰 제한을 기존 64K 토큰에서 최대 1M 토큰으로 확장한다고 밝혔습니다. 이는 긴 코드 생성, 대규모 문서 분석 결과, 복잡한 에이전트 작업 결과를 한 요청에서 더 길게 생성할 수 있음을 의미합니다.&lt;/p&gt;

&lt;p&gt;비교하면 GPT-6 Astra, Claude Opus 5.5, Claude Fable 5.1은 각각 동기식 출력을 128K로 제한합니다.&lt;/p&gt;

&lt;p&gt;구현 시 다음 두 가지를 구분해야 합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;1M은 출력 제한입니다.&lt;/strong&gt; 입력 컨텍스트 창 사양이 아닙니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;실제 엔드포인트 제한을 확인해야 합니다.&lt;/strong&gt; Google은 1M 출력 제한을 발표했지만, &lt;a href="https://www.vals.ai/models/google_gemini-4-argon" rel="noopener noreferrer"&gt;Vals AI&lt;/a&gt;는 테스트한 구성에서 최대 출력 262K를 표시합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;따라서 출시 후에는 문서만 확인하지 말고 실제 API 응답과 모델 메타데이터를 기준으로 제한을 설정하세요. 타임아웃, 스트리밍, 비용 상한 구성은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-1m-output-tokens?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon의 1M 출력 토큰 가이드&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  Gemini 4 Argon 벤치마크: 주요 내용
&lt;/h2&gt;

&lt;p&gt;아래 수치는 Google 표에서 가져온 값입니다. Argon 점수는 Google 보고 수치이며, 일부는 자체 계산되고 일부는 Vals AI 같은 리더보드에서 가져왔습니다. 경쟁 모델 점수는 대부분 각 공급업체 또는 공개 리더보드 결과이며, 측정 환경과 도구가 다를 수 있습니다.&lt;/p&gt;

&lt;p&gt;재집계 기준으로 Argon은 19개 행 중 13개에서 선두를 차지하고, 1개는 동점이며, 5개에서는 뒤처집니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;벤치마크&lt;/th&gt;
&lt;th&gt;Gemini 4 Argon&lt;/th&gt;
&lt;th&gt;GPT-6 Astra&lt;/th&gt;
&lt;th&gt;Claude Fable 5.1&lt;/th&gt;
&lt;th&gt;Claude Opus 5.5&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Vals Index&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;68.9%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;63.1%&lt;/td&gt;
&lt;td&gt;65.8%&lt;/td&gt;
&lt;td&gt;67.0%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;DeepSWE v1.1&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;77.9%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;74.1%&lt;/td&gt;
&lt;td&gt;67.4%&lt;/td&gt;
&lt;td&gt;74.2%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GraphWalks 256K ~ 1M(F1)&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;84.2%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;71.8%&lt;/td&gt;
&lt;td&gt;65.0%&lt;/td&gt;
&lt;td&gt;66.8%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FrontierSWE v2&lt;/td&gt;
&lt;td&gt;55.0%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;65.5%&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;56.3%&lt;/td&gt;
&lt;td&gt;62.3%&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-bench 4.0&lt;/td&gt;
&lt;td&gt;57.4%&lt;/td&gt;
&lt;td&gt;58.2%&lt;/td&gt;
&lt;td&gt;57.9%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;66.4%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PostTrainBench&lt;/td&gt;
&lt;td&gt;45.3%&lt;/td&gt;
&lt;td&gt;44.3%&lt;/td&gt;
&lt;td&gt;40.2%&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;49.3%&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Argon이 뒤처지는 항목은 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;FrontierSWE v2&lt;/li&gt;
&lt;li&gt;Terminal-Bench Science 0.1&lt;/li&gt;
&lt;li&gt;OSWorld-2.0&lt;/li&gt;
&lt;li&gt;Terminal-bench 4.0&lt;/li&gt;
&lt;li&gt;PostTrainBench&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;FrontierSWE v2, Terminal-Bench Science 0.1, OSWorld-2.0에서는 GPT-6 Astra보다 낮았고, Terminal-bench 4.0 및 PostTrainBench에서는 Claude Opus 5.5보다 낮았습니다.&lt;/p&gt;

&lt;p&gt;제3자 평가에서는 명확한 단독 선두보다는 최첨단 모델군에 위치합니다. &lt;a href="https://artificialanalysis.ai/models/gemini-4-argon" rel="noopener noreferrer"&gt;Artificial Analysis&lt;/a&gt;는 Argon에 Intelligence Index 53점을 부여했으며, GPT-6 Astra 및 Claude Fable 5.1과 동점입니다. Claude Opus 5.5(58점) 및 Claude Sonnet 5.5 최대 설정(56점)보다는 낮습니다. Vals는 Vals Index에서 Argon을 41개 모델 중 1위로 평가했습니다.&lt;/p&gt;

&lt;p&gt;전체 19개 항목과 방법론은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-benchmarks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon 벤치마크&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8q0dk2sp7ebli2h9htti.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8q0dk2sp7ebli2h9htti.png" alt="Gemini 4 Argon 벤치마크 이미지" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  사이버 방어 요약
&lt;/h2&gt;

&lt;p&gt;Google은 Argon이 중요한 소프트웨어 취약점을 자율적으로 찾아내고, 검증하고, 패치할 수 있다고 설명합니다. 신뢰할 수 있는 방어자와 내부 팀에는 사이버 가드레일 없이 Argon을 제공해 최첨단 사이버 보안 방어 기능을 활용하게 할 것이라고 밝혔습니다.&lt;/p&gt;

&lt;p&gt;DeepMind의 &lt;a href="https://deepmind.google/models/gemini/cyber/" rel="noopener noreferrer"&gt;사이버 페이지&lt;/a&gt;에 따르면 Argon은 다음 결과를 기록했습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;실제 취약점 발견: &lt;strong&gt;85.8%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Gemini 3.8 Flash Cyber 실제 취약점 발견: &lt;strong&gt;71.0%&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;CWE-bench v1: Grok 4.7 및 GPT-6 Astra와 &lt;strong&gt;68% 동점&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Gray Swan 간접 프롬프트 주입 공격 성공률: 차트 최저 수준인 &lt;strong&gt;k=15에서 0.7%&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;현재 운영 중인 API에 미칠 수 있는 영향은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-cyber-defense?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon의 사이버 출시가 현재 실행 중인 API에 미치는 영향&lt;/a&gt;에서 확인할 수 있습니다. 전작 모델은 &lt;a href="https://apidog.com/kr/blog/what-is-gemini-3-8-flash-cyber?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash Cyber&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  개발자로서 지금 해야 할 일
&lt;/h2&gt;

&lt;p&gt;Argon은 아직 공개 API에서 호출할 수 없으므로, 지금은 현재 사용 가능한 모델을 기준으로 구현하고 모델 이름을 환경 변수 하나로 분리하세요.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;gemini-3.8-flash&lt;/code&gt;는 현재 대체 모델입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;안정적 상태&lt;/li&gt;
&lt;li&gt;입력 토큰 1,048,576개 지원&lt;/li&gt;
&lt;li&gt;출력 토큰 65,536개 지원&lt;/li&gt;
&lt;li&gt;무료 등급 제공&lt;/li&gt;
&lt;li&gt;2026년 12월 31일까지 입력/출력 100만 토큰당 $0.75/$3.75&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Google의 &lt;a href="https://ai.google.dev/gemini-api/docs/interactions" rel="noopener noreferrer"&gt;Interactions API 문서&lt;/a&gt;는 모든 새 모델, 멀티모달 기능, 도구, 에이전트 기능이 Interactions API에서 출시될 것이라고 명시합니다. 따라서 새 통합은 Interactions API를 기준으로 작성하는 것이 좋습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 모델 이름을 환경 변수로 분리하기
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-api-key"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"gemini-3.8-flash"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. Interactions API 요청 만들기
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;MODEL&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;GEMINI_MODEL&lt;/span&gt;&lt;span class="k"&gt;:-&lt;/span&gt;&lt;span class="nv"&gt;gemini&lt;/span&gt;&lt;span class="p"&gt;-3.8-flash&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

curl &lt;span class="nt"&gt;-s&lt;/span&gt; &lt;span class="s2"&gt;"https://generativelanguage.googleapis.com/v1beta/interactions"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"x-goog-api-key: &lt;/span&gt;&lt;span class="nv"&gt;$GEMINI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "'&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$MODEL&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s1"&gt;'",
    "input": "List the breaking changes in this OpenAPI diff.",
    "generation_config": {
      "thinking_level": "medium"
    }
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  3. 토큰 사용량 검증 추가하기
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 위 요청을 저장하고 &lt;code&gt;GEMINI_API_KEY&lt;/code&gt;, &lt;code&gt;GEMINI_MODEL&lt;/code&gt;을 환경 변수로 관리하세요. 테스트에서는 응답의 &lt;code&gt;usage&lt;/code&gt; 객체를 검증해 예상보다 큰 응답이 배포 전 단계에서 실패하도록 구성할 수 있습니다.&lt;/p&gt;

&lt;p&gt;특히 출력 비용을 계산할 때는 다음을 함께 확인하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;total_output_tokens + total_thought_tokens
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;생각하는 과정에 사용된 토큰도 출력으로 과금되므로, 단순 생성 텍스트 길이만 기준으로 비용 상한을 설정하면 안 됩니다.&lt;/p&gt;

&lt;p&gt;권장 워크플로우는 다음과 같습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;gemini-3.8-flash&lt;/code&gt; 응답을 기준선으로 저장합니다.&lt;/li&gt;
&lt;li&gt;요청별 입력·출력·생각 토큰 상한을 정의합니다.&lt;/li&gt;
&lt;li&gt;Argon 모델 ID가 공식 모델 목록에 나타나면 &lt;code&gt;GEMINI_MODEL&lt;/code&gt;만 교체합니다.&lt;/li&gt;
&lt;li&gt;동일한 요청 컬렉션을 다시 실행합니다.&lt;/li&gt;
&lt;li&gt;응답 품질, 지연 시간, 토큰 사용량, 비용을 기준선과 비교합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;요청 형식은 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 4 Argon API 가이드&lt;/a&gt;를 참고하세요. 공개 후 전환 가치 판단에는 &lt;a href="https://apidog.com/kr/blog/gemini-4-argon-vs-gemini-3-8-flash?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Argon vs Gemini 3.8 Flash&lt;/a&gt;가 도움이 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Gemini API에서 Gemini 4 Argon을 사용할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;아직은 아닙니다. 현재는 Fairwind 파트너 중 일부만 사용할 수 있으며, 공개 모델 목록에는 포함되어 있지 않습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon 모델 ID는 무엇인가요?
&lt;/h3&gt;

&lt;p&gt;Google은 모델 ID를 게시하지 않았습니다. 평가자 슬러그를 포함해 온라인에 유통되는 문자열은 제3자 플레이스홀더일 수 있으므로 하드코딩하지 마세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  개발자를 위한 Gemini 4 Argon 출시는 언제인가요?
&lt;/h3&gt;

&lt;p&gt;Google은 날짜를 명시하지 않았습니다. 유료 API 고객과 Google AI Ultra 구독자가 “가능한 한 빨리” 먼저 이용할 수 있다고만 밝혔습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon이 GPT-6 Astra 및 Claude Opus 5.5보다 더 좋나요?
&lt;/h3&gt;

&lt;p&gt;Google 표에서는 대부분의 항목에서 선두를 차지하지만, Artificial Analysis에서는 GPT-6 Astra와 동점이고 Claude Opus 5.5보다는 낮습니다. 경쟁 모델 정보는 &lt;a href="https://apidog.com/kr/blog/what-is-claude-opus-5-5?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Claude Opus 5.5란 무엇인가요&lt;/a&gt;와 &lt;a href="https://apidog.com/kr/blog/gpt-6-astra-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6 Astra API 가이드&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  Gemini 4 Argon은 1M 컨텍스트 창을 가지고 있나요?
&lt;/h3&gt;

&lt;p&gt;Google은 공개하지 않았습니다. 1M은 출력 제한입니다. 긴 컨텍스트 평가는 최대 1M 토큰 프롬프트를 사용했지만, 이는 공개된 입력 컨텍스트 창 사양이 아닙니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Argon 출시 전에 준비하세요
&lt;/h2&gt;

&lt;p&gt;Argon은 발표되고 가격과 벤치마크가 공개됐지만, 아직 일반 개발자가 호출할 수 있는 모델은 아닙니다.&lt;/p&gt;

&lt;p&gt;지금 할 수 있는 준비는 명확합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/kr/blog/how-to-use-gemini-3-8-flash-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Gemini 3.8 Flash API 가이드&lt;/a&gt;를 기준으로 현재 모델을 통합합니다.&lt;/li&gt;
&lt;li&gt;모델 ID를 코드에 하드코딩하지 않고 환경 변수 하나로 관리합니다.&lt;/li&gt;
&lt;li&gt;모든 요청에 토큰 사용량과 비용 상한 검증을 추가합니다.&lt;/li&gt;
&lt;li&gt;기준 응답과 테스트 케이스를 저장합니다.&lt;/li&gt;
&lt;li&gt;Argon이 공개되면 모델 변수만 교체해 동일한 테스트를 다시 실행합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;요청, 환경 변수, 기준선을 미리 준비하려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;해 API 요청을 저장하고 테스트 자동화를 구성하세요.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>개발자용 ChatGPT 로그인: OAuth 연동, 요금제 사용량, API 요금 영향</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:50:55 +0000</pubDate>
      <link>https://dev.to/rihpig/gaebaljayong-chatgpt-rogeuin-oauth-yeondong-yogeumje-sayongryang-api-yogeum-yeonghyang-2f3m</link>
      <guid>https://dev.to/rihpig/gaebaljayong-chatgpt-rogeuin-oauth-yeondong-yogeumje-sayongryang-api-yogeum-yeonghyang-2f3m</guid>
      <description>&lt;p&gt;"ChatGPT로 로그인"은 전 세계 ChatGPT 사용자가 사용할 수 있는 OpenAI의 OAuth 2.0 및 OpenID Connect(OIDC) 로그인 서비스입니다. 앱은 안정적인 계정 ID와 사용자의 이름, 이메일 주소, 프로필 사진을 받을 수 있습니다. 2026년 9월 29일 DevDay 이후 Plus 및 Pro 사용자는 참여 앱에서 설정한 앱별 주간 한도 내에서, 앱의 API 키 대신 자신의 ChatGPT 요금제로 AI 요청을 실행하도록 승인할 수 있습니다. 앱은 사용자의 ChatGPT 대화, 메모리 또는 OpenAI API 키를 받지 않습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog를 사용해 보세요&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 기능은 로그인뿐 아니라 AI 요청의 비용 처리 방식에도 영향을 줍니다. 이 글에서는 OAuth/OIDC 흐름, 사용자 요금제 사용 방식, 현재 통합 가능한 대상, 앱 API 키와 사용자 요금제를 선택하는 기준, 그리고 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 로그인 및 실패 경로를 테스트하는 방법을 다룹니다. 이벤트 전체 내용은 &lt;a href="https://apidog.com/kr/blog/openai-devday-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DevDay 2026 요약&lt;/a&gt;을 참고하세요. 신원 확인과 권한 부여의 차이가 불분명하다면 먼저 &lt;a href="https://apidog.com/kr/blog/oauth-vs-openid?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OAuth 대 OpenID&lt;/a&gt;를 읽어보세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  ChatGPT로 로그인 개요
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;OpenAI 문서 내용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;신원 확인 범위&lt;/td&gt;
&lt;td&gt;&lt;code&gt;openid profile email&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;요금제 사용 범위(오픈 소스 흐름)&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;offline_access resource.invoke chatgpt.tokens.use.direct&lt;/code&gt;, &lt;code&gt;resource=https://api.openai.com/v1&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;앱이 받는 항목&lt;/td&gt;
&lt;td&gt;ID 토큰, 요금제 사용 시 액세스 토큰 및 새로고침 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;요금제 사용 자격&lt;/td&gt;
&lt;td&gt;참여 앱의 Plus 및 Pro 사용자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사용량이 계산되는 위치&lt;/td&gt;
&lt;td&gt;요금제의 ChatGPT Work 및 Codex 사용량&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;앱별 제어&lt;/td&gt;
&lt;td&gt;전체 주간 사용량의 일부로 설정하는 주간 상한선. 상한선 이후 크레딧 사용은 기본 비활성화&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;요금제 사용 토큰&lt;/td&gt;
&lt;td&gt;액세스 토큰 1시간, 새로고침 토큰 30일. 새로고침 시 토큰 교체&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;개발자 접근&lt;/td&gt;
&lt;td&gt;상업용 앱은 관심 양식을 통한 제한적 시험 사용, 오픈 소스 앱은 셀프 서비스&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;출처: OpenAI의 &lt;a href="https://developers.openai.com/siwc" rel="noopener noreferrer"&gt;ChatGPT로 로그인 문서&lt;/a&gt;, &lt;a href="https://developers.openai.com/siwc/token-sharing-open-source/token-reference" rel="noopener noreferrer"&gt;토큰 참조&lt;/a&gt;, &lt;a href="https://help.openai.com/en/articles/20001542-using-your-chatgpt-plan-in-other-apps-and-sites" rel="noopener noreferrer"&gt;다른 앱에서 ChatGPT 요금제 사용&lt;/a&gt; 도움말 문서.&lt;/p&gt;

&lt;h2&gt;
  
  
  앱이 받는 것과 받지 않는 것
&lt;/h2&gt;

&lt;p&gt;신원 확인은 기본 흐름입니다. &lt;code&gt;openid profile email&lt;/code&gt; 범위를 요청하면 클라이언트는 ID 토큰을 받습니다. &lt;a href="https://developers.openai.com/siwc/website" rel="noopener noreferrer"&gt;웹사이트 가이드&lt;/a&gt;에 따르면:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;profile&lt;/code&gt;: 이름, 프로필 사진 등 사용 가능한 프로필 클레임&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;email&lt;/code&gt;: 이메일 주소 및 이메일 확인 클레임&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;신원 확인 범위는 ChatGPT 대화나 OpenAI API 리소스 접근 권한을 부여하지 않습니다.&lt;/p&gt;

&lt;p&gt;사용자를 이메일 주소만으로 식별하지 마세요. 확인된 &lt;code&gt;sub&lt;/code&gt; 값과 발급자(&lt;code&gt;iss&lt;/code&gt;), 클라이언트 ID(&lt;code&gt;aud&lt;/code&gt;)를 함께 기준으로 계정을 식별해야 합니다. OpenAI는 이메일 일치만으로 계정 소유권을 증명할 수 없다고 경고합니다. 기존 계정에 연결할 때는 사용자에게 별도의 연결 확인을 요청하세요.&lt;/p&gt;

&lt;p&gt;요금제 사용은 별도 승인입니다. 사용자가 추가 범위를 승인하면, 적격한 Responses API 요청에 사용할 액세스 토큰이 토큰 응답에 포함됩니다. 신원 확인만 사용하는 클라이언트에는 &lt;code&gt;access_token&lt;/code&gt;이 필요하지 않으며 &lt;code&gt;id_token&lt;/code&gt;만 처리하면 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  OAuth 흐름 구현하기
&lt;/h2&gt;

&lt;p&gt;웹사이트 흐름은 PKCE를 사용하는 표준 &lt;a href="https://apidog.com/kr/blog/oauth-2-flows?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OAuth 2.0 권한 부여 코드 흐름&lt;/a&gt;과 OIDC를 사용합니다.&lt;/p&gt;

&lt;p&gt;먼저 &lt;code&gt;https://auth.openai.com/.well-known/openid-configuration&lt;/code&gt;에서 OpenID Connect 설정을 로드하세요. 문서에 명시된 주요 엔드포인트는 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Issuer:                 https://auth.openai.com
Authorization endpoint: https://auth.openai.com/api/accounts/authorize
Token endpoint:         https://auth.openai.com/api/accounts/oauth/token
JWKS URI:               https://auth.openai.com/.well-known/jwks.json
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;구현 순서는 다음과 같습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;백엔드에서 요청마다 새로운 &lt;code&gt;state&lt;/code&gt;, PKCE 검증자와 S256 챌린지, &lt;code&gt;nonce&lt;/code&gt;를 생성합니다.&lt;/li&gt;
&lt;li&gt;클라이언트 ID, 등록된 리디렉션 URI, 요청 범위를 포함해 브라우저를 권한 부여 엔드포인트로 보냅니다.&lt;/li&gt;
&lt;li&gt;사용자가 로그인 및 동의를 완료하면 OpenAI가 콜백 URL로 authorization code를 반환합니다.&lt;/li&gt;
&lt;li&gt;백엔드에서 &lt;code&gt;state&lt;/code&gt;를 검증하고, code를 토큰으로 교환합니다.&lt;/li&gt;
&lt;li&gt;ID 토큰의 서명, 발급자, 대상, 만료 시간, &lt;code&gt;nonce&lt;/code&gt;를 검증합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;sub&lt;/code&gt;를 기준으로 로컬 계정을 조회·생성·연결한 뒤 앱 자체 세션을 발급합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;공개 클라이언트는 클라이언트 시크릿을 전송하지 않습니다. &lt;code&gt;client_secret_basic&lt;/code&gt;을 사용하는 기밀 클라이언트는 HTTP Basic 인증 헤더에만 시크릿을 넣어야 합니다.&lt;/p&gt;

&lt;p&gt;오픈 소스 도구의 등록 방식은 다릅니다. &lt;a href="https://developers.openai.com/siwc/token-sharing-open-source/sign-in" rel="noopener noreferrer"&gt;오픈 소스 로그인 가이드&lt;/a&gt;에 따르면 다음 값으로 시작합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;client_id=dynamic_agent_client&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;앱 이름을 지정하는 &lt;code&gt;agent_name_hint&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;호스트별로 영구 보관하는 &lt;code&gt;ext_agent_host_id&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;콜백에서는 이후 저장하고 재사용할 발급된 클라이언트 ID(예: &lt;code&gt;oaiapp_...&lt;/code&gt;)를 반환합니다. 리디렉션 URI는 &lt;code&gt;127.0.0.1&lt;/code&gt; 루프백 URI이며, 클라이언트 시크릿은 사용하지 않습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  사용자에게 요금제 사용 방식을 안내하는 방법
&lt;/h2&gt;

&lt;p&gt;사용자 화면과 지원 문서에는 다음 내용을 명확히 표시하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;적격 요청은 사용자 요금제 사용량으로 계산됩니다.&lt;/strong&gt; Plus 또는 Pro 요금제의 ChatGPT Work 및 Codex 사용량에 반영됩니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;앱별 주간 상한선이 있습니다.&lt;/strong&gt; 사용자는 전체 주간 사용량의 백분율로 상한선을 설정합니다. 문서의 설정 예시는 10%~100%입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;상한선은 예약된 사용량이 아닙니다.&lt;/strong&gt; 다른 서비스에서 사용량을 많이 쓰면 앱에서 사용할 수 있는 요금제가 먼저 소진될 수 있습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;크레딧 사용은 선택 사항입니다.&lt;/strong&gt; 한도 초과 후 크레딧으로 계속 사용하도록 하는 기능은 기본 비활성화이며, 앱 상한선을 100%로 설정해야 합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Plus에는 공유 5시간 제한이 있습니다.&lt;/strong&gt; &lt;a href="https://developers.openai.com/siwc/token-sharing-open-source/profiles-and-sessions" rel="noopener noreferrer"&gt;계정 및 세션 문서&lt;/a&gt;에 따르면 이 제한은 요금제를 사용하는 모든 앱에 걸쳐 적용됩니다. Pro에는 적용되지 않습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;연결 해제는 이후 요청만 중단합니다.&lt;/strong&gt; 이미 사용된 사용량은 되돌아가지 않으며, OpenAI가 앱에 연결 해제 이벤트를 전달하지 않습니다. 이후 요청 또는 토큰 새로고침 실패를 통해 상태를 감지해야 합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;사용자는 ChatGPT 설정의 사용량 페이지(&lt;code&gt;chatgpt.com/settings/usage&lt;/code&gt;)에서 이를 관리합니다. OpenAI &lt;a href="https://developers.openai.com/siwc/ui-ux-guidelines" rel="noopener noreferrer"&gt;UI 가이드라인&lt;/a&gt;에 따라 앱에는 &lt;strong&gt;사용량 관리&lt;/strong&gt; 링크를 제공하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  출시 시 참여 대상과 클라이언트 ID 획득 방법
&lt;/h2&gt;

&lt;p&gt;OpenAI의 &lt;a href="https://openai.com/index/devday-2026-recap/" rel="noopener noreferrer"&gt;DevDay 요약&lt;/a&gt;에는 Cognition의 Devin, Notion, Vercel, T3, OpenClaw, Dactyl을 포함한 16개의 요금제 사용 파트너가 언급되어 있습니다. &lt;a href="https://thenewstack.io/sign-in-with-chatgpt/" rel="noopener noreferrer"&gt;The New Stack&lt;/a&gt;은 Amp, Warp, Kilo Code, OpenCode도 언급하며 Lovable은 출시 예정으로 표시합니다. &lt;a href="https://apidog.com/kr/blog/openclaw-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OpenClaw&lt;/a&gt;를 사용 중이라면 두 목록 모두에서 확인할 수 있습니다.&lt;/p&gt;

&lt;p&gt;The New Stack 보도에 따르면 샘 알트만은 무대에서 다음과 같이 발표했습니다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;이제 사용자들이 시작하기 위해 토큰 비용을 부담할 필요가 없습니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;참여 방식은 앱 형태에 따라 다릅니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;상업용 또는 호스팅 앱&lt;/strong&gt;: 로그인은 제한된 시험 사용으로 제공됩니다. 신원 확인만 원하든 요금제 사용도 원하든 OpenAI 관심 양식을 통해 대기자 명단에 등록하고 &lt;a href="https://developers.openai.com/siwc/request-client-id" rel="noopener noreferrer"&gt;클라이언트 ID를 요청&lt;/a&gt;해야 합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;오픈 소스 및 로컬 호스팅 도구&lt;/strong&gt;: 위에서 설명한 셀프 서비스 흐름으로 요금제 사용을 설정할 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  앱 API 비용 처리 방식의 변화
&lt;/h2&gt;

&lt;p&gt;기존에는 앱이 API 키로 토큰 비용을 지불하고, 자체 가격 정책을 통해 비용을 회수합니다. 요금제 사용을 활성화하면 적격 요청의 모델 비용이 사용자 구독으로 전환됩니다. 사용량이 늘어도 앱의 토큰 비용이 직접 증가하지 않는 대신, 요청 가능 여부와 기능 범위에 대한 제어가 줄어듭니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;앱의 API 키&lt;/th&gt;
&lt;th&gt;사용자의 ChatGPT 요금제&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;비용 부담 주체&lt;/td&gt;
&lt;td&gt;앱, 토큰당 비용&lt;/td&gt;
&lt;td&gt;사용자 요금제. 선택 동의 시에만 크레딧 사용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사용 가능 대상&lt;/td&gt;
&lt;td&gt;모든 사용자&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;chatgpt.tokens.use.direct&lt;/code&gt;를 승인한 Plus 및 Pro 사용자&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;제한&lt;/td&gt;
&lt;td&gt;앱의 비율 제한 계층&lt;/td&gt;
&lt;td&gt;주간 요금제 사용량, 앱별 상한선, Plus의 5시간 창&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;요청 형태&lt;/td&gt;
&lt;td&gt;전체 Responses API&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;store: false&lt;/code&gt;, &lt;code&gt;stream: true&lt;/code&gt; 필수. &lt;code&gt;temperature&lt;/code&gt;, &lt;code&gt;max_output_tokens&lt;/code&gt;, 파일 검색, 코드 인터프리터 사용 불가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;일반적인 실패&lt;/td&gt;
&lt;td&gt;계층 초과 시 429&lt;/td&gt;
&lt;td&gt;429 &lt;code&gt;subscription_sharing_usage_limit_exceeded&lt;/code&gt;, 또는 스트림 중간 &lt;code&gt;response.failed&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대체 처리&lt;/td&gt;
&lt;td&gt;앱이 직접 설계&lt;/td&gt;
&lt;td&gt;자동 전환 없음. OpenAI가 청구 방식을 자동으로 변경하지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;사용자에게 표시할 내용&lt;/td&gt;
&lt;td&gt;앱 사용량 및 가격&lt;/td&gt;
&lt;td&gt;“ChatGPT 요금제 사용 중”, 사용량 관리 링크, 지원하는 앱 요금제&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;이 제한은 OpenAI의 &lt;a href="https://developers.openai.com/siwc/token-sharing-open-source/preview-limitations" rel="noopener noreferrer"&gt;미리 보기 제한 문서&lt;/a&gt;에 명시되어 있습니다. 저장된 대화 상태나 호스팅된 도구가 필요한 기능은 현재 사용자 요금제로 실행할 수 없습니다.&lt;/p&gt;

&lt;p&gt;실용적인 기본 전략은 하이브리드 구성입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Plus 및 Pro 사용자의 대화형 작업: 사용자 요금제 사용&lt;/li&gt;
&lt;li&gt;무료 사용자, 백그라운드 작업, CI, 예약된 에이전트: 앱 API 키 사용&lt;/li&gt;
&lt;li&gt;사용자 상한선 도달: 사용량 관리 링크 표시 후 앱 크레딧 등 보조 옵션 제안&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;일반적인 설계 비교는 &lt;a href="https://apidog.com/kr/blog/api-key-vs-oauth?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API 키 대 OAuth&lt;/a&gt;를 참고하세요. 사용자를 대신해 AI 에이전트가 안전하게 동작하도록 설계하는 방법은 &lt;a href="https://apidog.com/kr/blog/ai-agent-oauth-on-behalf-of-user?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI 에이전트를 위한 OAuth&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apidog에서 로그인 흐름과 실패 경로 테스트하기
&lt;/h2&gt;

&lt;p&gt;Apidog가 ChatGPT 로그인 자체를 대신 처리하는 것은 아닙니다. Apidog는 OAuth 설정, 토큰 교환 요청, 오류 처리 로직을 검증하는 데 사용합니다. &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;한 뒤 테스트 환경을 만드세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  1. 클라이언트 설정을 환경 변수로 저장하기
&lt;/h3&gt;

&lt;p&gt;다음 환경 변수를 추가하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;SIWC_CLIENT_ID
SIWC_REDIRECT_URI
SIWC_CLIENT_SECRET
ACCESS_TOKEN
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;SIWC_CLIENT_SECRET&lt;/code&gt;은 기밀 클라이언트에서만 사용하며 민감한 값으로 저장하세요. 요청 본문과 헤더에서는 값을 직접 넣지 말고 아래처럼 참조합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;{{SIWC_CLIENT_ID}}
{{SIWC_REDIRECT_URI}}
{{ACCESS_TOKEN}}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  2. PKCE 권한 부여 코드 흐름 실행하기
&lt;/h3&gt;

&lt;p&gt;Apidog의 인증 탭에서 다음을 설정하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;인증 방식: OAuth 2.0 Authorization Code&lt;/li&gt;
&lt;li&gt;PKCE: 활성화&lt;/li&gt;
&lt;li&gt;Authorization URL: &lt;code&gt;https://auth.openai.com/api/accounts/authorize&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Token URL: &lt;code&gt;https://auth.openai.com/api/accounts/oauth/token&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Scope: &lt;code&gt;openid profile email&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Redirect URI: OpenAI 클라이언트에 등록한 콜백 URL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;각 필드의 설정 방법은 &lt;a href="https://apidog.com/kr/blog/test-oauth-2-apis-apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog OAuth 2.0 가이드&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. ID 토큰 응답 검증하기
&lt;/h3&gt;

&lt;p&gt;토큰 엔드포인트에 대한 POST 요청을 별도로 저장하세요. 요청에는 authorization code, PKCE verifier, 리디렉션 URI, 클라이언트 ID를 포함합니다.&lt;/p&gt;

&lt;p&gt;응답 후처리 스크립트에서는 최소한 응답 상태와 ID 토큰 클레임을 확인하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;json&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;token exchange returned an ID token&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;code&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eql&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id_token&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;decode&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;require&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;atob&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;part&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id_token&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/-/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;+&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/_/g&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;/&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;claims&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="nf"&gt;decode&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;part&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;=&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;repeat&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;part&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="o"&gt;%&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;

&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;test&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;ID token claims match this client&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;claims&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;iss&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;eql&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://auth.openai.com&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;claims&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;aud&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;include&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;get&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;SIWC_CLIENT_ID&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;));&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;claims&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sub&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;a&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;string&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;and&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;not&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;empty&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="nx"&gt;pm&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;expect&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;claims&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;exp&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;to&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;be&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;above&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;name&lt;/code&gt;, &lt;code&gt;email&lt;/code&gt;, &lt;code&gt;picture&lt;/code&gt;는 제공될 때만 반환될 수 있으므로 필수 단언 대신 로그로 기록하세요.&lt;/p&gt;

&lt;p&gt;요금제 사용을 요청했다면 &lt;code&gt;body.scope&lt;/code&gt;에 &lt;code&gt;chatgpt.tokens.use.direct&lt;/code&gt;가 포함되는지도 확인합니다.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;JWT 서명 검증과 &lt;code&gt;nonce&lt;/code&gt; 검증은 테스트 도구가 아니라 백엔드에서 반드시 수행해야 합니다.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  4. 실패 응답 모의하기
&lt;/h3&gt;

&lt;p&gt;실제 Plus 계정을 고정된 테스트 데이터로 사용하지 마세요. Apidog 모의 서버에서 다음 실패 응답을 만들어 클라이언트 동작을 검증하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;요금제 사용 거부&lt;/strong&gt;: &lt;code&gt;scope&lt;/code&gt;에 &lt;code&gt;chatgpt.tokens.use.direct&lt;/code&gt;가 없는 토큰 응답을 반환합니다. 앱은 로그인 세션을 유지하고, 요금제 사용을 활성화하거나 다른 결제 경로를 선택하도록 안내해야 합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;상한선 도달&lt;/strong&gt;: &lt;code&gt;error.code&lt;/code&gt;가 &lt;code&gt;subscription_sharing_usage_limit_exceeded&lt;/code&gt;인 429 응답을 반환합니다. 스트리밍 중에는 동일한 코드가 담긴 &lt;code&gt;response.failed&lt;/code&gt; 이벤트를 반환합니다. 앱이 추가 요금제 요청을 중지하는지 확인하세요.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;자격 없음&lt;/strong&gt;: 403 &lt;code&gt;subscription_sharing_user_not_eligible&lt;/code&gt;를 반환합니다. 이 경우 재시도하거나 OAuth 흐름을 반복하지 않아야 합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;연결 해제됨&lt;/strong&gt;: 새로고침 요청에 &lt;code&gt;invalid_grant&lt;/code&gt;, API 요청에 401 &lt;code&gt;subscription_sharing_invalid_user&lt;/code&gt;를 반환합니다. 앱은 토큰을 삭제하고 재로그인을 요청해야 합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이 사례를 테스트 시나리오로 묶고 Apidog CLI로 CI에서 실행하세요. 전체 오류 목록은 OpenAI의 &lt;a href="https://developers.openai.com/siwc/token-sharing-open-source/errors-and-recovery" rel="noopener noreferrer"&gt;오류 및 복구 문서&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  5. 실제 스트리밍 요청 확인하기
&lt;/h3&gt;

&lt;p&gt;실제 요금제 토큰으로 Responses API 스트리밍 요청을 보내세요. &lt;code&gt;response.completed&lt;/code&gt; 이벤트가 성공의 최종 신호인지 확인해야 합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--no-buffer&lt;/span&gt; https://api.openai.com/v1/responses &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="k"&gt;${&lt;/span&gt;&lt;span class="nv"&gt;ACCESS_TOKEN&lt;/span&gt;&lt;span class="k"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "gpt-6.1-sol",
    "input": [{"role": "user", "content": "Say exactly: Hello, world!"}],
    "store": false,
    "stream": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Apidog에서는 &lt;code&gt;Authorization: Bearer {{ACCESS_TOKEN}}&lt;/code&gt; 헤더를 설정해 같은 요청을 실행할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  무료 사용자도 ChatGPT로 로그인할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;예. ChatGPT 사용자는 전 세계적으로 로그인할 수 있습니다. 다만 다른 앱에서 ChatGPT 요금제를 사용하려면 Plus 또는 Pro가 필요합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  앱이 사용자의 OpenAI API 키를 받나요?
&lt;/h3&gt;

&lt;p&gt;아니요. 앱은 ID 토큰과, 요금제 사용을 승인한 경우 적격한 Responses API 요청용 OAuth 액세스 토큰을 받습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  사용자가 앱별 상한선에 도달하면 어떻게 되나요?
&lt;/h3&gt;

&lt;p&gt;요청은 &lt;code&gt;subscription_sharing_usage_limit_exceeded&lt;/code&gt; 오류와 함께 실패합니다. 일반 요청은 HTTP 429로, 스트리밍 요청은 시작 후 &lt;code&gt;response.failed&lt;/code&gt; 이벤트로 실패할 수 있습니다. 앱은 추가 요청을 중지하고 사용량 관리 페이지로 연결해야 합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Plus 사용자가 파트너 앱에서 GPT-6.1 Sol을 실행할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;문서 예시에서는 요금제 토큰과 함께 &lt;code&gt;gpt-6.1-sol&lt;/code&gt;을 사용합니다. 다만 앱에서 제공하기 전에 해당 토큰으로 사용 가능한 모델 목록을 확인해야 합니다. 자세한 내용은 &lt;a href="https://apidog.com/kr/blog/gpt-6-1-sol-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6.1 Sol은 무료인가요?&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  다음 단계
&lt;/h2&gt;

&lt;p&gt;상업용 앱을 운영한다면 먼저 대기자 명단에 등록하세요. 클라이언트 ID를 기다리는 동안 모의 환경을 기준으로 다음 처리를 구현할 수 있습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;PKCE, &lt;code&gt;state&lt;/code&gt;, &lt;code&gt;nonce&lt;/code&gt; 검증&lt;/li&gt;
&lt;li&gt;ID 토큰 클레임 및 서명 검증&lt;/li&gt;
&lt;li&gt;요금제 사용 범위 승인 여부 확인&lt;/li&gt;
&lt;li&gt;상한선 도달, 자격 없음, 연결 해제 오류 처리&lt;/li&gt;
&lt;li&gt;사용자용 사용량 관리 링크 제공&lt;/li&gt;
&lt;li&gt;사용자 요금제 실패 시 앱 API 키 또는 크레딧으로 전환하는 정책 정의&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;요금제 사용은 앱 API 비용 처리의 선택지이지 완전한 대체 수단으로 가정하면 안 됩니다. 실제 클라이언트 ID를 받은 뒤에는 토큰만 교체하면 되도록, 토큰 검증 요청과 실패 시나리오를 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에 미리 저장해 두세요.&lt;/p&gt;

</description>
      <category>api</category>
      <category>authentication</category>
      <category>chatgpt</category>
      <category>openai</category>
    </item>
    <item>
      <title>코덱스: 데브데이 2026 이후 클라우드 작업, 음성 CLI, 에이전트, 코드 리뷰 및 보안 클라우드</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:50:21 +0000</pubDate>
      <link>https://dev.to/rihpig/kodegseu-debeudei-2026-ihu-keulraudeu-jageob-eumseong-cli-eijeonteu-kodeu-ribyu-mic-boan-keulraudeu-39ih</link>
      <guid>https://dev.to/rihpig/kodegseu-debeudei-2026-ihu-keulraudeu-jageob-eumseong-cli-eijeonteu-kodeu-ribyu-mic-boan-keulraudeu-39ih</guid>
      <description>&lt;p&gt;OpenAI DevDay 2026년 9월 29일, Codex에는 재사용 가능한 환경을 제공하는 Codex 클라우드, 음성·&lt;code&gt;/agents&lt;/code&gt;·프롬프트 편집·재개·워크트리를 포함한 Codex CLI, GitHub PR 및 GitLab MR용 코드 리뷰, 그리고 리포지토리 스캔과 수정 준비를 위한 Codex 보안 클라우드가 추가되었습니다. 같은 날 Codex CLI 0.159.1은 GPT-6.1 Sol을 기본 모델로 설정했습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog 사용해 보기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 글에서는 각 업데이트를 바로 적용할 수 있도록 설정 절차, CLI 명령어, CI 연결 예시를 정리합니다. DevDay의 다른 발표는 &lt;a href="https://apidog.com/kr/blog/openai-devday-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API 개발자를 위한 DevDay 2026 허브&lt;/a&gt;를 참고하세요. Codex는 코드를 작성하고 검토하지만 실행 중인 API를 직접 호출해 계약을 검증하지는 않습니다. 이 부분은 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt; 계약 테스트를 CI에 연결해 보완할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  DevDay 2026에서 Codex의 변경 사항
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;업데이트&lt;/th&gt;
&lt;th&gt;기능&lt;/th&gt;
&lt;th&gt;사용처&lt;/th&gt;
&lt;th&gt;플랜&lt;/th&gt;
&lt;th&gt;상태&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Codex 클라우드 환경&lt;/td&gt;
&lt;td&gt;한 번 설정한 환경을 격리된 작업 공간에서 재사용&lt;/td&gt;
&lt;td&gt;웹, 데스크톱 앱, &lt;code&gt;codex cloud&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;Plus, Pro, Business, Healthcare, Edu, Enterprise&lt;/td&gt;
&lt;td&gt;사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;새로워진 Codex CLI&lt;/td&gt;
&lt;td&gt;음성, &lt;code&gt;/agents&lt;/code&gt;, 프롬프트 편집, 재개, 워크트리&lt;/td&gt;
&lt;td&gt;터미널&lt;/td&gt;
&lt;td&gt;모든 플랜&lt;/td&gt;
&lt;td&gt;사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;코드 리뷰&lt;/td&gt;
&lt;td&gt;PR/MR 검토 창, 자동 클라우드 리뷰&lt;/td&gt;
&lt;td&gt;ChatGPT 데스크톱 앱, GitHub, GitLab&lt;/td&gt;
&lt;td&gt;모든 플랜&lt;/td&gt;
&lt;td&gt;GitHub GA, GitLab MR 미리보기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Codex 보안 클라우드&lt;/td&gt;
&lt;td&gt;예약 스캔, 결과 중복 제거, 수정 준비&lt;/td&gt;
&lt;td&gt;Codex 클라우드, 플러그인&lt;/td&gt;
&lt;td&gt;Pro, Business, Enterprise, Edu&lt;/td&gt;
&lt;td&gt;연구 미리보기&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GPT-6.1 Sol 기본 설정&lt;/td&gt;
&lt;td&gt;CLI 번들 모델 카탈로그 기본 모델&lt;/td&gt;
&lt;td&gt;CLI, Codex, ChatGPT Work&lt;/td&gt;
&lt;td&gt;Plus, Pro, Business, Enterprise, Edu&lt;/td&gt;
&lt;td&gt;사용 가능&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;출처: OpenAI의 &lt;a href="https://openai.com/index/devday-2026-recap/" rel="noopener noreferrer"&gt;DevDay 2026 요약&lt;/a&gt;, &lt;a href="https://learn.chatgpt.com/docs/whats-new" rel="noopener noreferrer"&gt;Codex 새로운 기능&lt;/a&gt;, 그리고 아래 Codex 문서입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Codex 클라우드: 재사용 가능한 환경 만들기
&lt;/h2&gt;

&lt;p&gt;Codex 클라우드는 클라우드에서 코딩 작업을 실행합니다. 따라서 로컬 컴퓨터가 꺼지거나 절전 모드여도 작업을 계속할 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://learn.chatgpt.com/docs/environments/cloud-environments" rel="noopener noreferrer"&gt;클라우드 환경 문서&lt;/a&gt;에 따르면 환경은 여러 작업이 공유하는 재사용 가능한 설정입니다. 리포지토리, 종속성, 도구, 액세스 설정을 정의하면 새 작업마다 해당 환경 버전을 기반으로 격리된 작업 공간이 생성됩니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  환경 생성 절차
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;새 Codex 작업에서 &lt;strong&gt;Work in &amp;gt; Cloud&lt;/strong&gt;를 선택합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create environment&lt;/strong&gt;를 선택합니다.&lt;/li&gt;
&lt;li&gt;체크아웃할 GitHub 리포지토리를 선택합니다.&lt;/li&gt;
&lt;li&gt;Codex가 리포지토리를 분석하고 종속성을 설치하며 워크플로를 테스트하도록 둡니다.&lt;/li&gt;
&lt;li&gt;질문이 표시되면 실행에 필요한 정보를 입력합니다.&lt;/li&gt;
&lt;li&gt;설정 보고서를 확인한 뒤 &lt;strong&gt;Publish&lt;/strong&gt;를 선택합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;환경을 게시할 때 다음 정보를 정확히 기록하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;설치 스크립트&lt;/strong&gt;: 의존성 설치와 초기화에 필요한 명령&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;시작 기술&lt;/strong&gt;: 서비스를 시작하고 준비 상태를 확인하는 방법&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  운영 시 확인할 점
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;리포지토리 새로 고침&lt;/strong&gt;은 백그라운드에서 실행되며 종속성 캐시를 유지합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;인터넷 액세스&lt;/strong&gt;는 환경별로 설정합니다. 패키지 관리자 프리셋, 사용자 지정 도메인, 무제한 액세스 중 필요한 범위만 허용하세요.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;네트워크 보안 비밀&lt;/strong&gt;을 사용하면 자격 증명을 샌드박스 밖에 유지할 수 있습니다. 프로그램에는 플레이스홀더가 보이고, 프록시는 허용된 HTTPS 대상에만 실제 값을 주입합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;스테이징 API를 호출해야 한다면 다음 방식으로 구성하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;스테이징 API 호스트를 허용 도메인에 추가합니다.&lt;/li&gt;
&lt;li&gt;API 토큰은 일반 환경 변수가 아니라 네트워크 보안 비밀로 저장합니다.&lt;/li&gt;
&lt;li&gt;작업에서 필요한 API 호출이 성공하는지 확인한 뒤 환경을 게시합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;터미널에서는 &lt;code&gt;codex cloud&lt;/code&gt;로 작업을 클라우드에 전달하고 최근 클라우드 채팅 목록을 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  새로워진 Codex CLI
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://learn.chatgpt.com/docs/codex/cli" rel="noopener noreferrer"&gt;Codex CLI 문서&lt;/a&gt;의 설치 스크립트로 CLI를 설치합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-fsSL&lt;/span&gt; https://chatgpt.com/codex/install.sh | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;npm으로 설치하려면 다음 명령을 사용합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; @openai/codex
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://learn.chatgpt.com/docs/changelog" rel="noopener noreferrer"&gt;Codex 변경 로그&lt;/a&gt;에 따르면 2026년 9월 29일 출시된 0.159.1은 GPT-6.1 Sol을 번들 카탈로그의 기본 모델로 추가했습니다. &lt;a href="https://learn.chatgpt.com/docs/models" rel="noopener noreferrer"&gt;Codex 모델 페이지&lt;/a&gt;에 따르면 Free 및 Go 플랜은 출시 시 지원 대상에 포함되지 않으며, Enterprise와 Edu는 관리자가 활성화해야 사용할 수 있습니다.&lt;/p&gt;

&lt;p&gt;현재 세션의 모델을 확인하거나 변경하려면 다음을 실행합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;시작 시 모델을 지정하려면 다음과 같이 실행합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;codex &lt;span class="nt"&gt;--model&lt;/span&gt; gpt-6.1-sol
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/what-is-gpt-6-1-sol?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6.1 Sol은 무엇인가요?&lt;/a&gt;에서 GPT-6 Sol 대비 변경 사항과 &lt;code&gt;none&lt;/code&gt; effort 옵션을 확인할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  기능별 빠른 명령어
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;기능&lt;/th&gt;
&lt;th&gt;사용 방법&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;음성&lt;/td&gt;
&lt;td&gt;F8로 음성 대화를 토글하고 &lt;code&gt;/voice settings&lt;/code&gt;에서 음성을 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;/agents&lt;/code&gt; 뷰&lt;/td&gt;
&lt;td&gt;에이전트 상태를 확인하고 상태별 작업을 필터링&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;프롬프트 편집&lt;/td&gt;
&lt;td&gt;이전 프롬프트를 수정하면 해당 지점부터 스레드를 다시 진행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;재개&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;codex resume&lt;/code&gt;으로 저장된 채팅 재개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;워크트리&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/worktree&lt;/code&gt;로 새 Git 워크트리에서 채팅 실행&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;대화 분기&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/fork&lt;/code&gt;로 현재 채팅을 새 채팅 또는 워크트리로 복사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델 선택&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/model&lt;/code&gt;로 모델과 reasoning effort 선택&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;로컬 검토&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;/review&lt;/code&gt;로 커밋되지 않은 변경 사항, 커밋, 기준 브랜치 검토&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;워크트리는 하나의 리포지토리에서 병렬 에이전트를 실행할 때 특히 유용합니다. 에이전트마다 별도 체크아웃을 사용하므로 동일한 파일을 동시에 수정하는 충돌을 줄일 수 있습니다.&lt;/p&gt;

&lt;p&gt;PR을 만들기 전에는 다음 흐름을 권장합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;/worktree
# 기능 구현
/review
# 테스트 실행
# 커밋 및 PR 생성
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;/review&lt;/code&gt;는 작업 트리를 수정하지 않고 우선순위가 지정된 결과를 반환하므로, 커밋 전 점검 단계로 사용하기 좋습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  코드 리뷰: 데스크톱 앱, GitHub 및 GitLab
&lt;/h2&gt;

&lt;p&gt;코드 리뷰는 ChatGPT 데스크톱 앱에서 사용하는 플러그인입니다. &lt;a href="https://learn.chatgpt.com/docs/code-review" rel="noopener noreferrer"&gt;코드 리뷰 문서&lt;/a&gt;에 따르면 PR 설명, 변경 파일, 댓글, 검사 결과를 한 화면에서 확인할 수 있습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub 리뷰: 일반 출시&lt;/li&gt;
&lt;li&gt;GitLab 머지 리퀘스트 지원: 미리보기&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;자동 클라우드 리뷰를 사용하려면 ChatGPT Codex 커넥터와 리포지토리 권한이 필요합니다. GitHub에서 다음 댓글로 리뷰를 요청할 수도 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@codex review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://learn.chatgpt.com/docs/third-party/github" rel="noopener noreferrer"&gt;GitHub 통합 가이드&lt;/a&gt;에 따르면 GitHub에서는 Codex가 P0 및 P1 문제만 플래그합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  &lt;code&gt;AGENTS.md&lt;/code&gt;로 리뷰 규칙 정의하기
&lt;/h3&gt;

&lt;p&gt;리뷰 규칙은 코드와 가장 가까운 위치의 &lt;code&gt;AGENTS.md&lt;/code&gt; 파일에 작성합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight markdown"&gt;&lt;code&gt;&lt;span class="gu"&gt;## Code Review Rules&lt;/span&gt;
&lt;span class="p"&gt;
-&lt;/span&gt; 인증 또는 권한 확인이 제거된 변경 사항을 우선 검토한다.
&lt;span class="p"&gt;-&lt;/span&gt; 공개 API 응답 필드의 이름 또는 타입 변경을 확인한다.
&lt;span class="p"&gt;-&lt;/span&gt; 데이터 마이그레이션이 필요한 스키마 변경을 확인한다.
&lt;span class="p"&gt;-&lt;/span&gt; 테스트, 브랜치 보호, 필수 승인은 CI와 GitHub 설정으로 강제한다.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;리뷰 규칙에는 리포지토리와 도메인에 특화된 판단 기준을 넣으세요. 린트, 포맷, 단위 테스트처럼 기계적으로 검증 가능한 항목은 CI에서 처리하는 것이 적절합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/codex-code-review?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;코드 리뷰를 위한 Codex&lt;/a&gt;에서 리뷰 워크플로를 더 자세히 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Codex 보안 클라우드
&lt;/h2&gt;

&lt;p&gt;Codex 보안 클라우드는 Codex 클라우드에 연결된 GitHub 리포지토리를 스캔합니다. OpenAI 발표에 따르면 예약 스캔, 결과 중복 제거, 수정 준비 기능을 제공하며 Daybreak Blue 모델을 포함합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/openai-daybreak-blue-vs-red?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Daybreak Blue vs Red 설명서&lt;/a&gt;에서 관련 티어를 확인할 수 있습니다.&lt;/p&gt;

&lt;p&gt;현재 Pro, Business, Enterprise, Edu 플랜에서 연구 미리보기로 제공됩니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  설정 절차
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://learn.chatgpt.com/docs/security/setup" rel="noopener noreferrer"&gt;보안 클라우드 설정 가이드&lt;/a&gt;에 따른 설정 순서는 다음과 같습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;ChatGPT 플러그인 마켓플레이스에서 Codex 보안 클라우드 플러그인을 설치합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connect GitHub&lt;/strong&gt;를 선택하고 스캔할 리포지토리 권한을 부여합니다.&lt;/li&gt;
&lt;li&gt;리포지토리와 클라우드 환경을 선택합니다.&lt;/li&gt;
&lt;li&gt;대상을 &lt;strong&gt;Repository&lt;/strong&gt;로 설정하고 스캔을 시작합니다.&lt;/li&gt;
&lt;li&gt;지속적 스캔이 필요하면 &lt;strong&gt;Commit changes&lt;/strong&gt;를 선택합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Monitoring settings&lt;/strong&gt;에서 환경, 기록 일수, 일시 중지 상태를 설정합니다.&lt;/li&gt;
&lt;li&gt;결과가 발견되면 &lt;strong&gt;Fix with Codex&lt;/strong&gt;로 패치를 초안합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Create draft pull request&lt;/strong&gt;로 검토용 PR을 생성합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;PR 단위의 더 심층적인 보안 리뷰가 필요하다면 다음 GitHub 댓글을 사용할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;@codex security review
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이 기능도 연구 미리보기 상태입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Apidog의 역할: 코드 리뷰와 API 계약 테스트 연결하기
&lt;/h2&gt;

&lt;p&gt;Codex 코드 리뷰는 diff, PR 설명, 댓글, 검사 결과를 읽습니다. 그러나 실행 중인 서비스로 HTTP 요청을 보내 API 동작을 검증하지는 않습니다.&lt;/p&gt;

&lt;p&gt;예를 들어 다음 변경은 코드 리뷰에서 놓칠 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight diff"&gt;&lt;code&gt;&lt;span class="gd"&gt;- { "user_id": "123" }
&lt;/span&gt;&lt;span class="gi"&gt;+ { "userId": "123" }
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;서버 코드와 내부 테스트가 통과하더라도 기존 클라이언트가 &lt;code&gt;user_id&lt;/code&gt;에 의존한다면 호환성이 깨질 수 있습니다. 이 문제는 실행 중인 API를 대상으로 상태 코드, 필수 필드, 타입, 응답 스키마를 검증하는 계약 테스트로 잡아야 합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  권장 구현 흐름
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;OpenAPI 사양과 테스트 시나리오를 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에 관리합니다.&lt;/li&gt;
&lt;li&gt;주요 엔드포인트에 대해 상태 코드와 응답 스키마를 검증합니다.&lt;/li&gt;
&lt;li&gt;모든 PR에서 Apidog CLI를 실행합니다.&lt;/li&gt;
&lt;li&gt;실패한 계약 테스트를 GitHub 검사 결과로 표시합니다.&lt;/li&gt;
&lt;li&gt;Codex 리뷰 결과와 CI 실패를 함께 확인합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/api-contract-testing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API 계약 테스트&lt;/a&gt;에서 이 접근 방식을 자세히 확인할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  GitHub Actions에 Apidog CLI 추가하기
&lt;/h3&gt;

&lt;p&gt;다음 워크플로는 PR마다 Apidog 시나리오를 실행합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;name&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;api-contract-tests&lt;/span&gt;

&lt;span class="na"&gt;on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;pull_request&lt;/span&gt;

&lt;span class="na"&gt;jobs&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;apidog&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;runs-on&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;ubuntu-latest&lt;/span&gt;
    &lt;span class="na"&gt;steps&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;npm install -g apidog-cli&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="na"&gt;run&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;apidog run --access-token "$APIDOG_ACCESS_TOKEN" -t "$SCENARIO_ID" -e "$ENV_ID" -r cli,junit&lt;/span&gt;
        &lt;span class="na"&gt;env&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
          &lt;span class="na"&gt;APIDOG_ACCESS_TOKEN&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ secrets.APIDOG_ACCESS_TOKEN }}&lt;/span&gt;
          &lt;span class="na"&gt;SCENARIO_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ vars.APIDOG_SCENARIO_ID }}&lt;/span&gt;
          &lt;span class="na"&gt;ENV_ID&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;${{ vars.APIDOG_ENV_ID }}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;먼저 클라이언트 의존도가 높은 엔드포인트 하나부터 시작하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;GET /users/{id}

검증 항목:
- 응답 상태: 200
- user_id: 필수
- email: string
- created_at: ISO 8601 형식
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Codex가 &lt;code&gt;user_id&lt;/code&gt;를 &lt;code&gt;userId&lt;/code&gt;로 변경하면 스키마 검사가 실패하고 CLI는 0이 아닌 종료 코드로 끝납니다. 따라서 사람이 긴 diff에서 변경 사항을 발견하기 전에 PR 상태가 실패로 표시됩니다.&lt;/p&gt;

&lt;p&gt;Codex가 PR을 열기 전 로컬에서도 동일한 명령을 실행하도록 안내하면 피드백 루프를 더 짧게 만들 수 있습니다. &lt;a href="https://apidog.com/kr/blog/apidog-cli-in-codex?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Codex에서 Apidog CLI 사용하기&lt;/a&gt;와 &lt;a href="https://apidog.com/kr/blog/build-your-own-software-factory-codex?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Codex로 소프트웨어 팩토리 구축하기&lt;/a&gt;에서 전체 흐름을 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  DevDay 2026에서 Codex는 무엇을 얻었나요?
&lt;/h3&gt;

&lt;p&gt;재사용 가능한 클라우드 환경, 음성·&lt;code&gt;/agents&lt;/code&gt;·프롬프트 편집·재개·워크트리를 포함한 CLI, 자동 클라우드 리뷰가 포함된 코드 리뷰, 연구 미리보기 상태의 Codex 보안 클라우드가 추가되었습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  현재 Codex CLI의 기본 모델은 무엇인가요?
&lt;/h3&gt;

&lt;p&gt;CLI 0.159.1부터 GPT-6.1 Sol입니다. &lt;code&gt;/model&lt;/code&gt;로 모델과 reasoning effort를 변경할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Free 플랜에서 Codex 클라우드를 사용할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;아니요. Codex 클라우드는 Plus, Pro, Business, Healthcare, Edu, Enterprise 플랜에 포함됩니다. CLI와 코드 리뷰는 모든 플랜에서 사용할 수 있습니다. &lt;a href="https://apidog.com/kr/blog/use-codex-free?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;무료 Codex 가이드&lt;/a&gt;도 참고하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codex 코드 리뷰가 내 API를 테스트하나요?
&lt;/h3&gt;

&lt;p&gt;아니요. PR의 diff, 설명, 댓글, 검사 결과를 검토합니다. 실제 API 동작 변경을 검증하려면 CI에 API 계약 테스트를 추가해야 합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Codex 보안 클라우드는 누가 사용할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;Pro, Business, Enterprise, Edu 플랜에서 연구 미리보기로 사용할 수 있습니다. 플러그인을 설치하고 GitHub 리포지토리를 연결하면 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  다음 단계
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Codex CLI를 최신 버전으로 업데이트합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;/model&lt;/code&gt;을 실행해 &lt;code&gt;gpt-6.1-sol&lt;/code&gt;이 선택되었는지 확인합니다.&lt;/li&gt;
&lt;li&gt;다음 기능 브랜치에서 &lt;code&gt;/review&lt;/code&gt;를 실행합니다.&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;해 가장 중요한 엔드포인트 하나를 계약 테스트 시나리오로 만듭니다.&lt;/li&gt;
&lt;li&gt;GitHub Actions에 Apidog CLI 작업을 추가합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;이 구성을 적용하면 Codex가 작성하거나 검토한 PR을 코드 diff뿐 아니라 실행 중인 API 계약 기준으로도 검증할 수 있습니다.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>오픈AI 초고속: 6배 속도, 6배 가격. 언제 본전 뽑을까?</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:48:57 +0000</pubDate>
      <link>https://dev.to/rihpig/opeunai-cogosog-6bae-sogdo-6bae-gagyeog-eonje-bonjeon-bbobeulgga-2p44</link>
      <guid>https://dev.to/rihpig/opeunai-cogosog-6bae-sogdo-6bae-gagyeog-eonje-bonjeon-bbobeulgga-2p44</guid>
      <description>&lt;p&gt;OpenAI Ultrafast는 새로운 모델이 아니라 서비스 티어입니다. Responses API에서 &lt;code&gt;gpt-6-astra&lt;/code&gt; 요청에 &lt;code&gt;service_tier: "ultrafast"&lt;/code&gt;를 추가하면 API 토큰 생성 속도가 최대 6배 빨라집니다. Codex에서는 최대 8배, 즉 초당 300토큰까지 생성한다고 알려져 있습니다. 비용은 표준의 6배로, 100만 토큰당 입력 $60, 출력 $300입니다. 표준 요금은 입력 $10, 출력 $50입니다. 모델 ID는 바뀌지 않으므로 응답이 더 똑똑해지는 것은 아닙니다. 긴 출력을 기다리는 사용자나 지연 시간에 민감한 단계에 적합하며, 배치 또는 백그라운드 작업에는 일반적으로 적합하지 않습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog를 사용해 보세요&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;OpenAI는 2026년 9월 29일 DevDay에서 GPT-6 Astra용 Ultrafast를 광범위하게 출시했습니다. &lt;a href="https://apidog.com/kr/blog/openai-devday-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DevDay의 다른 모든 정보 보기&lt;/a&gt;에서 관련 발표를 확인할 수 있습니다. 이 글에서는 가용성, 요청 방법, 가격, 속도 제한, 그리고 자체 측정값으로 계산할 수 있는 손익분기 모델을 다룹니다. 모델 자체가 궁금하다면 &lt;a href="https://apidog.com/kr/blog/gpt-6-astra-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6 Astra API 가이드&lt;/a&gt;를 참고하세요. 전환 전에는 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 두 티어를 동일한 프롬프트로 측정하는 것이 좋습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenAI Ultrafast 한눈에 보기
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;세부 정보&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;이것은 무엇인가요&lt;/td&gt;
&lt;td&gt;OpenAI API에서 가장 빠른 서비스 티어&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;매개변수&lt;/td&gt;
&lt;td&gt;Responses &lt;code&gt;create&lt;/code&gt; 또는 WebSocket &lt;code&gt;response.create&lt;/code&gt;에 &lt;code&gt;service_tier: "ultrafast"&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;모델&lt;/td&gt;
&lt;td&gt;현재 GPT-6 Astra, GPT-6.1 Sol은 “출시 예정”&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;속도 주장&lt;/td&gt;
&lt;td&gt;API에서 토큰 생성 최대 6배 빠름, Codex에서 최대 8배(초당 300토큰)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;가격(Astra)&lt;/td&gt;
&lt;td&gt;100만 토큰당 입력 $60, 캐시 $6, 캐시 쓰기 $75, 출력 $300&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;속도 제한&lt;/td&gt;
&lt;td&gt;티어 1~3: 500K TPM, 티어 4: 1M TPM, 티어 5: 5M TPM&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;처리&lt;/td&gt;
&lt;td&gt;미국 데이터 상주 및 글로벌 처리만 지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;전송&lt;/td&gt;
&lt;td&gt;WebSockets 강력 권장&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ChatGPT 요금제&lt;/td&gt;
&lt;td&gt;Pro 500 및 Enterprise의 ChatGPT Work, Codex&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;출처: OpenAI의 &lt;a href="https://developers.openai.com/api/docs/guides/ultrafast-mode" rel="noopener noreferrer"&gt;Ultrafast 모드 가이드&lt;/a&gt; 및 &lt;a href="https://developers.openai.com/api/docs/pricing" rel="noopener noreferrer"&gt;가격 페이지&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ultrafast란 무엇이며 누가 사용할 수 있는가
&lt;/h2&gt;

&lt;p&gt;OpenAI의 DevDay 요약은 Ultrafast를 프리미엄 속도 티어로 설명합니다. 가이드에 따르면 GPT-6 Astra Ultrafast는 모든 API 사용자에게 낮은 기본 속도 제한으로 제공되며, OpenAI 계정 팀이 있는 조직은 더 높은 한도를 요청할 수 있습니다.&lt;/p&gt;

&lt;p&gt;가이드에는 계정 팀을 통한 GPT-5.6 Sol 미리 보기 액세스도 나열되어 있습니다. OpenAI는 8월 13일 GPT-5.6 Sol에서 &lt;a href="https://openai.com/index/previewing-ultrafast/" rel="noopener noreferrer"&gt;Ultrafast를 처음 미리 보기로 공개했습니다&lt;/a&gt;. 이후 모델로는 &lt;a href="https://apidog.com/kr/blog/what-is-gpt-6-1-sol?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6.1 Sol&lt;/a&gt;이 언급되었지만, 두 모델의 Ultrafast 가격은 공개되지 않았습니다.&lt;/p&gt;

&lt;p&gt;ChatGPT에서는 Ultrafast Astra가 Pro 500 및 Enterprise의 ChatGPT Work와 Codex에서 실행됩니다. 다만 이는 앱 구독 기능이며 API 사용량에는 적용되지 않습니다. 스크립트, CI 작업, 에이전트는 API 키 기준 토큰 비용을 지불해야 합니다.&lt;/p&gt;

&lt;p&gt;속도 수치를 해석할 때는 다음을 구분해야 합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;API의 주장은 &lt;strong&gt;토큰 생성 속도 최대 6배&lt;/strong&gt;입니다.&lt;/li&gt;
&lt;li&gt;Codex의 &lt;strong&gt;초당 300토큰&lt;/strong&gt;은 최대 8배라는 주장에 해당합니다.&lt;/li&gt;
&lt;li&gt;OpenAI는 Ultrafast의 첫 번째 토큰 생성 시간(TTFT)을 공개하지 않았습니다.&lt;/li&gt;
&lt;li&gt;초당 토큰 수가 높더라도 첫 토큰까지의 대기 시간이 짧아진다는 보장은 없습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  &lt;code&gt;service_tier: "ultrafast"&lt;/code&gt; 활성화 방법
&lt;/h2&gt;

&lt;p&gt;각 요청에서 &lt;code&gt;model&lt;/code&gt;을 &lt;code&gt;gpt-6-astra&lt;/code&gt;로 설정하고 &lt;code&gt;service_tier&lt;/code&gt;에 &lt;code&gt;ultrafast&lt;/code&gt;를 지정합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  HTTP 요청
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl https://api.openai.com/v1/responses &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "gpt-6-astra",
    "input": "Explain why the sky is blue in one sentence.",
    "service_tier": "ultrafast"
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  WebSocket 연결 재사용
&lt;/h3&gt;

&lt;p&gt;OpenAI는 특히 연속적인 도구 호출이 많은 에이전트에서 WebSocket 사용을 강력히 권장합니다. HTTP 요청을 반복하면 연결 및 요청별 네트워크 오버헤드가 Ultrafast의 생성 속도 이점을 상쇄할 수 있습니다.&lt;/p&gt;

&lt;p&gt;다음 예시는 하나의 연결에서 두 턴을 스트리밍합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;openai&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;OpenAI&lt;/span&gt;

&lt;span class="n"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;span class="n"&gt;previous_response_id&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="bp"&gt;None&lt;/span&gt;
&lt;span class="n"&gt;prompts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Explain why the sky is blue in one sentence.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Now explain why sunsets look red.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;with&lt;/span&gt; &lt;span class="n"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;responses&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;connect&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="k"&gt;as&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;prompt&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;prompts&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
            &lt;span class="n"&gt;model&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;gpt-6-astra&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;service_tier&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ultrafast&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="n"&gt;previous_response_id&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;previous_response_id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
            &lt;span class="nb"&gt;input&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;prompt&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="p"&gt;)&lt;/span&gt;

        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;connection&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response.output_text.delta&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;delta&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;end&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;flush&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="bp"&gt;True&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
            &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response.completed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
                &lt;span class="n"&gt;previous_response_id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;id&lt;/span&gt;
                &lt;span class="nf"&gt;print&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
                &lt;span class="k"&gt;break&lt;/span&gt;
            &lt;span class="k"&gt;elif&lt;/span&gt; &lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nb"&gt;type&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response.failed&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;response.incomplete&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;error&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;}:&lt;/span&gt;
                &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;event&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;to_json&lt;/span&gt;&lt;span class="p"&gt;())&lt;/span&gt;
        &lt;span class="k"&gt;else&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;raise&lt;/span&gt; &lt;span class="nc"&gt;RuntimeError&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Connection closed before the response finished.&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;패키지를 설치하고 API 키를 설정합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pip &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;--upgrade&lt;/span&gt; &lt;span class="s2"&gt;"openai[realtime]"&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"your-api-key"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;연결 제한과 재연결 전략은 &lt;a href="https://apidog.com/kr/blog/openai-websocket-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OpenAI WebSocket 모드 가이드&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Standard, Fast, Batch와 비교한 Ultrafast 가격
&lt;/h2&gt;

&lt;p&gt;짧은 컨텍스트(입력 272K 토큰 이하)에서 &lt;code&gt;gpt-6-astra&lt;/code&gt;의 100만 토큰당 가격은 다음과 같습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;티어&lt;/th&gt;
&lt;th&gt;입력&lt;/th&gt;
&lt;th&gt;캐시된 입력&lt;/th&gt;
&lt;th&gt;캐시 쓰기&lt;/th&gt;
&lt;th&gt;출력&lt;/th&gt;
&lt;th&gt;표준 대비&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;표준&lt;/td&gt;
&lt;td&gt;$10.00&lt;/td&gt;
&lt;td&gt;$1.00&lt;/td&gt;
&lt;td&gt;$12.50&lt;/td&gt;
&lt;td&gt;$50.00&lt;/td&gt;
&lt;td&gt;1배&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;배치 또는 Flex&lt;/td&gt;
&lt;td&gt;$5.00&lt;/td&gt;
&lt;td&gt;$0.50&lt;/td&gt;
&lt;td&gt;$6.25&lt;/td&gt;
&lt;td&gt;$25.00&lt;/td&gt;
&lt;td&gt;0.5배&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fast&lt;/td&gt;
&lt;td&gt;$20.00&lt;/td&gt;
&lt;td&gt;$2.00&lt;/td&gt;
&lt;td&gt;$25.00&lt;/td&gt;
&lt;td&gt;$100.00&lt;/td&gt;
&lt;td&gt;2배&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Ultrafast&lt;/td&gt;
&lt;td&gt;$60.00&lt;/td&gt;
&lt;td&gt;$6.00&lt;/td&gt;
&lt;td&gt;$75.00&lt;/td&gt;
&lt;td&gt;$300.00&lt;/td&gt;
&lt;td&gt;6배&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;입력이 272K 토큰을 넘으면 Ultrafast 가격은 다음과 같이 증가합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;입력: $120&lt;/li&gt;
&lt;li&gt;캐시된 입력: $12&lt;/li&gt;
&lt;li&gt;캐시 쓰기: $150&lt;/li&gt;
&lt;li&gt;출력: $450&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Fast는 이전의 Priority 처리 티어이며, 2026년 7월 30일에 이름이 변경되었습니다.&lt;/p&gt;

&lt;p&gt;중요한 점은 입력 토큰에도 6배 요금이 적용된다는 것입니다. Ultrafast의 속도 주장은 출력 토큰 생성에 관한 것이므로, 긴 프롬프트에서는 생성 속도 이점이 없는 입력 토큰에도 높은 비용을 지불하게 됩니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  속도 제한 및 데이터 상주
&lt;/h2&gt;

&lt;p&gt;GPT-6 Astra의 기본 Ultrafast 제한은 사용량 티어별로 다음과 같습니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;사용량 티어&lt;/th&gt;
&lt;th&gt;기본 제한&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;티어 1~3&lt;/td&gt;
&lt;td&gt;분당 500,000 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;티어 4&lt;/td&gt;
&lt;td&gt;분당 1,000,000 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;티어 5&lt;/td&gt;
&lt;td&gt;분당 5,000,000 토큰&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Ultrafast는 미국 데이터 상주 및 글로벌 처리만 지원합니다. 계약 또는 프로젝트 설정상 EU나 기타 지역 엔드포인트를 통해 트래픽을 라우팅해야 한다면 해당 프로젝트에서는 Ultrafast를 사용할 수 없습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ultrafast가 비용을 상쇄하는 시점: 손익분기 모델
&lt;/h2&gt;

&lt;p&gt;아래 계산은 벤치마크가 아니라 정가를 기반으로 한 예시입니다. 실제 서비스에서는 Standard와 Ultrafast를 모두 측정한 뒤 자신의 수치로 바꾸어야 합니다.&lt;/p&gt;

&lt;p&gt;여기서는 Standard Astra가 초당 40개의 출력 토큰을 스트리밍한다고 가정합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  사용자에게 직접 제공되는 답변
&lt;/h3&gt;

&lt;p&gt;조건:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;캐시되지 않은 입력 토큰: 5,000개&lt;/li&gt;
&lt;li&gt;출력 토큰: 2,000개&lt;/li&gt;
&lt;li&gt;Standard 출력 속도: 초당 40토큰&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;계산:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard: 입력 $0.05 + 출력 $0.10 = &lt;strong&gt;$0.15&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ultrafast: 입력 $0.30 + 출력 $0.60 = &lt;strong&gt;$0.90&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;추가 비용: &lt;strong&gt;$0.75&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Standard 생성 시간: &lt;code&gt;2,000 / 40 = 50초&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Ultrafast 생성 시간: &lt;code&gt;50 / 6 ≈ 8.3초&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;절약 시간: 약 &lt;strong&gt;41.7초&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;절약된 초당 추가 비용: &lt;code&gt;$0.75 / 41.7 = $0.018&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;시간당 대기 시간 제거 비용: 약 &lt;strong&gt;$64.80&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;측정된 속도 향상이 최대치에 못 미치면 절약되는 시간 1초당 비용은 더 높아집니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;측정된 속도 향상&lt;/th&gt;
&lt;th&gt;절약된 시간(50초 기준)&lt;/th&gt;
&lt;th&gt;초당 추가 비용&lt;/th&gt;
&lt;th&gt;시간당 비용&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;6배&lt;/td&gt;
&lt;td&gt;41.7초&lt;/td&gt;
&lt;td&gt;$0.018&lt;/td&gt;
&lt;td&gt;$64.80&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4배&lt;/td&gt;
&lt;td&gt;37.5초&lt;/td&gt;
&lt;td&gt;$0.020&lt;/td&gt;
&lt;td&gt;$72.00&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2배&lt;/td&gt;
&lt;td&gt;25.0초&lt;/td&gt;
&lt;td&gt;$0.030&lt;/td&gt;
&lt;td&gt;$108.00&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  에이전트 루프
&lt;/h3&gt;

&lt;p&gt;다음과 같은 에이전트 실행을 가정합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;총 20단계&lt;/li&gt;
&lt;li&gt;단계당 입력 토큰: 20,000개

&lt;ul&gt;
&lt;li&gt;캐시된 입력: 18,000개&lt;/li&gt;
&lt;li&gt;신규 입력: 2,000개&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;단계당 출력 토큰: 500개&lt;/li&gt;
&lt;li&gt;캐시 쓰기 요금은 계산에서 제외&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;계산:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Standard: 캐시된 입력 $0.018 + 신규 입력 $0.020 + 출력 $0.025 = 단계당 &lt;strong&gt;$0.063&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Standard 총비용: &lt;strong&gt;$1.26&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Ultrafast 총비용: &lt;strong&gt;$7.56&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;추가 비용: &lt;strong&gt;$6.30&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;Standard 생성 시간: 약 250초&lt;/li&gt;
&lt;li&gt;6배 속도 기준 Ultrafast 생성 시간: 약 41.7초&lt;/li&gt;
&lt;li&gt;절약 시간: 약 208초&lt;/li&gt;
&lt;li&gt;절약된 초당 추가 비용: 약 &lt;strong&gt;$0.030&lt;/strong&gt;
&lt;/li&gt;
&lt;li&gt;시간당 비용: 약 &lt;strong&gt;$109&lt;/strong&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;에이전트 루프에서는 입력 비용 비중이 크므로, 사용자 응답 하나를 생성하는 경우보다 비용 효율이 더 나빠질 수 있습니다. 입력 토큰은 생성 속도 향상 없이 6배 가격이 적용되기 때문입니다.&lt;/p&gt;

&lt;p&gt;결론적으로 다음 질문에 “예”라고 답할 수 있을 때 Ultrafast를 고려할 수 있습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;이 대기 시간 동안 실제 사용자나 금전적 가치가 있는 작업이 막히는가?&lt;/li&gt;
&lt;li&gt;절약되는 시간이 시간당 약 $65~$110 이상의 가치를 가지는가?&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;내부 코딩 에이전트에서 엔지니어가 대기 중이거나, 유료 사용자 흐름에서 고객이 로딩 화면을 보고 있다면 기준을 통과할 수 있습니다. 반면 크론 작업은 일반적으로 그렇지 않습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  Ultrafast가 비용을 상쇄하지 못하는 경우
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;아무도 기다리지 않는 경우&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
야간 평가, 백필, 보고서 생성은 &lt;a href="https://apidog.com/kr/blog/openai-batch-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Batch API&lt;/a&gt; 또는 Flex를 고려하세요. 입력 $5, 출력 $25로 Ultrafast 요율의 1/12입니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;백그라운드 에이전트&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
무인 실행 후 완료 상태만 알리는 에이전트라면 몇 분 빨라져도 비즈니스 결과가 크게 달라지지 않을 수 있습니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;짧은 출력&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
50토큰 분류처럼 출력이 짧으면 생성 시간을 줄일 공간이 거의 없습니다. HTTP에서는 연결 설정과 TTFT가 전체 지연의 대부분을 차지할 수 있습니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;긴 프롬프트&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
입력이 많은 호출은 속도 향상과 무관한 입력 토큰에도 6배 가격을 냅니다. 272K 입력을 넘으면 단가도 더 상승합니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;지역별 처리 요구사항&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
EU 엔드포인트가 필요한 프로젝트에서는 사용할 수 없습니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;TTFT가 병목인 호출&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
&lt;a href="https://apidog.com/kr/blog/gpt-6-sol-time-to-first-token-latency?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;GPT-6 Sol 지연 시간 분석&lt;/a&gt;에서 설명하듯 긴 추론 실행은 첫 번째 가시 토큰 이전에 많은 시간이 소요될 수 있습니다. 지연이 이 구간에 집중된다면 Ultrafast가 TTFT도 줄이는지 먼저 측정하세요.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  전환하기 전에 Apidog에서 TTFT 및 총 시간 측정
&lt;/h2&gt;

&lt;p&gt;약 10분이면 예시 계산의 자리 표시자를 실제 서비스 측정값으로 바꿀 수 있습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 &lt;code&gt;OPENAI_API_KEY&lt;/code&gt;를 사용하는 환경을 만듭니다. 다음 요청을 추가합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;Method: &lt;code&gt;POST&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;URL: &lt;code&gt;https://api.openai.com/v1/responses&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Header: &lt;code&gt;Authorization: Bearer {{OPENAI_API_KEY}}&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="w"&gt;   &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpt-6-astra"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"input"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"&amp;lt;your real production prompt&amp;gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"service_tier"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"ultrafast"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
     &lt;/span&gt;&lt;span class="nl"&gt;"stream"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
   &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;&lt;p&gt;요청을 복제한 뒤 Standard 기준선을 위해 &lt;code&gt;service_tier&lt;/code&gt; 필드를 제거합니다. 프롬프트와 나머지 파라미터는 동일하게 유지합니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;두 요청을 모두 실행합니다. Apidog에서 서버 전송 이벤트 스트림을 이벤트별로 확인하고 다음 값을 기록합니다.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;첫 &lt;code&gt;response.output_text.delta&lt;/code&gt; 도착 시간: TTFT&lt;/li&gt;
&lt;li&gt;스트림 종료 시간: 총 시간&lt;/li&gt;
&lt;li&gt;최종 &lt;code&gt;response.completed&lt;/code&gt; 이벤트의 &lt;code&gt;usage&lt;/code&gt; 블록: 비용 계산용 토큰 사용량&lt;/li&gt;
&lt;/ul&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;각 변형을 최소 10회 실행합니다. 단일 실행 대신 중앙값과 p95를 비교하세요.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;에이전트 루프는 WebSocket 경로로도 테스트합니다.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;ul&gt;
&lt;li&gt;URL: &lt;code&gt;wss://api.openai.com/v1/responses&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;stream&lt;/code&gt;을 제외한 동일한 필드로 &lt;code&gt;response.create&lt;/code&gt; 메시지 전송&lt;/li&gt;
&lt;li&gt;첫 응답의 &lt;code&gt;previous_response_id&lt;/code&gt;를 포함해 두 번째 턴 전송&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/websocket-vs-server-sent-events-real-time-apis?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;WebSocket 대 SSE 비교&lt;/a&gt;에서 열린 연결이 중요한 이유를 확인할 수 있습니다.&lt;/p&gt;

&lt;p&gt;절약된 시간은 다음과 같이 계산합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;절약 시간 = Standard 중앙값 총 시간 - Ultrafast 중앙값 총 시간
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;그다음 &lt;code&gt;usage&lt;/code&gt; 토큰을 각 티어 가격으로 계산하고, 추가 비용을 절약 시간으로 나누세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;절약된 초당 추가 비용 = (Ultrafast 비용 - Standard 비용) / 절약 시간(초)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이 수치가 사용자 대기 시간 또는 엔지니어 작업 시간의 가치보다 낮을 때 Ultrafast 전환을 검토할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문(FAQ)
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;OpenAI Ultrafast는 무엇인가요?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
표준 가격의 6배로 API 토큰을 최대 6배 빠르게 생성하는 Responses API 서비스 티어입니다. 요청마다 &lt;code&gt;service_tier: "ultrafast"&lt;/code&gt;를 지정해 활성화합니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ultrafast는 더 똑똑한 모델인가요?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
아닙니다. 동일한 &lt;code&gt;gpt-6-astra&lt;/code&gt; 모델 ID를 호출합니다. 서비스 티어는 속도와 가격만 바꾸며 모델 자체를 변경하지 않습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPT-6 Astra Ultrafast의 비용은 얼마인가요?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
짧은 컨텍스트에서 100만 토큰당 입력 $60, 캐시된 입력 $6, 캐시 쓰기 $75, 출력 $300입니다. Standard는 각각 $10, $1, $12.50, $50입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;초당 300토큰은 어디에서 나온 수치인가요?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
OpenAI가 Codex의 Ultrafast에 대해 제시한 최대치이며, 최대 8배라는 주장에 해당합니다. API에 대한 주장은 최대 6배입니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;GPT-6.1 Sol은 Ultrafast를 지원하나요?&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
아직 아닙니다. OpenAI는 출시 예정이라고 밝혔습니다. 현재 상태는 &lt;a href="https://apidog.com/kr/blog/openai-devday-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DevDay 2026 요약&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  다음 단계
&lt;/h2&gt;

&lt;p&gt;가장 느린 사용자 대면 요청 하나를 선택하세요. Standard와 Ultrafast로 각각 10회 실행한 뒤, 중앙값 기준 절약 시간과 추가 비용을 비교하세요.&lt;/p&gt;

&lt;p&gt;두 변형의 요청 본문, 응답, 타이밍, &lt;code&gt;usage&lt;/code&gt; 데이터를 한 프로젝트에서 관리하려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드하세요&lt;/a&gt;.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>MCP 이벤트 이해하기: ChatGPT 연동 웹훅 MCP 서버 구축 및 테스트</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:48:40 +0000</pubDate>
      <link>https://dev.to/rihpig/mcp-ibenteu-ihaehagi-chatgpt-yeondong-webhug-mcp-seobeo-gucug-mic-teseuteu-2di5</link>
      <guid>https://dev.to/rihpig/mcp-ibenteu-ihaehagi-chatgpt-yeondong-webhug-mcp-seobeo-gucug-mic-teseuteu-2di5</guid>
      <description>&lt;p&gt;MCP 이벤트를 사용하면 MCP 서버가 업데이트 발생 즉시 ChatGPT에 푸시할 수 있으므로, 에이전트가 주기적으로 폴링할 필요가 없습니다. 2026년 9월 29일 OpenAI DevDay 이후 ChatGPT는 모든 플랜에서 프로토콜 버전 &lt;code&gt;2026-07-28&lt;/code&gt;(MCP 2.0)의 제안된 MCP 이벤트 사양을 지원합니다. 서버는 &lt;code&gt;events/list&lt;/code&gt;, &lt;code&gt;events/subscribe&lt;/code&gt;, &lt;code&gt;events/unsubscribe&lt;/code&gt; 메서드를 구현하고, &lt;code&gt;server/discover&lt;/code&gt;에서 &lt;code&gt;events&lt;/code&gt; 기능을 광고하며, 콜백 확인 챌린지를 통과하고, 모든 전송에 Standard Webhooks HMAC 서명을 적용해야 합니다. ChatGPT는 웹훅 전송만 지원합니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog 사용해 보기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 글에서는 MCP 이벤트를 구현할 때 필요한 메시지 형식, 보안 규칙, 테스트 절차를 단계별로 정리합니다. MCP가 처음이라면 &lt;a href="https://apidog.com/kr/blog/what-is-mcp-model-context-protocol?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;MCP란 무엇인가&lt;/a&gt;부터 확인하세요. &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;를 사용하면 JSON-RPC 호출을 전송하고 콜백을 모의 테스트할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP 이벤트 체크리스트
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;ChatGPT가 기대하는 값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;프로토콜&lt;/td&gt;
&lt;td&gt;MCP 2.0, 버전 &lt;code&gt;2026-07-28&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;기능 광고&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;server/discover&lt;/code&gt;의 &lt;code&gt;capabilities&lt;/code&gt;에 &lt;code&gt;"events": {}&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;필수 메서드&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;events/list&lt;/code&gt;, &lt;code&gt;events/subscribe&lt;/code&gt;, &lt;code&gt;events/unsubscribe&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;엔드포인트&lt;/td&gt;
&lt;td&gt;도구 호출과 동일한 인증된 MCP 엔드포인트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;전송 방식&lt;/td&gt;
&lt;td&gt;웹훅 전용. 폴링, 스트리밍, &lt;code&gt;gap&lt;/code&gt;, &lt;code&gt;terminated&lt;/code&gt; 알림 미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;서명&lt;/td&gt;
&lt;td&gt;Standard Webhooks HMAC-SHA256&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;필수 헤더&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;webhook-id&lt;/code&gt;, &lt;code&gt;webhook-timestamp&lt;/code&gt;, &lt;code&gt;webhook-signature&lt;/code&gt;, &lt;code&gt;X-MCP-Subscription-Id&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;비밀&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;whsec_&lt;/code&gt; 접두사가 있는 base64 비밀, 디코딩 후 24~64바이트&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;페이로드 제한&lt;/td&gt;
&lt;td&gt;256 KiB(262,144바이트), 요청당 이벤트 1개&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;구독 ID&lt;/td&gt;
&lt;td&gt;주체, 콜백 URL, 이벤트 이름, 인수로부터 결정론적으로 생성&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;콜백 요구 사항&lt;/td&gt;
&lt;td&gt;HTTPS, 챌린지 확인, 사설 주소 차단, 리디렉션 미허용&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;출처: OpenAI의 &lt;a href="https://developers.openai.com/plugins/build/mcp-events" rel="noopener noreferrer"&gt;MCP 이벤트 가이드&lt;/a&gt; 및 &lt;a href="https://github.com/modelcontextprotocol/experimental-ext-triggers-events/blob/main/docs/design-sketch-proposal.md" rel="noopener noreferrer"&gt;MCP 이벤트 디자인 스케치&lt;/a&gt; 초안.&lt;/p&gt;

&lt;h2&gt;
  
  
  폴링 대신 이벤트를 사용하는 이유
&lt;/h2&gt;

&lt;p&gt;폴링 방식에서는 에이전트가 타이머에 따라 도구를 호출하고 이전 결과와 비교해야 합니다. 변경이 없으면 요청을 낭비하고, 변경이 발생하면 다음 폴링까지 지연됩니다.&lt;/p&gt;

&lt;p&gt;MCP 이벤트에서는 서버가 변경 사실을 알고 있으므로 즉시 업데이트를 전송합니다. 이는 전통적인 &lt;a href="https://apidog.com/kr/blog/webhooks-vs-polling?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;웹훅 대 폴링&lt;/a&gt; 선택과 같은 장단점을 가집니다.&lt;/p&gt;

&lt;p&gt;대표적인 활용 사례는 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;새 프로젝트 작업이 생성되면 연결된 문서를 읽고 계획 초안을 생성&lt;/li&gt;
&lt;li&gt;특정 채널의 버그 보고서를 초안 풀 리퀘스트로 변환

&lt;ul&gt;
&lt;li&gt;이벤트: &lt;code&gt;message.created&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;필터: &lt;code&gt;channel_id&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;문서에 새 검토 댓글이 추가되면 후속 작업 수행

&lt;ul&gt;
&lt;li&gt;이벤트: &lt;code&gt;comment.created&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;필터: &lt;code&gt;document_id&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이 사양은 MCP 트리거 및 이벤트 워킹 그룹의 &lt;a href="https://github.com/modelcontextprotocol/experimental-ext-triggers-events" rel="noopener noreferrer"&gt;저장소&lt;/a&gt;에서 발전한 실험적 기능입니다. 구현 시 프로토콜 버전을 반드시 &lt;code&gt;2026-07-28&lt;/code&gt;에 고정하세요. 관련 출시 정보는 &lt;a href="https://apidog.com/kr/blog/openai-devday-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DevDay 2026 허브&lt;/a&gt;에서 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. &lt;code&gt;server/discover&lt;/code&gt;에서 이벤트 기능 광고하기
&lt;/h2&gt;

&lt;p&gt;먼저 &lt;code&gt;server/discover&lt;/code&gt; 응답의 &lt;code&gt;capabilities&lt;/code&gt;에 &lt;code&gt;events&lt;/code&gt;를 추가합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"resultType"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"complete"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"supportedVersions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"2026-07-28"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"capabilities"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"tools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"events"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;다음으로 &lt;code&gt;events/list&lt;/code&gt;에서 서버가 제공하는 이벤트 정의를 반환합니다.&lt;/p&gt;

&lt;p&gt;각 이벤트 정의에는 최소한 다음 정보가 필요합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt;: 안정적인 이벤트 이름&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;description&lt;/code&gt;: 사용자가 구독 목적을 이해할 수 있는 구체적인 설명&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;delivery&lt;/code&gt;: 반드시 &lt;code&gt;["webhook"]&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;inputSchema&lt;/code&gt;: 구독 인수 스키마&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;payloadSchema&lt;/code&gt;: 전송되는 &lt;code&gt;data&lt;/code&gt; 객체의 스키마&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;예를 들어 &lt;code&gt;document_id&lt;/code&gt;로 댓글 이벤트를 필터링하는 정의를 제공할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comment.created"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"description"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"문서에 새 댓글이 생성될 때 발생합니다."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"delivery"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"webhook"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"inputSchema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"document_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"document_id"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"additionalProperties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"payloadSchema"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"object"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"properties"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"document_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"comment_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"string"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="s2"&gt;"document_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comment_id"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;구현 시 다음 원칙을 적용하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;이벤트 이름은 변경하지 않는 안정적인 식별자로 유지합니다.&lt;/li&gt;
&lt;li&gt;필터는 클라이언트가 아니라 서버에서 적용합니다.&lt;/li&gt;
&lt;li&gt;연결된 계정이 실제로 접근 가능한 이벤트만 노출합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;inputSchema&lt;/code&gt;와 &lt;code&gt;payloadSchema&lt;/code&gt;를 엄격하게 검증합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  2. &lt;code&gt;events/subscribe&lt;/code&gt; 구현하기
&lt;/h2&gt;

&lt;p&gt;사용자가 ChatGPT에 특정 항목을 모니터링하도록 요청하면, ChatGPT는 다음과 같이 &lt;code&gt;events/subscribe&lt;/code&gt;를 호출합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"method"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"events/subscribe"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"params"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comment.created"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"arguments"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"document_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"doc_123"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"delivery"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"mode"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"webhook"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://receiver.example.com/mcp-events/callback_123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"secret"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"whsec_&amp;lt;base64-encoded-signing-key&amp;gt;"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cursor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;구독을 수락하기 전에 다음을 검증합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;인증된 사용자가 해당 이벤트와 필터에 접근할 수 있는지 확인합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;name&lt;/code&gt;과 &lt;code&gt;arguments&lt;/code&gt;가 이벤트 정의의 스키마를 만족하는지 검증합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;secret&lt;/code&gt;이 &lt;code&gt;whsec_&lt;/code&gt;로 시작하는지 확인합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;whsec_&lt;/code&gt; 뒤의 값이 base64로 디코딩되며 결과가 24~64바이트인지 확인합니다.&lt;/li&gt;
&lt;li&gt;콜백 URL을 검증하고 챌린지 확인을 수행합니다.&lt;/li&gt;
&lt;li&gt;소유자, 필터, URL, 비밀, 만료 시각을 저장합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;성공하면 다음과 같이 응답합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"result"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"sub_123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"refreshBefore"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-10-02T12:00:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"cursor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"truncated"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  구독 구현 규칙
&lt;/h3&gt;

&lt;h4&gt;
  
  
  결정론적 구독 ID 생성
&lt;/h4&gt;

&lt;p&gt;구독 ID는 인증된 주체, 콜백 URL, 이벤트 이름, 인수를 기반으로 생성합니다. 디자인 스케치는 이 키의 잘린 SHA-256 해시를 제안합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;subject + callbackUrl + eventName + canonicalJson(arguments)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;인수 객체는 키 순서가 달라도 같은 값으로 처리되도록 정규화된 JSON으로 직렬화해야 합니다.&lt;/p&gt;

&lt;h4&gt;
  
  
  멱등성 업데이트 또는 삽입
&lt;/h4&gt;

&lt;p&gt;같은 구독 요청이 반복되면 새 레코드를 만들지 말고 기존 구독을 업데이트합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;same subject + same URL + same event + same arguments
=&amp;gt; same subscription ID
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h4&gt;
  
  
  &lt;code&gt;refreshBefore&lt;/code&gt; 이전 갱신
&lt;/h4&gt;

&lt;p&gt;ChatGPT는 &lt;code&gt;refreshBefore&lt;/code&gt; 이전에 같은 ID와 마지막 커서를 사용해 다시 &lt;code&gt;events/subscribe&lt;/code&gt;를 호출합니다. 서버는 새 만료 시각을 반환해야 합니다.&lt;/p&gt;

&lt;p&gt;갱신 요청에 새 비밀이 포함된 경우:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;새 비밀로 교체합니다.&lt;/li&gt;
&lt;li&gt;짧은 전환 기간에는 이전 비밀과 새 비밀 모두로 서명합니다.&lt;/li&gt;
&lt;li&gt;재생할 수 없는 이벤트는 &lt;code&gt;cursor: null&lt;/code&gt;을 반환합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. 데이터 전송 전 콜백 확인하기
&lt;/h2&gt;

&lt;p&gt;애플리케이션 이벤트를 전송하기 전에 콜백 URL의 소유권을 검증해야 합니다. 신선하고 일회성이며 짧은 수명을 가진 챌린지를 포함한 서명된 POST 요청을 전송합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"verification"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"challenge"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a-single-use-random-value"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;확인 요청에도 일반 이벤트와 동일한 서명 헤더를 포함합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;고유한 &lt;code&gt;webhook-id&lt;/code&gt;
예: &lt;code&gt;msg_verification_123&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;&lt;code&gt;webhook-timestamp&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;webhook-signature&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;X-MCP-Subscription-Id&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;콜백 수신자는 &lt;code&gt;2xx&lt;/code&gt; 응답과 함께 챌린지를 정확히 에코해야 합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"challenge"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"a-single-use-random-value"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;서버는 챌린지 값을 일정 시간 비교로 확인한 뒤에만 이벤트 전송을 활성화합니다.&lt;/p&gt;

&lt;p&gt;검증 실패 시 JSON-RPC 오류 &lt;code&gt;-32015&lt;/code&gt;(&lt;code&gt;CallbackEndpointError&lt;/code&gt;)를 반환합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"jsonrpc"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2.0"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-32015&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"message"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Callback endpoint verification failed"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"challenge_failed"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;data.reason&lt;/code&gt;에는 &lt;code&gt;challenge_failed&lt;/code&gt; 또는 &lt;code&gt;timeout&lt;/code&gt; 같은 원인을 포함할 수 있습니다.&lt;/p&gt;

&lt;p&gt;챌린지는 공격자가 서버를 악의적인 대상 URL로 향하게 하는 것을 방지합니다. 구독자가 비밀을 제공하더라도, 콜백이 실제로 해당 비밀을 검증할 수 있는 엔드포인트인지 확인해야 합니다.&lt;/p&gt;

&lt;p&gt;외부 URL 검증에는 다음을 적용하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;HTTPS만 허용&lt;/li&gt;
&lt;li&gt;연결 시 DNS 해석 결과와 실제 연결 주소 검증&lt;/li&gt;
&lt;li&gt;사설 IP, 로컬 주소, 링크 로컬 주소 등 비공개 대상 차단&lt;/li&gt;
&lt;li&gt;HTTP 리디렉션 미허용&lt;/li&gt;
&lt;li&gt;갱신 시에는 주체와 URL별로 검증 성공 결과를 제한된 기간 캐시&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  4. 이벤트 전송 및 서명하기
&lt;/h2&gt;

&lt;p&gt;필터와 일치하는 이벤트가 발생하면 콜백 URL로 이벤트 객체 하나를 POST합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"eventId"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"evt_456"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comment.created"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"timestamp"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-10-01T12:05:00Z"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"document_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"doc_123"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"comment_id"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"comment_456"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"text"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Can we add the rollout dates to this section?"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://docs.example.com/doc_123#comment_456"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"cursor"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;null&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;다음 헤더를 포함합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Content-Type: application/json
webhook-id: evt_456
webhook-timestamp: &amp;lt;unix-timestamp&amp;gt;
webhook-signature: v1,&amp;lt;base64-signature&amp;gt;
X-MCP-Subscription-Id: sub_123
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;중요한 구현 원칙은 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;본문은 한 번만 직렬화합니다.&lt;/li&gt;
&lt;li&gt;서명에 사용한 바이트를 그대로 전송합니다.&lt;/li&gt;
&lt;li&gt;이벤트 하나당 요청 하나만 전송합니다.&lt;/li&gt;
&lt;li&gt;페이로드는 256 KiB 미만으로 유지합니다.&lt;/li&gt;
&lt;li&gt;큰 레코드는 요약만 보내고 상세 내용은 읽기 도구로 제공합니다.&lt;/li&gt;
&lt;li&gt;사용자 작성 텍스트는 데이터로 취급하며 모델 지침을 포함하지 않습니다.&lt;/li&gt;
&lt;li&gt;이벤트 ID는 재시도 간에도 유지합니다.&lt;/li&gt;
&lt;li&gt;재시도마다 새 타임스탬프와 서명을 생성합니다.&lt;/li&gt;
&lt;li&gt;일시적 실패에는 제한된 지수 백오프를 적용합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;410&lt;/code&gt;과 &lt;code&gt;413&lt;/code&gt; 응답은 재시도하지 않습니다.&lt;/li&gt;
&lt;li&gt;이벤트 도착 순서가 바뀔 수 있으므로 쓰기 도구는 멱등적으로 구현합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;재시도 전략은 &lt;a href="https://apidog.com/kr/blog/how-to-design-reliable-webhooks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;신뢰할 수 있는 웹훅 디자인 가이드&lt;/a&gt;에서 더 자세히 확인할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Standard Webhooks 서명 검증하기
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://github.com/standard-webhooks/standard-webhooks/blob/main/spec/standard-webhooks.md" rel="noopener noreferrer"&gt;Standard Webhooks 사양&lt;/a&gt;에 따르면 서명 대상 문자열은 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;${webhook-id}.${webhook-timestamp}.${body}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;서명 키는 다음 순서로 준비합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;whsec_&lt;/code&gt; 접두사를 제거합니다.&lt;/li&gt;
&lt;li&gt;나머지 문자열을 base64로 디코딩합니다.&lt;/li&gt;
&lt;li&gt;디코딩된 바이트를 HMAC-SHA256 키로 사용합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;code&gt;webhook-signature&lt;/code&gt; 헤더는 공백으로 구분된 하나 이상의 서명을 포함할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;webhook-signature: v1,&amp;lt;base64-signature&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;MCP 초안은 수신자에게 다음을 요구합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;5분보다 오래된 타임스탬프 거부&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;webhook-id&lt;/code&gt; 기준 중복 제거&lt;/li&gt;
&lt;li&gt;HMAC-SHA256 서명 검증&lt;/li&gt;
&lt;li&gt;원본 바이트 그대로 검증&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;다음은 Node 18+ 내장 기능만 사용하는 엄격한 로컬 수신자 예시입니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;// receiver.mjs: local test receiver for Standard Webhooks (Node 18+)&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createServer&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node:http&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createHmac&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;timingSafeEqual&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;node:crypto&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;SECRET&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;WEBHOOK_SECRET&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="c1"&gt;// whsec_...&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;MAX_BYTES&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;256&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;1024&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;TOLERANCE_S&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt; &lt;span class="mi"&gt;60&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;seen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;Set&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="k"&gt;export&lt;/span&gt; &lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;floor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nb"&gt;Date&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;now&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mi"&gt;1000&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webhook-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;ts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webhook-timestamp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;
  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;sigs&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;h&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webhook-signature&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;sigs&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;timestamp&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nb"&gt;Number&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;isInteger&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;||&lt;/span&gt; &lt;span class="nb"&gt;Math&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;abs&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;now&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="nx"&gt;timestamp&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;TOLERANCE_S&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;secret&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;replace&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="sr"&gt;/^whsec_/&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base64&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;expected&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;createHmac&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;sha256&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;key&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.&lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;ts&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;.`&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;update&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;digest&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;sigs&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt; &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;some&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;version&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;b64&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;signature&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;split&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;received&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="k"&gt;from&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;b64&lt;/span&gt; &lt;span class="o"&gt;??&lt;/span&gt; &lt;span class="dl"&gt;""&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;base64&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

    &lt;span class="k"&gt;return &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
      &lt;span class="nx"&gt;version&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;v1&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
      &lt;span class="nx"&gt;received&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="nx"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&amp;amp;&lt;/span&gt;
      &lt;span class="nf"&gt;timingSafeEqual&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;received&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;expected&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;SECRET&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="nf"&gt;createServer&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;chunks&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[];&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

    &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;data&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;MAX_BYTES&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="nx"&gt;chunks&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunk&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;

    &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;on&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;end&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;size&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;MAX_BYTES&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeHead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;413&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;raw&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;Buffer&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;chunks&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nf"&gt;verify&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;SECRET&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeHead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;401&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="k"&gt;try&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;body&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;parse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;raw&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;catch&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeHead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;400&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;type&lt;/span&gt; &lt;span class="o"&gt;===&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;verification&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeHead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;challenge&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;challenge&lt;/span&gt; &lt;span class="p"&gt;}));&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;id&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;webhook-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt;

      &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;!&lt;/span&gt;&lt;span class="nx"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;has&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
        &lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
          &lt;span class="nx"&gt;req&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;x-mcp-subscription-id&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
          &lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;name&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
          &lt;span class="nx"&gt;id&lt;/span&gt;
        &lt;span class="p"&gt;);&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;

      &lt;span class="nx"&gt;res&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;writeHead&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;200&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;end&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
    &lt;span class="p"&gt;});&lt;/span&gt;
  &lt;span class="p"&gt;}).&lt;/span&gt;&lt;span class="nf"&gt;listen&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;8787&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;다음과 같이 실행합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;WEBHOOK_SECRET&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;whsec_... node receiver.mjs
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;이 수신자는 다음 동작을 수행합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;256 KiB를 초과하면 &lt;code&gt;413&lt;/code&gt; 반환&lt;/li&gt;
&lt;li&gt;잘못된 서명 또는 만료된 타임스탬프에 &lt;code&gt;401&lt;/code&gt; 반환&lt;/li&gt;
&lt;li&gt;검증 챌린지 에코&lt;/li&gt;
&lt;li&gt;동일한 &lt;code&gt;webhook-id&lt;/code&gt;를 한 번만 로깅&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;verify()&lt;/code&gt; 함수는 Standard Webhooks JavaScript 라이브러리의 서명 테스트 벡터에 대해 검증할 수 있습니다. 서명 원리는 &lt;a href="https://apidog.com/kr/blog/webhook-signature-verification?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;웹훅 서명 확인&lt;/a&gt;에서 확인하세요.&lt;/p&gt;

&lt;p&gt;기본적으로 서버는 &lt;code&gt;localhost&lt;/code&gt;나 사설 네트워크 주소로 이벤트를 전송하면 안 됩니다. 개발 환경에서는 명시적인 허용 목록을 추가하거나 터널을 사용해 외부 HTTPS URL을 제공하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. ChatGPT 연결 전 테스트하기
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 다음 환경 변수를 생성합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;MCP_URL
MCP_TOKEN
CALLBACK_URL
WEBHOOK_SECRET
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;각 JSON-RPC 요청은 &lt;code&gt;{{MCP_URL}}&lt;/code&gt;로 POST 전송하고 다음 헤더를 포함합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight http"&gt;&lt;code&gt;&lt;span class="err"&gt;Authorization: Bearer {{MCP_TOKEN}}
Accept: application/json, text/event-stream
MCP-Protocol-Version: 2026-07-28
Mcp-Method: &amp;lt;JSON-RPC method&amp;gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://modelcontextprotocol.io/specification/2026-07-28/basic/transports/streamable-http" rel="noopener noreferrer"&gt;스트리밍 가능 HTTP 바인딩&lt;/a&gt;과 &lt;a href="https://modelcontextprotocol.io/specification/2026-07-28/basic/index" rel="noopener noreferrer"&gt;MCP 기본 사양&lt;/a&gt;에 따라 모든 요청의 &lt;code&gt;params._meta&lt;/code&gt;에는 다음 정보도 포함해야 합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"io.modelcontextprotocol/protocolVersion"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"2026-07-28"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"io.modelcontextprotocol/clientCapabilities"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;OpenAI 샘플은 &lt;code&gt;_meta&lt;/code&gt;를 생략하지만, 실제 서버는 &lt;code&gt;_meta&lt;/code&gt;가 없을 때 &lt;code&gt;-32602&lt;/code&gt;를 반환할 수 있습니다. 따라서 실패 원인을 분리하려면 테스트 요청에 포함하는 편이 안전합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  테스트 1: 검색
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;server/discover&lt;/code&gt;를 호출합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$.result.capabilities.events&lt;/code&gt;가 존재하는지 확인합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$.result.supportedVersions&lt;/code&gt;에 &lt;code&gt;2026-07-28&lt;/code&gt;이 포함되는지 확인합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;events/list&lt;/code&gt;를 호출합니다.&lt;/li&gt;
&lt;li&gt;각 이벤트의 &lt;code&gt;delivery&lt;/code&gt;에 &lt;code&gt;webhook&lt;/code&gt;이 포함되는지 확인합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  테스트 2: 멱등성 구독
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;{{CALLBACK_URL}}&lt;/code&gt;, &lt;code&gt;{{WEBHOOK_SECRET}}&lt;/code&gt;을 사용해 &lt;code&gt;events/subscribe&lt;/code&gt;를 호출합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;$.result.id&lt;/code&gt;를 &lt;code&gt;SUB_ID&lt;/code&gt; 환경 변수로 저장합니다.&lt;/li&gt;
&lt;li&gt;같은 요청을 다시 전송합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;arguments&lt;/code&gt; 객체의 키 순서만 바꾼 요청을 다시 전송합니다.&lt;/li&gt;
&lt;li&gt;모든 응답의 &lt;code&gt;$.result.id&lt;/code&gt;가 &lt;code&gt;{{SUB_ID}}&lt;/code&gt;와 같은지 확인합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  테스트 3: 입력 유효성 검사
&lt;/h3&gt;

&lt;p&gt;다음 실패 요청을 전송합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;24바이트 미만으로 디코딩되는 비밀&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;http://&lt;/code&gt; 콜백 URL&lt;/li&gt;
&lt;li&gt;사설 IP를 사용하는 콜백 URL&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;초안 기준으로 잘못된 비밀과 HTTP 콜백은 &lt;code&gt;-32602&lt;/code&gt;(&lt;code&gt;InvalidParams&lt;/code&gt;)로 매핑되어야 합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-32602&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  테스트 4: 확인 챌린지 실패
&lt;/h3&gt;

&lt;p&gt;Apidog 모의 엔드포인트를 만들고 다음과 같이 잘못된 챌린지를 반환하도록 설정합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"challenge"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"wrong"&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;해당 모의 URL로 구독하면 다음을 확인해야 합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"error"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"code"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;-32015&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"data"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"reason"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"challenge_failed"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;그다음 &lt;code&gt;CALLBACK_URL&lt;/code&gt;을 정상 수신자 URL로 변경하고 구독이 성공하는지 확인합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  테스트 5: 초과 페이로드
&lt;/h3&gt;

&lt;p&gt;262,144바이트를 초과하는 이벤트를 트리거합니다.&lt;/p&gt;

&lt;p&gt;기대 결과는 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;발신 서버가 전송 전에 거부&lt;/li&gt;
&lt;li&gt;수신자까지 전달되었다면 수신자가 &lt;code&gt;413&lt;/code&gt; 반환&lt;/li&gt;
&lt;li&gt;서버 로그에 재시도가 아닌 한 번의 전송 시도만 기록&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  테스트 6: 재생 및 변조
&lt;/h3&gt;

&lt;p&gt;서명된 이벤트 전송의 헤더와 본문을 복사하여 새 요청으로 전송합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;즉시 재전송

&lt;ul&gt;
&lt;li&gt;HTTP &lt;code&gt;200&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;두 번째 이벤트 처리 로그 없음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;본문 바이트 하나 변경

&lt;ul&gt;
&lt;li&gt;HTTP &lt;code&gt;401&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;5분 뒤 원본 요청 재전송

&lt;ul&gt;
&lt;li&gt;HTTP &lt;code&gt;401&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;이 테스트를 Apidog 시나리오로 저장하고 CI에서 실행하세요. &lt;a href="https://apidog.com/kr/blog/mcp-server-testing-apidog?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;MCP 서버 테스트 플레이북&lt;/a&gt;은 도구 호출 테스트를 다루며, &lt;a href="https://apidog.com/kr/blog/how-to-test-webhooks?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;웹훅 테스트 방법&lt;/a&gt;은 수신자 테스트를 더 자세히 설명합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  MCP 이벤트란 무엇인가요?
&lt;/h3&gt;

&lt;p&gt;클라이언트가 폴링하는 대신 서버가 클라이언트에 이벤트 알림을 푸시할 수 있도록 하는 실험적 MCP 확장 기능입니다. ChatGPT는 &lt;code&gt;2026-07-28&lt;/code&gt; 버전의 웹훅 모드를 지원합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  ChatGPT는 MCP 이벤트에 폴링이나 스트리밍을 지원하나요?
&lt;/h3&gt;

&lt;p&gt;아니요. ChatGPT는 웹훅 전송과 콜백 확인만 지원합니다. 폴링, 스트리밍, &lt;code&gt;gap&lt;/code&gt;, &lt;code&gt;terminated&lt;/code&gt; 알림은 지원하지 않습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  어떤 ChatGPT 플랜에서 MCP 이벤트를 사용할 수 있나요?
&lt;/h3&gt;

&lt;p&gt;OpenAI DevDay 요약에 따르면 모든 플랜에서 사용할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  서명 비밀은 누가 생성하나요?
&lt;/h3&gt;

&lt;p&gt;구독자가 생성합니다. ChatGPT는 &lt;code&gt;delivery.secret&lt;/code&gt;에 &lt;code&gt;whsec_&lt;/code&gt; 비밀을 전달하고, 서버는 이를 검증·저장·서명에 사용합니다. 서버가 자체적으로 새 비밀을 생성하는 방식이 아닙니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents API와는 어떻게 다른가요?
&lt;/h3&gt;

&lt;p&gt;MCP 이벤트는 서버에서 ChatGPT로 데이터를 푸시합니다. &lt;a href="https://apidog.com/kr/blog/openai-agents-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OpenAI Agents API&lt;/a&gt;는 사용자가 구축한 에이전트를 실행하고 스트리밍 또는 웹훅으로 실행 진행 상태를 보고합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  다음 단계
&lt;/h2&gt;

&lt;p&gt;처음부터 많은 이벤트를 구현하지 말고 다음 순서로 시작하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;server/discover&lt;/code&gt;에 &lt;code&gt;"events": {}&lt;/code&gt; 추가&lt;/li&gt;
&lt;li&gt;필터 하나를 갖는 이벤트 하나 정의&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;events/subscribe&lt;/code&gt;와 챌린지 확인 구현&lt;/li&gt;
&lt;li&gt;Standard Webhooks 서명 적용&lt;/li&gt;
&lt;li&gt;로컬 수신자에서 6가지 테스트 실행&lt;/li&gt;
&lt;li&gt;ChatGPT 플러그인에 연결한 뒤 OpenAI 수명 주기 체크리스트 실행&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;테스트 시나리오를 저장하고 모든 커밋에서 실행하려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;하세요.&lt;/p&gt;

</description>
      <category>api</category>
      <category>chatgpt</category>
      <category>mcp</category>
      <category>openai</category>
    </item>
    <item>
      <title>OpenAI 에이전트 API vs 응답 API vs 에이전트 SDK vs 에이전트킷: 어떤 것을 선택하여 구축할까</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:46:47 +0000</pubDate>
      <link>https://dev.to/rihpig/openai-eijeonteu-api-vs-eungdab-api-vs-eijeonteu-sdk-vs-eijeonteukis-eoddeon-geoseul-seontaeghayeo-gucughalgga-24f7</link>
      <guid>https://dev.to/rihpig/openai-eijeonteu-api-vs-eungdab-api-vs-eijeonteu-sdk-vs-eijeonteukis-eoddeon-geoseul-seontaeghayeo-gucughalgga-24f7</guid>
      <description>&lt;p&gt;이 네 가지 이름은 서로 다른 계층을 가리키며, 선택 기준은 하나로 압축할 수 있습니다. &lt;strong&gt;에이전트 루프를 누가 실행하는가?&lt;/strong&gt; Responses API는 모델 호출이고 루프는 애플리케이션 코드가 실행합니다. Agents SDK는 TypeScript·Python 라이브러리이며 SDK 러너가 앱 내부에서 루프를 실행합니다. 2026년 9월 10일부터 공개 베타인 Agents API는 OpenAI의 Codex 하네스를 대신 실행하고 세션 및 선택적 샌드박스를 유지합니다. AgentKit은 Agent Builder, ChatKit, Connector Registry, Evals를 묶은 2025년 10월 번들이며, Agent Builder는 2026년 11월 30일 종료될 예정입니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;지금 Apidog 사용해 보기&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;9월 29일 DevDay에서 Agents API에 컴퓨터 사용 기능이 추가되면서(&lt;a href="https://apidog.com/kr/blog/openai-devday-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DevDay 2026 요약&lt;/a&gt; 참조), 이름 차이를 이해하는 일이 더 중요해졌습니다. 이 글에서는 루프, 컴퓨팅, 상태, 비용, 성숙도를 비교하고 선택 기준과 Responses 루프에서의 마이그레이션 절차를 정리합니다. 세션 및 승인 구현은 &lt;a href="https://apidog.com/kr/blog/openai-agents-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OpenAI Agents API 가이드&lt;/a&gt;를 참조하세요. 어떤 옵션이든 HTTP 인터페이스는 &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 테스트할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenAI 에이전트 옵션 비교
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Agents API&lt;/th&gt;
&lt;th&gt;Responses API&lt;/th&gt;
&lt;th&gt;Agents SDK&lt;/th&gt;
&lt;th&gt;AgentKit&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;무엇인가요&lt;/td&gt;
&lt;td&gt;Codex 하네스의 관리형 에이전트 런타임&lt;/td&gt;
&lt;td&gt;모델 엔드포인트, &lt;code&gt;POST /v1/responses&lt;/code&gt;
&lt;/td&gt;
&lt;td&gt;TypeScript 및 Python용 라이브러리&lt;/td&gt;
&lt;td&gt;Agent Builder, ChatKit, Connector Registry, Evals 번들&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;누가 루프를 실행하나요&lt;/td&gt;
&lt;td&gt;OpenAI&lt;/td&gt;
&lt;td&gt;애플리케이션 코드&lt;/td&gt;
&lt;td&gt;앱 내부의 SDK 러너&lt;/td&gt;
&lt;td&gt;Agent Builder 워크플로우. SDK 코드로 내보내거나 ChatKit에 임베딩&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;컴퓨팅이 어디서 실행되나요&lt;/td&gt;
&lt;td&gt;OpenAI 호스팅 샌드박스, 자체 샌드박스 또는 없음&lt;/td&gt;
&lt;td&gt;자체 환경 및 호스팅 도구&lt;/td&gt;
&lt;td&gt;자체 런타임 및 샌드박스 제공업체&lt;/td&gt;
&lt;td&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태가 어디에 저장되나요&lt;/td&gt;
&lt;td&gt;OpenAI 세션: 구성, 턴, 항목&lt;/td&gt;
&lt;td&gt;자체 기록, &lt;code&gt;previous_response_id&lt;/code&gt; 또는 Conversations API&lt;/td&gt;
&lt;td&gt;자체 저장소, SDK 세션 또는 Responses 상태&lt;/td&gt;
&lt;td&gt;게시 및 버전 관리된 워크플로우&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;무엇을 지불하나요&lt;/td&gt;
&lt;td&gt;토큰, 도구, 호스팅 컨테이너&lt;/td&gt;
&lt;td&gt;토큰 및 도구&lt;/td&gt;
&lt;td&gt;토큰, 도구, 자체 호스팅 비용&lt;/td&gt;
&lt;td&gt;기반 API 사용량, 별도 구독 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;통합 노력&lt;/td&gt;
&lt;td&gt;낮음&lt;/td&gt;
&lt;td&gt;높음&lt;/td&gt;
&lt;td&gt;중간&lt;/td&gt;
&lt;td&gt;평가되지 않음&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;공개 베타, &lt;code&gt;OpenAI-Beta: agents=v1&lt;/code&gt; 필요&lt;/td&gt;
&lt;td&gt;모든 새 프로젝트에 권장&lt;/td&gt;
&lt;td&gt;현재 지원&lt;/td&gt;
&lt;td&gt;Agent Builder 및 Evals는 2026년 11월 30일 종료 예정, ChatKit 유지&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터 제어&lt;/td&gt;
&lt;td&gt;미국 데이터 상주만, ZDR 비적격, 삭제 전까지 상태 유지&lt;/td&gt;
&lt;td&gt;제한 사항이 있는 ZDR 적격, 지역 엔드포인트 지원&lt;/td&gt;
&lt;td&gt;호출 API에 따라 다름&lt;/td&gt;
&lt;td&gt;해당 없음&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;출처: OpenAI의 &lt;a href="https://developers.openai.com/api/docs/guides/agents" rel="noopener noreferrer"&gt;에이전트 런타임 비교&lt;/a&gt;, &lt;a href="https://developers.openai.com/api/docs/guides/agents-api/overview" rel="noopener noreferrer"&gt;Agents API 개요&lt;/a&gt;, &lt;a href="https://developers.openai.com/api/docs/deprecations" rel="noopener noreferrer"&gt;사용 중단 페이지&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  누가 루프를 실행하는가
&lt;/h2&gt;

&lt;p&gt;아키텍처를 결정할 때는 먼저 다음 질문에 답하세요.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;함수 호출, 재시도, 승인, 상태 저장, 컨텍스트 압축을 우리 서비스가 제어해야 하는가?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;답에 따라 선택지가 달라집니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Responses API: 애플리케이션 코드가 루프를 소유
&lt;/h3&gt;

&lt;p&gt;Responses API는 모델 호출 단위입니다. 웹 검색, 파일 검색, 코드 인터프리터, 원격 MCP 같은 호스팅 도구는 하나의 요청에서 여러 동작을 수행할 수 있습니다. 그러나 자체 함수 도구는 호출 결과를 애플리케이션이 다시 모델에 전달해야 합니다.&lt;/p&gt;

&lt;p&gt;구현 흐름은 다음과 같습니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;POST /v1/responses&lt;/code&gt;를 호출합니다.&lt;/li&gt;
&lt;li&gt;응답의 &lt;code&gt;function_call&lt;/code&gt; 항목을 찾습니다.&lt;/li&gt;
&lt;li&gt;애플리케이션에서 함수를 실행합니다.&lt;/li&gt;
&lt;li&gt;다음 요청에 동일한 &lt;code&gt;call_id&lt;/code&gt;를 가진 &lt;code&gt;function_call_output&lt;/code&gt;을 보냅니다.&lt;/li&gt;
&lt;li&gt;완료 응답이 나올 때까지 반복합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;이 방식에서는 다음을 직접 결정합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;루프 중단 및 재시도 조건&lt;/li&gt;
&lt;li&gt;대화 기록 저장 위치&lt;/li&gt;
&lt;li&gt;응답 저장 여부: 기본 저장, &lt;code&gt;store: false&lt;/code&gt;로 비활성화&lt;/li&gt;
&lt;li&gt;긴 컨텍스트 압축 시점: &lt;code&gt;context_management&lt;/code&gt;, &lt;code&gt;compact_threshold&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;구현 상세는 &lt;a href="https://apidog.com/kr/blog/openai-responses-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Responses API 가이드&lt;/a&gt;와 &lt;a href="https://apidog.com/kr/blog/openai-function-calling?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;함수 호출 가이드&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents SDK: 앱 프로세스에서 SDK 러너가 루프를 소유
&lt;/h3&gt;

&lt;p&gt;Agents SDK는 에이전트 루프와 핸드오프를 SDK 러너가 처리하도록 합니다. 다만 실행 위치는 여전히 애플리케이션 인프라입니다.&lt;/p&gt;

&lt;p&gt;즉, 다음 책임은 서비스가 유지합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;서버 배포와 확장&lt;/li&gt;
&lt;li&gt;함수 도구 구현&lt;/li&gt;
&lt;li&gt;상태 저장&lt;/li&gt;
&lt;li&gt;승인 정책&lt;/li&gt;
&lt;li&gt;인증 및 감사 로그&lt;/li&gt;
&lt;li&gt;샌드박스 제공업체 선택&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;샌드박스 에이전트의 명령은 Unix 로컬 환경, Docker 또는 호스팅 워크스페이스에서 실행될 수 있습니다. 이 경우에도 인증, 사람 검토, 감사 로그는 컨테이너 외부의 애플리케이션 계층에서 관리하는 편이 안전합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents API: OpenAI가 루프를 소유
&lt;/h3&gt;

&lt;p&gt;Agents API는 OpenAI가 관리하는 하네스가 세션, 오케스트레이션, 컨텍스트 압축, 복구를 처리합니다. 서브 에이전트, 도구 검색, 프로그래밍 방식 도구 호출도 지원합니다. 원격 MCP 서버는 OpenAI가 직접 호출합니다.&lt;/p&gt;

&lt;p&gt;단, 자체 함수 도구의 실행 책임까지 사라지는 것은 아닙니다. 세션이 &lt;code&gt;required_actions&lt;/code&gt;에 &lt;code&gt;function_call&lt;/code&gt;을 보고하면 애플리케이션은 다음 정보를 포함한 &lt;code&gt;agent.session.input.tool_result&lt;/code&gt; 이벤트를 반환해야 합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;turn_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;call_id&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;도구 실행 결과&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;동일한 작업을 두 API로 시작하는 예시는 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Responses API: 하나의 모델 호출이며, 애플리케이션 코드가 루프를 소유합니다.&lt;/span&gt;
curl https://api.openai.com/v1/responses &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "model": "gpt-6.1-sol",
    "reasoning": {"effort": "low"},
    "tools": [{"type": "web_search"}],
    "input": "Summarize the breaking changes in the latest Node.js release."
  }'&lt;/span&gt;

&lt;span class="c"&gt;# Agents API: 영구 세션이며, OpenAI가 루프를 소유합니다.&lt;/span&gt;
curl https://api.openai.com/v1/agents/sessions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"OpenAI-Beta: agents=v1"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "agent": {"model": "gpt-6-astra", "tools": [{"type": "web_search"}]},
    "environment": {"type": "none"},
    "input": "Summarize the breaking changes in the latest Node.js release."
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agents API 문서 예시는 &lt;code&gt;gpt-6-astra&lt;/code&gt;를 사용합니다. 다른 모델 허용 여부는 명시되지 않았으므로, &lt;code&gt;gpt-6.1-sol&lt;/code&gt; 같은 모델로 교체하기 전에 지원 여부를 확인하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  컴퓨팅, 상태 및 비용
&lt;/h2&gt;

&lt;h3&gt;
  
  
  컴퓨팅
&lt;/h3&gt;

&lt;p&gt;Agents API는 세션 전체에 대한 샌드박스를 프로비저닝하고 관리할 수 있습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"environment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai_hosted"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;environment.type&lt;/code&gt;에는 다음 값을 설정할 수 있습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;openai_hosted&lt;/code&gt;: OpenAI 호스팅 샌드박스&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;self_hosted&lt;/code&gt;: 자체 샌드박스&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;none&lt;/code&gt;: 샌드박스 없음&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Agents SDK는 샌드박스 제공업체를 직접 선택하고 비용도 직접 부담합니다. Responses API는 호스팅 도구를 제외하면 애플리케이션이 실행하는 환경에서 코드를 실행합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  상태
&lt;/h3&gt;

&lt;p&gt;상태가 저장되는 위치는 운영 방식에 직접 영향을 줍니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agents API&lt;/strong&gt;: OpenAI 세션이 구성, 턴, 항목을 보관합니다. 후속 요청은 같은 세션 ID에 이벤트를 전달하는 방식입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responses API&lt;/strong&gt;: &lt;code&gt;previous_response_id&lt;/code&gt;를 연결하거나 Conversations API를 사용합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents SDK&lt;/strong&gt;: 자체 저장소, SDK 세션 또는 Responses 상태를 사용합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  비용
&lt;/h3&gt;

&lt;p&gt;동일한 모델을 호출한다면 토큰 가격은 옵션별로 동일합니다. 비용 차이는 실행 인프라에서 발생합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agents API&lt;/strong&gt;: 추가 플랫폼 비용은 없지만 호스팅 컨테이너 비용이 발생할 수 있습니다. 20분 세션 기준 1GB는 &lt;code&gt;$0.03&lt;/code&gt;, 16GB는 &lt;code&gt;$0.48&lt;/code&gt;입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Agents SDK&lt;/strong&gt;: 토큰 및 도구 사용료 외에 자체 인프라 비용이 추가됩니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Responses API&lt;/strong&gt;: 자체 함수 실행 인프라 비용을 부담합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;AgentKit&lt;/strong&gt;: &lt;a href="https://apidog.com/kr/blog/openai-agentkit?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AgentKit 설명&lt;/a&gt;에 따르면 별도 구독은 없습니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  데이터 제어
&lt;/h3&gt;

&lt;p&gt;Agents API는 현재 미국 데이터 상주만 지원하며 Zero Data Retention(ZDR)을 지원하지 않습니다. 자체 호스팅 샌드박스를 사용해도 이 제약은 유지됩니다.&lt;/p&gt;

&lt;p&gt;OpenAI의 &lt;a href="https://developers.openai.com/api/docs/guides/your-data" rel="noopener noreferrer"&gt;데이터 제어 페이지&lt;/a&gt;는 &lt;code&gt;/v1/agents&lt;/code&gt;가 ZDR 비적격이며, 상태가 삭제될 때까지 유지된다고 명시합니다.&lt;/p&gt;

&lt;p&gt;반면 &lt;code&gt;/v1/responses&lt;/code&gt;는 제한 사항이 있는 ZDR 적격이며 &lt;code&gt;eu.api.openai.com&lt;/code&gt; 같은 지역 엔드포인트에서 사용할 수 있습니다.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;ZDR 또는 EU 데이터 상주가 필수라면 현재 Agents API는 선택할 수 없습니다.&lt;/strong&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  2026년 말 AgentKit: 남은 것은 무엇인가
&lt;/h2&gt;

&lt;p&gt;AgentKit은 2025년 10월 6일 네 가지 구성 요소로 출시되었습니다. 각 구성 요소의 상태를 배포 계획에 반영해야 합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Agent Builder&lt;/strong&gt;: 2026년 6월 3일 사용 중단이 발표됐으며 2026년 11월 30일 종료 예정입니다. OpenAI의 &lt;a href="https://developers.openai.com/api/docs/guides/agent-builder/migrate-from-agent-builder" rel="noopener noreferrer"&gt;마이그레이션 가이드&lt;/a&gt;는 워크플로우를 Agents SDK 코드로 내보내거나, Business·Enterprise·Edu 환경에서 ChatGPT Workspace Agent로 재구성하는 방법을 안내합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Evals&lt;/strong&gt;: 기존 Evals는 2026년 10월 31일 읽기 전용이 되고, 대시보드와 API는 11월 30일 종료될 예정입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ChatKit&lt;/strong&gt;: 임베디드 채팅 UI 용도로 계속 사용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Connector Registry&lt;/strong&gt;: OpenAI 제품 전반의 커넥터 및 MCP 서버를 관리하는 관리자 패널입니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/openai-agentkit?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AgentKit 가이드&lt;/a&gt;에 따르면 AgentKit에서 지속 가능한 코드 우선 경로는 Agents SDK입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  어떤 것을 기반으로 구축할 것인가
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;선택&lt;/th&gt;
&lt;th&gt;적합한 상황&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agents API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;작업이 몇 분간 실행되고 파일, 명령 또는 브라우저가 필요할 때. 루프, 샌드박스, 세션 저장소를 직접 운영하고 싶지 않고 미국 상주 및 베타 헤더를 수용할 수 있을 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Responses API&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;단일 모델 호출 또는 완전한 턴 제어가 필요할 때. ZDR, 비미국 데이터 상주가 필요하거나 이미 동작하는 자체 루프가 있을 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agents SDK&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;유형화된 애플리케이션 코드가 도구, 저장소, 승인, 핸드오프를 소유해야 하고 루프도 자체 인프라에서 실행해야 할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;ChatKit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;제품에 임베디드 채팅 UI가 필요할 때&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Agent Builder&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;새 프로젝트에서는 시작하지 마세요. 기존 워크플로우는 2026년 11월 30일 이전에 내보내야 합니다&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;AWS를 사용한다면 &lt;a href="https://aws.amazon.com/bedrock/managed-agents-openai/" rel="noopener noreferrer"&gt;OpenAI 기반 Bedrock Managed Agents&lt;/a&gt;가 Agents API의 핵심 기능을 AWS 환경에서 네이티브로 실행할 수 있도록 합니다. 코드 우선 경로에서 MCP를 연결하려면 &lt;a href="https://apidog.com/kr/blog/mcp-servers-openai-agents?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;OpenAI 에이전트와 MCP 서버&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  자체 Responses 루프에서 Agents API로 이동
&lt;/h2&gt;

&lt;p&gt;이미 Responses API 기반 루프를 운영하고 있고 OpenAI가 루프를 실행하도록 전환하려면 다음 순서로 진행하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;구성 요소를 매핑합니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
지침, 모델, 도구 정의는 &lt;code&gt;agent&lt;/code&gt;로 이동합니다. 자체 컨테이너는 &lt;code&gt;environment&lt;/code&gt;로 이동하고, 대화 저장소는 Agents API 세션 ID로 대체합니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;원격 MCP 서버를 &lt;code&gt;agent.tools&lt;/code&gt;로 이동합니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
토큰을 프롬프트에 넣지 마세요. &lt;code&gt;vault_ids&lt;/code&gt;에 연결된 볼트에 자격 증명을 보관합니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;함수 호출 핸들러를 다시 작성합니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
기존 &lt;code&gt;function_call_output&lt;/code&gt; 루프를 다음 이벤트 핸들러로 교체합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;스트리밍: &lt;code&gt;agent.session.requires_action&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;웹훅: &lt;code&gt;agent.session.action_required&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;핸들러는 &lt;code&gt;agent.session.input.tool_result&lt;/code&gt;를 반환해야 합니다. 서브 에이전트는 함수 도구를 호출할 수 없으므로 함수 도구는 주 에이전트에 유지하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;자체 압축 코드를 제거합니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
관리형 하네스가 컨텍스트를 자동으로 압축합니다.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;완료 상태를 이벤트로 판정합니다.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
다음 이벤트를 스트리밍하거나 웹훅으로 수신하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;agent.session.turn.completed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.session.turn.failed&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.session.turn.cancelled&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;세션이 유휴 상태라는 사실만으로 성공을 판단하면 안 됩니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;배포 제약을 확인합니다.&lt;/strong&gt;
미국 데이터 상주만 지원, ZDR 미지원, 베타 헤더 필요 여부를 출시 조건에 포함하세요.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  두 가지를 하나의 Apidog 프로젝트에 유지
&lt;/h2&gt;

&lt;p&gt;전환 전에는 기존 Responses 구현과 새 Agents API 구현을 동시에 검증하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;하나의 Apidog 프로젝트에 &lt;code&gt;Responses&lt;/code&gt; 폴더와 &lt;code&gt;Agents API&lt;/code&gt; 폴더를 만듭니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;{{OPENAI_API_KEY}}&lt;/code&gt;와 모델 변수를 공유하는 환경을 설정합니다.&lt;/li&gt;
&lt;li&gt;두 요청에 동일한 프롬프트를 보냅니다.&lt;/li&gt;
&lt;li&gt;상태 코드와 필수 출력 필드를 검사합니다.&lt;/li&gt;
&lt;li&gt;Agents API 스트림은 SSE 요청으로 열어 턴 이벤트를 관찰합니다.&lt;/li&gt;
&lt;li&gt;실행 결과를 테스트 시나리오로 저장합니다.&lt;/li&gt;
&lt;li&gt;Apidog CLI로 CI에서 실행해 베타 변경 사항을 실패한 검사로 감지합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;운영 환경에서 확인할 항목은 &lt;a href="https://apidog.com/kr/blog/production-ai-agent-reliability?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;운영 AI 에이전트 신뢰성 가이드&lt;/a&gt;를 참고하세요. 설정하려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드&lt;/a&gt;하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Agents API가 Responses API를 대체하나요?
&lt;/h3&gt;

&lt;p&gt;아니요. 사용 중단은 발표되지 않았습니다. OpenAI의 에이전트 개요는 Agents API, Agents SDK, Responses API를 서로 다른 요구 사항에 맞는 현재 옵션으로 나열합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  OpenAI AgentKit이 사용 중단되었나요?
&lt;/h3&gt;

&lt;p&gt;부분적으로 그렇습니다. Agent Builder와 Evals는 2026년 11월 30일 종료 예정이며, ChatKit은 계속 사용할 수 있습니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents SDK가 Agents API를 사용하나요?
&lt;/h3&gt;

&lt;p&gt;아니요. Agents SDK는 애플리케이션 내부에서 실행됩니다. Agents API는 OpenAI 서비스 내부에서 관리형 하네스를 실행합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Assistants API는 어떻게 되었나요?
&lt;/h3&gt;

&lt;p&gt;OpenAI 사용 중단 페이지는 2026년 8월 26일 제거를 설정했으며, 개발자에게 Responses API와 Conversations API 사용을 안내합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  어떤 옵션이 가장 저렴한가요?
&lt;/h3&gt;

&lt;p&gt;토큰 가격은 모두 동일합니다. 비용 차이는 Agents API의 호스팅 컨테이너와 Agents SDK 또는 Responses API를 사용할 때의 자체 호스팅 비용에서 발생합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  이번 주에 한 가지 경로를 선택하십시오
&lt;/h2&gt;

&lt;p&gt;먼저 &lt;strong&gt;루프를 누가 실행해야 하는가&lt;/strong&gt;를 결정하고, 애플리케이션을 본격적으로 작성하기 전에 실제 HTTP 요청으로 가정을 검증하세요.&lt;/p&gt;

&lt;p&gt;새 프로젝트라면 Agents API 세션 하나를 만들고, &lt;a href="https://apidog.com?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 현재 &lt;a href="https://apidog.com/kr/blog/openai-responses-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Responses 설정&lt;/a&gt;과 동일한 입력을 보낸 뒤 출력, 이벤트, 상태 관리 방식을 비교해 보세요.&lt;/p&gt;

</description>
    </item>
    <item>
      <title>OpenAI Agents API 사용법</title>
      <dc:creator>Rihpig</dc:creator>
      <pubDate>Fri, 02 Oct 2026 09:46:27 +0000</pubDate>
      <link>https://dev.to/rihpig/openai-agents-api-sayongbeob-heh</link>
      <guid>https://dev.to/rihpig/openai-agents-api-sayongbeob-heh</guid>
      <description>&lt;p&gt;OpenAI Agents API는 OpenAI의 오픈 소스 Codex 하네스를 실행합니다. &lt;code&gt;OpenAI-Beta: agents=v1&lt;/code&gt; 헤더와 에이전트 정의, 작업을 포함해 &lt;code&gt;POST https://api.openai.com/v1/agents/sessions&lt;/code&gt;를 보내면 OpenAI가 모델·도구 루프를 실행하고 세션을 유지하며 샌드박스를 프로비저닝합니다. Agents API 자체 수수료는 없지만 토큰, 도구, 호스팅된 컨테이너 시간 비용은 지불해야 합니다. 1GB~16GB 샌드박스 기준 컨테이너 비용은 20분 세션당 &lt;code&gt;$0.03~$0.48&lt;/code&gt;입니다. 이 API는 2026년 9월 10일 공개 베타에 진입했고, OpenAI는 9월 29일 DevDay에서 컴퓨터 사용 기능을 추가했습니다.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation" class="crayons-btn crayons-btn--primary"&gt;Apidog를 지금 사용해 보세요&lt;/a&gt;
&lt;/p&gt;

&lt;p&gt;이 글에서는 첫 REST 세션 생성, 진행 이벤트 처리, MCP 도구, 서브에이전트, 컴퓨터 사용 승인 흐름을 구현합니다. 다른 OpenAI 에이전트 인터페이스와의 차이는 &lt;a href="https://apidog.com/kr/blog/openai-agents-api-vs-responses-api-vs-agents-sdk?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Agents API vs Responses API vs Agents SDK&lt;/a&gt;를 참고하세요. DevDay의 나머지 발표 내용은 &lt;a href="https://apidog.com/kr/blog/openai-devday-2026?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;DevDay 2026 총정리&lt;/a&gt;에서 확인할 수 있습니다. 모든 호출은 일반 HTTP이므로 애플리케이션 코드에 연결하기 전에 &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 요청과 응답을 먼저 검증할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  OpenAI Agents API 요약
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;항목&lt;/th&gt;
&lt;th&gt;값&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;상태&lt;/td&gt;
&lt;td&gt;2026년 9월 10일부터 공개 베타, 9월 29일 컴퓨터 사용 추가&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;세션 생성&lt;/td&gt;
&lt;td&gt;&lt;code&gt;POST /v1/agents/sessions&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;베타 헤더&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;OpenAI-Beta: agents=v1&lt;/code&gt; (OpenAI SDK가 자동 추가)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;주요 권한&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;api.agents.read&lt;/code&gt;, &lt;code&gt;api.agents.write&lt;/code&gt;, &lt;code&gt;api.responses.write&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;가격&lt;/td&gt;
&lt;td&gt;Agents API 수수료 없음. 모델 토큰은 API 요율, 도구는 표준 요율(웹 검색은 1K 호출당 &lt;code&gt;$10&lt;/code&gt;)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;호스팅된 컨테이너&lt;/td&gt;
&lt;td&gt;20분 세션당 &lt;code&gt;$0.03&lt;/code&gt; (&lt;code&gt;small&lt;/code&gt;, 1GB), &lt;code&gt;$0.12&lt;/code&gt; (&lt;code&gt;medium&lt;/code&gt;, 4GB), &lt;code&gt;$0.48&lt;/code&gt; (&lt;code&gt;large&lt;/code&gt;, 16GB)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;환경&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;none&lt;/code&gt;, &lt;code&gt;openai_hosted&lt;/code&gt;, &lt;code&gt;self_hosted&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;문서 예시 모델&lt;/td&gt;
&lt;td&gt;&lt;code&gt;gpt-6-astra&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;데이터 제어&lt;/td&gt;
&lt;td&gt;미국 데이터 상주만 가능, 제로 데이터 보존(ZDR) 미지원&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;최대 요청 크기&lt;/td&gt;
&lt;td&gt;4MiB&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;출처: &lt;a href="https://openai.com/index/introducing-the-agents-api/" rel="noopener noreferrer"&gt;Agents API 소개&lt;/a&gt;, &lt;a href="https://developers.openai.com/api/docs/guides/agents-api/overview" rel="noopener noreferrer"&gt;Agents API 개요&lt;/a&gt;, &lt;a href="https://developers.openai.com/api/docs/pricing" rel="noopener noreferrer"&gt;가격 페이지&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  먼저 이해할 네 가지 개념
&lt;/h2&gt;

&lt;p&gt;Agents API 구현은 다음 네 가지 리소스를 기준으로 설계하면 됩니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;에이전트(Agent)&lt;/strong&gt;: 모델, 지침, 도구, MCP 서버를 정의합니다. 요청에 인라인으로 전달하거나 저장한 뒤 &lt;code&gt;agent_id&lt;/code&gt;로 재사용할 수 있습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;환경(Environment)&lt;/strong&gt;: 에이전트가 파일을 읽고 명령을 실행할 샌드박스 또는 컴퓨터를 지정합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;세션(Session)&lt;/strong&gt;: 구성, 대화, 저장된 작업을 유지하는 에이전트 인스턴스입니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;이벤트와 항목(Events and items)&lt;/strong&gt;: 이벤트는 실시간 진행 상태를 전달하고, 항목은 메시지와 도구 호출 같은 영구 기록입니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;유휴 세션에 메시지를 보내면 새 턴이 시작됩니다. 실행 중인 턴에 메시지를 보내면 에이전트를 조종할 수 있습니다. &lt;a href="https://developers.openai.com/api/docs/guides/agents-api/architecture" rel="noopener noreferrer"&gt;아키텍처 문서&lt;/a&gt;에 따르면 호스팅된 Codex 인스턴스인 하네스가 모델·도구 루프와 컨텍스트 압축을 처리하므로, 별도의 컨텍스트 압축 설정은 필요하지 않습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  환경 선택하기
&lt;/h2&gt;

&lt;p&gt;&lt;code&gt;environment.type&lt;/code&gt;은 명령과 파일 작업이 실행될 위치를 결정합니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;none&lt;/code&gt;&lt;/strong&gt;: 컴퓨팅 환경을 만들지 않습니다. 원격 MCP 서버와 함수 도구는 사용할 수 있지만, 내장 Bash, apply-patch, 작업 공간 파일, Executor MCP는 사용할 수 없습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;openai_hosted&lt;/code&gt;&lt;/strong&gt;: OpenAI가 Linux 샌드박스를 관리합니다. &lt;code&gt;/workspace&lt;/code&gt;에서 Python과 Node.js를 사용할 수 있습니다.

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;container_size&lt;/code&gt;: &lt;code&gt;small&lt;/code&gt;(1GB), &lt;code&gt;medium&lt;/code&gt;(기본값, 4GB), &lt;code&gt;large&lt;/code&gt;(16GB)&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;network.access&lt;/code&gt;: &lt;code&gt;enabled&lt;/code&gt;, &lt;code&gt;disabled&lt;/code&gt;, 또는 &lt;code&gt;allowed_domains&lt;/code&gt;와 함께 사용하는 &lt;code&gt;restricted&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;턴 완료 후 &lt;code&gt;/workspace/outputs&lt;/code&gt;의 파일은 아티팩트가 됩니다.&lt;/li&gt;
&lt;li&gt;keep-alive가 없는 유휴 샌드박스는 한 시간 후 삭제될 수 있습니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;self_hosted&lt;/code&gt;&lt;/strong&gt;: 자체 인프라에서 실행합니다. 노트북, 컨테이너, 원격 샌드박스에서 &lt;code&gt;codex exec-server&lt;/code&gt;를 실행하고 별도 환경 키로 연결합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;출시 게시물에는 Blaxel, Cloudflare, Daytona, DigitalOcean, E2B, Modal, Oracle, Runloop, Vercel 같은 샌드박스 파트너가 나열되어 있습니다. &lt;a href="https://developers.openai.com/api/docs/guides/agents-api/environments/self-hosted" rel="noopener noreferrer"&gt;자체 호스팅 가이드&lt;/a&gt;에는 AWS Lambda MicroVMs도 추가되었습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  REST로 첫 세션 만들기
&lt;/h2&gt;

&lt;p&gt;먼저 필요한 권한이 포함된 API 키를 환경 변수로 설정합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="s2"&gt;"..."&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;다음 요청은 작은 호스팅 컨테이너에서 파일을 만들고 실행하는 첫 세션을 생성합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--no-buffer&lt;/span&gt; https://api.openai.com/v1/agents/sessions &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"OpenAI-Beta: agents=v1"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "agent": {
      "model": "gpt-6-astra",
      "instructions": "Write clean code, run it, and report the actual output."
    },
    "environment": {
      "type": "openai_hosted",
      "container_size": "small"
    },
    "input": "Create tree.py, a script that prints a tree of the files in the current directory. Run it and show the output.",
    "stream": true
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;stream: true&lt;/code&gt;를 지정하면 첫 턴의 이벤트 스트림이 응답으로 반환됩니다. 응답에서 세션 ID를 저장하세요. 이후 요청은 모두 같은 세션 리소스를 사용합니다.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;작업&lt;/th&gt;
&lt;th&gt;요청&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;후속 메시지 전송 또는 실행 중인 턴 조종&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;agent.session.input.message&lt;/code&gt; 이벤트와 함께 &lt;code&gt;POST /v1/agents/sessions/{id}/events&lt;/code&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;활성 턴 취소&lt;/td&gt;
&lt;td&gt;동일 엔드포인트에 &lt;code&gt;agent.session.input.cancel&lt;/code&gt; 이벤트 전송&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;저장된 메시지·도구 호출 조회&lt;/td&gt;
&lt;td&gt;&lt;code&gt;GET /v1/agents/sessions/{id}/items?order=asc&amp;amp;limit=100&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;세션 정리&lt;/td&gt;
&lt;td&gt;&lt;code&gt;DELETE /v1/agents/sessions/{id}&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;JavaScript SDK에서도 같은 구조를 사용합니다. 다음 예시는 웹 검색, 서브에이전트, 볼트를 함께 설정합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="nx"&gt;OpenAI&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;new&lt;/span&gt; &lt;span class="nc"&gt;OpenAI&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;session&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;client&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;beta&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;agents&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;sessions&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;create&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
  &lt;span class="na"&gt;agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-6-astra&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;web_search&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;}],&lt;/span&gt;
    &lt;span class="na"&gt;multi_agent&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="na"&gt;enabled&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="na"&gt;max_concurrent_subagents&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;vault_ids&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;VAULT_ID&lt;/span&gt;&lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;openai_hosted&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Summarize breaking changes in the latest release notes.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;session&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;운영 환경에서는 &lt;code&gt;session.id&lt;/code&gt;를 사용자 요청, 작업 ID, 만료 시각과 함께 저장해 두는 것이 좋습니다. 그래야 스트림이 끊겨도 항목 조회 API로 상태를 복구할 수 있습니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  진행 상태 추적: SSE 또는 웹훅
&lt;/h2&gt;

&lt;h3&gt;
  
  
  SSE 스트리밍
&lt;/h3&gt;

&lt;p&gt;입력을 보내기 &lt;strong&gt;전에&lt;/strong&gt; 이벤트 스트림을 열어야 초기 이벤트를 놓치지 않습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--no-buffer&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"OpenAI-Beta: agents=v1"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Accept: text/event-stream"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="s2"&gt;"https://api.openai.com/v1/agents/sessions/&lt;/span&gt;&lt;span class="nv"&gt;$SESSION_ID&lt;/span&gt;&lt;span class="s2"&gt;/events?stream=true"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;다음 이벤트를 우선 처리하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;텍스트 출력: &lt;code&gt;agent.session.turn.output_text.delta&lt;/code&gt;, &lt;code&gt;agent.session.turn.output_text.done&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;턴 종료: &lt;code&gt;agent.session.turn.completed&lt;/code&gt;, &lt;code&gt;agent.session.turn.failed&lt;/code&gt;, &lt;code&gt;agent.session.turn.cancelled&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;사용자 또는 애플리케이션 입력 필요: &lt;code&gt;agent.session.requires_action&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;구현 시 다음 세 가지를 구분해야 합니다.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;agent.session.idle&lt;/code&gt;은 턴이 성공했다는 의미가 아닙니다.&lt;/li&gt;
&lt;li&gt;완료된 턴에도 실패한 도구 호출이 포함될 수 있습니다.&lt;/li&gt;
&lt;li&gt;SSE 연결을 닫아도 에이전트 작업은 중지되지 않습니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;스트림은 놓친 이벤트를 재생하지 않습니다. 연결이 끊기면 새 스트림을 열고, 세션 및 &lt;code&gt;items&lt;/code&gt; API를 조회해 현재 상태를 복구하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  웹훅
&lt;/h3&gt;

&lt;p&gt;장기 실행 작업은 웹훅으로 처리할 수 있습니다. 다음 이벤트를 구독하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;code&gt;agent.session.created&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.session.action_required&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.session.in_progress&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.session.idle&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;agent.session.failed&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;이름이 서로 다르다는 점에 유의하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;스트림 이벤트: &lt;code&gt;requires_action&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;웹훅 이벤트: &lt;code&gt;action_required&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;웹훅 페이로드에는 호출 세부 정보가 생략될 수 있습니다. 핸들러에서 세션을 다시 조회하고 &lt;code&gt;required_actions&lt;/code&gt;를 읽는 구조로 구현하세요. 또한 모든 웹훅 요청의 서명을 검증해야 합니다. 구현 방법은 &lt;a href="https://apidog.com/kr/blog/webhook-signature-verification?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;웹훅 서명 확인&lt;/a&gt;을 참고하세요. &lt;a href="https://apidog.com/kr/blog/ai-agent-long-running-api-operations?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;장기 실행 API 작업&lt;/a&gt;에서는 웹훅이 수 분 이상 걸리는 작업에 적합한 이유를 설명합니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP 도구, 도구 검색, 프로그래밍 방식 도구 호출, 서브에이전트
&lt;/h2&gt;

&lt;h3&gt;
  
  
  MCP 서버 추가
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;agent.tools&lt;/code&gt;에 MCP 서버를 추가합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"mcp"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"server_label"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai_docs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"transport"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"http"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"server_url"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"https://developers.openai.com/mcp"&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"required"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;기본값은 &lt;code&gt;connection_origin: "service"&lt;/code&gt;이며 OpenAI 서비스가 MCP 서버에 연결합니다. 따라서 서버는 OpenAI에서 접근 가능해야 합니다.&lt;/p&gt;

&lt;p&gt;사설 네트워크의 MCP 서버에는 다음 중 하나를 사용하세요.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;connection_origin: "environment"&lt;/code&gt;: 에이전트 환경에서 서버에 연결&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;stdio&lt;/code&gt;: 샌드박스에서 MCP 서버 프로세스 시작&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;자격 증명은 세션 단위로 &lt;code&gt;transport.authorization&lt;/code&gt;에 전달할 수 있습니다. 재사용 가능한 자격 증명이 필요하면 &lt;code&gt;vault_ids&lt;/code&gt;와 함께 볼트 자격 증명인 &lt;code&gt;static_bearer&lt;/code&gt; 또는 &lt;code&gt;mcp_oauth&lt;/code&gt;를 연결합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  많은 도구를 사용할 때: 도구 검색
&lt;/h3&gt;

&lt;p&gt;MCP 도구는 모델이 도구 검색을 지원할 경우 자동으로 발견됩니다. 함수 도구가 많다면 &lt;code&gt;tool_search&lt;/code&gt;를 추가하고, 지연 로드할 함수에는 &lt;code&gt;defer_loading: true&lt;/code&gt;를 지정합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"agent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"tool_search"&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"function"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"name"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"get_deployment_logs"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"defer_loading"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  프로그래밍 방식 도구 호출
&lt;/h3&gt;

&lt;p&gt;프로그래밍 방식 도구 호출은 기본적으로 활성화됩니다. 에이전트는 격리된 V8 런타임에서 JavaScript를 실행하는 &lt;code&gt;exec&lt;/code&gt; 도구를 사용합니다. 이를 통해 여러 도구 호출을 반복하고, 큰 결과를 컨텍스트에 넣기 전에 잘라낼 수 있습니다.&lt;/p&gt;

&lt;p&gt;필요하지 않다면 명시적으로 비활성화하세요.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"programmatic_tool_calling"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;false&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h3&gt;
  
  
  서브에이전트 활성화
&lt;/h3&gt;

&lt;p&gt;병렬 조사나 독립적인 하위 작업이 필요하면 &lt;code&gt;multi_agent&lt;/code&gt;를 설정합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"multi_agent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"max_concurrent_subagents"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;기본 동시 실행 제한은 6입니다. 서브에이전트는 환경 파일 시스템을 공유하고 MCP 도구 및 웹 검색을 상속합니다. 다만 함수 도구는 사용할 수 없습니다. 메인 에이전트 턴의 &lt;code&gt;subagent_id&lt;/code&gt;는 &lt;code&gt;null&lt;/code&gt;입니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  컴퓨터 사용 기능 구현하기
&lt;/h2&gt;

&lt;p&gt;컴퓨터 사용은 에이전트에 호스팅된 브라우저를 제공합니다. &lt;code&gt;computer_use&lt;/code&gt; 도구와 데스크톱 환경을 함께 활성화해야 합니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"agent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"gpt-6-astra"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"tools"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"computer_use"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
        &lt;/span&gt;&lt;span class="nl"&gt;"include_screenshots"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"environment"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"openai_hosted"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"desktop"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"enabled"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;},&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"network"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"access"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"enabled"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;브라우저는 공개 웹사이트를 포함해 새 웹사이트 원본을 방문하기 전에 사용자 승인을 요구합니다. &lt;code&gt;agent.session.requires_action&lt;/code&gt; 이벤트를 수신하면 다음 흐름으로 처리하세요.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;세션을 조회합니다.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;computer_use_approval_request&lt;/code&gt; 항목을 찾습니다.&lt;/li&gt;
&lt;li&gt;중첩된 &lt;code&gt;request.type&lt;/code&gt;을 확인합니다.&lt;/li&gt;
&lt;li&gt;사용자에게 승인 UI를 표시합니다.&lt;/li&gt;
&lt;li&gt;이벤트 엔드포인트로 결과를 제출합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;요청 유형은 두 가지입니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;browser_origin_access&lt;/code&gt;&lt;/strong&gt;: &lt;code&gt;origin&lt;/code&gt;과 &lt;code&gt;reason&lt;/code&gt;을 표시하고 &lt;code&gt;approve&lt;/code&gt;, &lt;code&gt;deny&lt;/code&gt;, &lt;code&gt;cancel&lt;/code&gt; 중 하나를 제출합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;browser_authentication&lt;/code&gt;&lt;/strong&gt;: 로그인 폼의 &lt;code&gt;fields&lt;/code&gt;, 선택적 로그인 &lt;code&gt;options&lt;/code&gt;, &lt;code&gt;credential_origin&lt;/code&gt;을 표시합니다. 사용자 입력과 함께 &lt;code&gt;action: "submit"&lt;/code&gt;을 보내거나 &lt;code&gt;action: "cancel"&lt;/code&gt;을 보냅니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;원본 접근을 승인하는 이벤트 예시는 다음과 같습니다.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="s2"&gt;"https://api.openai.com/v1/agents/sessions/&lt;/span&gt;&lt;span class="nv"&gt;$SESSION_ID&lt;/span&gt;&lt;span class="s2"&gt;/events"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"OpenAI-Beta: agents=v1"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Authorization: Bearer &lt;/span&gt;&lt;span class="nv"&gt;$OPENAI_API_KEY&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-H&lt;/span&gt; &lt;span class="s2"&gt;"Content-Type: application/json"&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
  &lt;span class="nt"&gt;-d&lt;/span&gt; &lt;span class="s1"&gt;'{
    "events": [
      {
        "type": "agent.session.input.computer_use_approval_request_result",
        "request_id": "REQUEST_ID",
        "response": {
          "type": "browser_origin_access",
          "decision": "approve"
        }
      }
    ]
  }'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;브라우저 동작은 &lt;code&gt;computer_use_call&lt;/code&gt; 항목으로 저장됩니다. 이 항목에는 &lt;code&gt;id&lt;/code&gt;, &lt;code&gt;turn_id&lt;/code&gt;, &lt;code&gt;title&lt;/code&gt;, &lt;code&gt;status&lt;/code&gt;, &lt;code&gt;output&lt;/code&gt;이 포함됩니다. &lt;code&gt;include_screenshots&lt;/code&gt;를 활성화했고 스크린샷을 사용할 수 있다면 &lt;code&gt;output&lt;/code&gt;에 base64 JPEG 스크린샷이 포함됩니다.&lt;/p&gt;

&lt;p&gt;스크린샷에는 계정 데이터가 포함될 수 있으므로 애플리케이션 로그, 분석 이벤트, 오류 추적 도구에 원문을 기록하지 마세요.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://developers.openai.com/api/docs/guides/agents-api/tools/computer-use" rel="noopener noreferrer"&gt;컴퓨터 사용 가이드&lt;/a&gt;의 주요 운영 주의사항은 다음과 같습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;원본 승인과 작업 승인은 다릅니다.&lt;/strong&gt; 사이트 접근을 허용해도 구매나 삭제 같은 개별 작업마다 확인을 요구하지는 않습니다. 작업 단위 승인이 필요하다면 해당 작업을 수행할 수 없는 리소스로 브라우저 권한을 제한하거나 제어 가능한 브라우저 런타임을 사용하세요.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;로그인에는 이메일, 비밀번호, 인증 코드가 포함될 수 있습니다.&lt;/strong&gt; 패스키와 QR 코드 로그인은 지원되지 않습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;인증 요청은 메인 에이전트만 할 수 있습니다.&lt;/strong&gt; 서브에이전트는 인증을 요청할 수 없습니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;자격 증명 제출 요청에서는 자동 재시도를 끕니다.&lt;/strong&gt; SDK는 &lt;code&gt;maxRetries: 0&lt;/code&gt;, curl은 &lt;code&gt;--retry 0&lt;/code&gt;을 사용합니다.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;HTTP &lt;code&gt;202&lt;/code&gt;는 요청 수락만 의미합니다.&lt;/strong&gt; 탐색이나 로그인이 성공했다는 의미는 아닙니다.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;인증 요청은 5분 후 만료됩니다.&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;원본 승인은 네트워크 정책을 재정의하지 않습니다.&lt;/strong&gt; &lt;code&gt;network&lt;/code&gt; 설정에서도 대상 사이트와 리디렉션 도메인을 허용해야 합니다.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;요약에 따르면 컴퓨터 사용 기능은 “API를 통해, 그리고 Pro 500 및 Enterprise 버전의 Codex 및 ChatGPT Work에서 제공됩니다.” 동일한 모델로 UI 기반 테스트를 수행하려면 &lt;a href="https://apidog.com/kr/blog/gpt-6-astra-computer-use-api-testing?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;API 테스트를 위한 GPT-6 Astra 컴퓨터 사용&lt;/a&gt;을 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  에이전트에는 UI보다 API를 제공하세요
&lt;/h2&gt;

&lt;p&gt;브라우저 자동화는 API가 없는 소프트웨어를 다루는 대체 수단입니다. 제어 가능한 시스템이라면 브라우저 조작보다 MCP 서버로 감싸는 편이 낫습니다.&lt;/p&gt;

&lt;p&gt;MCP 서버를 제공하면 다음을 얻을 수 있습니다.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;유형화된 도구 입력과 출력&lt;/li&gt;
&lt;li&gt;웹페이지 원본 접근 승인 감소&lt;/li&gt;
&lt;li&gt;검증 가능한 결과&lt;/li&gt;
&lt;li&gt;더 단순한 오류 처리와 감사 로그&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/computer-use-vs-structured-apis?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;컴퓨터 사용 대 구조화된 API&lt;/a&gt;에서 두 접근 방식의 트레이드오프를 확인할 수 있습니다. &lt;a href="https://apidog.com/kr/blog/apidog-mcp-server?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog MCP 서버&lt;/a&gt;는 래퍼를 작성하는 코딩 도우미에 API 사양을 제공하는 방법을 다룹니다.&lt;/p&gt;

&lt;h2&gt;
  
  
  코드 작성 전에 Apidog에서 Agents API 테스트하기
&lt;/h2&gt;

&lt;p&gt;Agents API는 베타이므로 애플리케이션 코드에 연결하기 전 &lt;a href="https://apidog.com/?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog&lt;/a&gt;에서 각 요청의 구조와 상태 전이를 수동으로 검증하세요.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmanc6vo56npfm0hb7wt8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmanc6vo56npfm0hb7wt8.png" alt="Apidog에서 Agents API 요청을 테스트하는 화면" width="799" height="530"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;OPENAI_API_KEY&lt;/code&gt;, &lt;code&gt;VAULT_ID&lt;/code&gt;, &lt;code&gt;SESSION_ID&lt;/code&gt;를 포함하는 Apidog 환경을 만듭니다.&lt;/li&gt;
&lt;li&gt;모든 요청에 다음 헤더를 설정합니다.
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;   Authorization: Bearer {{OPENAI_API_KEY}}
   OpenAI-Beta: agents=v1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ol&gt;
&lt;li&gt;먼저 &lt;code&gt;stream&lt;/code&gt; 없이 세션 생성 요청을 보냅니다. 2xx 상태 코드와 비어 있지 않은 &lt;code&gt;id&lt;/code&gt;를 검증한 뒤, 응답의 &lt;code&gt;id&lt;/code&gt;를 &lt;code&gt;SESSION_ID&lt;/code&gt; 환경 변수에 저장합니다.&lt;/li&gt;
&lt;li&gt;SSE 요청으로 이벤트 스트림을 열고, 두 번째 요청에서 입력 이벤트를 전송합니다. 텍스트 델타, 완료, 승인 필요 이벤트가 도착하는지 확인합니다.&lt;/li&gt;
&lt;li&gt;승인 및 취소 페이로드를 저장해 각 &lt;code&gt;required_actions&lt;/code&gt; 케이스를 재현합니다.&lt;/li&gt;
&lt;li&gt;이 요청들을 테스트 시나리오로 연결하고 Apidog CLI로 CI에서 실행합니다.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://apidog.com/kr/blog/how-to-test-ai-agents-api?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;AI 에이전트 API 테스트 가이드&lt;/a&gt;에는 비결정적 출력에 대한 단언 패턴도 포함되어 있습니다. 직접 따라 하려면 &lt;a href="https://apidog.com/download?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Apidog를 다운로드하세요&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  자주 묻는 질문
&lt;/h2&gt;

&lt;h3&gt;
  
  
  OpenAI Agents API는 무료인가요?
&lt;/h3&gt;

&lt;p&gt;플랫폼 수수료는 없지만 모델 토큰, 도구 호출, 호스팅된 컨테이너 시간 비용을 지불합니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents API와 호환되는 모델은 무엇인가요?
&lt;/h3&gt;

&lt;p&gt;문서의 컴퓨터 사용 예시를 포함한 모든 예시는 &lt;code&gt;gpt-6-astra&lt;/code&gt;를 사용합니다. 페이지에는 다른 지원 모델이 나열되어 있지 않으므로, 사용할 모델은 먼저 테스트하세요.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents API는 제로 데이터 보존을 지원하나요?
&lt;/h3&gt;

&lt;p&gt;아니요. 미국 데이터 상주만 지원하며, 자체 호스팅 샌드박스를 사용하더라도 ZDR 대상이 아닙니다.&lt;/p&gt;

&lt;h3&gt;
  
  
  Agents SDK 또는 Responses API와 어떻게 다른가요?
&lt;/h3&gt;

&lt;p&gt;Agents SDK는 애플리케이션 내부에서 루프를 실행합니다. Responses API는 직접 루프를 구축하기 위한 모델 호출 인터페이스입니다. 자세한 비교는 &lt;a href="https://apidog.com/kr/blog/openai-agents-api-vs-responses-api-vs-agents-sdk?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;Agents API vs Responses API vs Agents SDK&lt;/a&gt;를 참고하세요.&lt;/p&gt;

&lt;h2&gt;
  
  
  읽기 전용 세션 하나로 시작하기
&lt;/h2&gt;

&lt;p&gt;처음에는 읽기 전용 작업과 단일 MCP 서버로 시작하세요. 이후 기본값이 거부인 승인 핸들러를 구현한 뒤에 컴퓨터 사용 기능을 추가하는 편이 안전합니다.&lt;/p&gt;

&lt;p&gt;ChatGPT가 자체 서버의 이벤트에 반응해야 하는 경우에는 &lt;a href="https://apidog.com/kr/blog/mcp-events?utm_source=dev.to&amp;amp;utm_medium=wanda&amp;amp;utm_content=n8n-post-automation"&gt;MCP 이벤트&lt;/a&gt;가 해당 기능을 제공합니다.&lt;/p&gt;

</description>
      <category>agents</category>
      <category>ai</category>
      <category>api</category>
      <category>openai</category>
    </item>
  </channel>
</rss>
