오늘 저희는 Gemini API의 관리형 에이전트에 새로운 기능이 추가되었음을 발표합니다. 여기에는 백그라운드 실행, 원격 MCP 서버 통합, 커스텀 함수 호출 및 상호작�� 간 자격 증명 갱신이 포함됩니다. 이러한 업데이트는 개발자 피드백과 제품 요구 사항을 직접 반영하여 안정적이고 프로덕션에 바로 사용할 수 있는 에이전트를 구축할 수 있도록 지원합니다.
Gemini Interactions API의 관리형 에이전트를 사용하면 단일 엔드포인트를 호출하고 Gemini가 격리된 클라우드 샌드박스 내에서 추론, 코드 실행, 패키지 설치, 파일 관리 및 웹 정보 처리를 처리합니다.
AI 코딩 에이전트를 사용 중이라면, 사용자에게 Interactions API 스킬을 설치하도록 요청하세요: npx skills add google-gemini/gemini-skills --skill gemini-interactions-api
다음은 @google/genai JavaScript SDK를 사용한 예제입니다. Python 또는 cURL에 대한 내용은 반중력 에이전트 문서를 확인하세요.
1npm install @google/genai
확장된 기능으로 자율 에이전트 구축하기
장기 실행 백그라운드 작업
장기 실행 작업을 위해 HTTP 연결을 유지하는 것은 불안정합니다. background: true를 전달하여 서버에서 비동기적으로 상호작용을 실행하세요. API는 즉시 ID를 반환하며, 클라이언트 애플리케이션은 이 ID를 사용하여 상태를 폴링하거나, 진행 상황을 스트리밍하거나, 에이전트가 원격으로 작업을 완료하는 동안 나중에 다시 연결할 수 있습니다. 자세한 내용은 백그라운드 실행 가이드를 참조하세요.
1import { GoogleGenAI } from "@google/genai";23const client = new GoogleGenAI({});45// 1. 백그라운드에서 장기 실행 분석 시작6const interaction = await client.interactions.create({7 agent: "antigravity-preview-05-2026",8 input: "https://github.com/googleapis/js-genai를 클론하고, 소스 코드에서 모든 TODO 주석을 찾아 모듈과 우선순위별로 분류하여 마크다운 보고서로 작성해줘.",9 environment: "remote",10 background: true,11});1213console.log(`백그라운드 작업이 시작되었습니다. 상호작용 ID: ${interaction.id}`);1415// 2. 열린 HTTP 소켓을 차단하지 않고 비동기적으로 폴링16let result = interaction;17while (result.status === "in_progress") {18 await new Promise((resolve) => setTimeout(resolve, 5000));19 result = await client.interactions.get(interaction.id);20}2122if (result.status === "completed") {23 console.log("작업 완료:\n", result.output_text);24} else {25 console.error(`작업이 다음 상태로 종료됨: ${result.status}`);26}
원격 MCP 서버 통합
프라이빗 데이터베이스나 내부 API에 접근하기 위해 커스텀 프록시 미들웨어를 작성하는 대신, 이제 관리형 에이전트를 원격 Model Context Protocol (MCP) 서버에 직접 연결할 수 있습니다.
원격 도구와 내장 샌드박스 기능을 혼합하여 사용할 수 있습니다. 상호작용 시 mcp_server 도구를 Google 검색 또는 코드 실행과 함께 전달하여 에이전트가 보안 샌드박스에서 엔드포인트와 통신하도록 할 수 있습니다. 외부 도구 및 API로 에이전트를 확장할 때는 모범 사례를 따르세요.
1import { GoogleGenAI } from "@google/genai";23const client = new GoogleGenAI({});45const interaction = await client.interactions.create({6 agent: "antigravity-preview-05-2026",7 input: "내부 관측 가능성 서버에서 인증 서비스의 최근 지연 시간 급증을 확인하고, 이를 git 커밋과 연관지어 분석해줘.",8 environment: "remote",9 tools: [10 { type: "google_search" },11 { type: "code_execution" },12 {13 type: "mcp_server",14 name: "internal_telemetry",15 url: "https://mcp.internal.example.com/mcp",16 },17 ],18});1920console.log(interaction.output_text);
샌드박스 도구와 함께하는 커스텀 함수 호출
로컬 실행을 위해 내장 샌드박스 도구와 함께 커스텀 도구를 추가하세요. API는 단계 매칭을 사용합니다. 내장 도구는 서버에서 자동으로 실행되는 반면, 커스텀 함수는 상호작용을 requires_action 상태로 전환하여 클라이언트가 로컬 비즈니스 로직을 실행하도록 합니다.
1import { GoogleGenAI } from "@google/genai";23const client = new GoogleGenAI({});45// 1. 커스텀 도메인 함수 정의6const getWeatherTool = {7 type: "function",8 name: "get_weather",9 description: "주어진 위치의 현재 날씨를 가져옵니다.",10 parameters: {11 type: "object",12 properties: {13 location: {14 type: "string",15 description: "도시와 국가, 예: San Francisco, USA",16 },17 },18 required: ["location"],19 },20};2122// 2. 내장 코드 실행과 커스텀 함수를 모두 사용하여 에이전트 호출23const interaction = await client.interactions.create({24 agent: "antigravity-preview-05-2026",25 input: "도쿄의 날씨를 확인하고, 온도를 화씨로 변환하는 Python 스크립트를 작성한 후 결과를 weather.txt에 저장해줘.",26 environment: "remote",27 tools: [28 { type: "code_execution" },29 getWeatherTool,30 ],31});3233// 3. 커스텀 함수 실행을 깔끔하게 처리34if (interaction.status === "requires_action") {35 // 파일 시스템 및 샌드박스 도구는 자동으로 실행되며 일치하는 function_result 단계를 생성합니다.36 // 클라이언트 측 실행이 필요한 보류 중인 도메인 호출을 필터링합니다.37 const executedCalls = new Set(38 interaction.steps39 .filter((s) => s.type === "function_result")40 .map((s) => s.call_id)41 );4243 const pendingCalls = interaction.steps.filter(44 (s) => s.type === "function_call" && !executedCalls.has(s.id)45 );4647 for (const call of pendingCalls) {48 console.log(`클라이언트 도구 실행: ${call.name} (ID: ${call.id})`);49 // 로컬 API/데이터베이스 쿼리를 실행하고 2차 턴에서 function_result를 다시 전송합니다.50 }51}
네트워크 자격 증명 갱신
액세스 토큰과 단기 API 키는 만료됩니다. 다음 상호작용 시 기존 environment_id와 함께 새로운 네트워크 구성을 전달하여 자격 증명을 갱신하거나 키를 교체할 수 있습니다. 새 규칙은 이전 규칙을 즉시 대체합니다. 샌드박스의 파일 시스템 상태, 설치된 패키지 및 클론된 리포지토리는 그대로 유지됩니다.
1import { GoogleGenAI } from "@google/genai";2const client = new GoogleGenAI({});34// 1. 첫 번째 상호작용: 초기 토큰 사용5const first = await client.interactions.create({6 agent: "antigravity-preview-05-2026",7 input: "GCS JSON API를 사용하여 gs://my-bucket/reports/의 파일 목록을 나열해줘.",8 environment: {9 type: "remote",10 network: {11 allowlist: [12 {13 domain: "storage.googleapis.com",14 transform: {15 Authorization: "Bearer INITIAL_TOKEN",16 },17 },18 ],19 },20 },21});2223// 2. 나중에: 동일한 환경에서 토큰 갱신24const result = await client.interactions.create({25 agent: "antigravity-preview-05-2026",26 input: "이제 같은 버킷에서 reports/q1.csv 파일을 다운로드해줘.",27 environment: {28 type: "remote",29 environment_id: first.environment_id,30 network: {31 allowlist: [32 {33 domain: "storage.googleapis.com",34 transform: {35 Authorization: "Bearer REFRESHED_TOKEN",36 },37 },38 ],39 },40 },41});42console.log(result.output_text);
관리형 에이전트 시작하기
이러한 업데이트는 관리형 에이전트를 애플리케이션을 차단하지 않고 실제 개발 환경 내에서 작동하는 비동기 워커로 전환합니다.
Gemini Interactions API 개요와 관리형 에이전트 퀵스타트를 확인하여 커스텀 에이전트 정의, 환경 구성, 네트워크 규칙 및 고급 스트리밍 패턴을 살펴보세요.





