Gemini 3.5 Flash의 새로운 기능

3.6 Flash 및 3.5 Flash-Lite 이 페이지

Gemini 3.5 Flash는 정식 버전 (GA)으로 제공되며 안정적이고 확장된 프로덕션 사용에 적합합니다. Google의 가장 지능적인 Flash 모델로서 에이전트형 실행, 코딩, 장기적 작업에서 확장된 최첨단 성능을 제공합니다.

이 가이드에는 Gemini 3.5 Flash의 개선사항, API 변경사항, 마이그레이션 안내가 포함되어 있습니다.

새 모델

모델 모델 ID 설명
Gemini 3.5 Flash gemini-3.5-flash 에이전트형 및 코딩 작업에서 지속적인 최첨단 성능을 제공하는 Google의 가장 지능적인 모델입니다.

Gemini 3.5 Flash는 100만 토큰 컨텍스트 윈도우, 최대 65,000개의 출력 토큰, 사고, Gemini 3 Flash와 동일한 도구 및 플랫폼 기능( 컴퓨터 사용(프리뷰) 포함)을 지원합니다. 전체 사양은 모델 개요를 참조하세요. 가격은 가격 책정 페이지를 참조하세요.

빠른 시작

이 가이드의 모든 예에서는 GenerateContent API를 사용합니다. Interactions API도 지원되며 동일한 구성 옵션과 권장사항이 적용됩니다.

Python

from google import genai

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Explain how parallel agentic execution works in three sentences.",
)
print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.5-flash",
    contents: "Explain how parallel agentic execution works in three sentences.",
  });
  console.log(response.text);
}

main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Explain how parallel agentic execution works in three sentences."}]
    }]
  }'

새로운 소식

  • 지속적인 최첨단 성능: 확장된 에이전트형 및 코딩 작업에 최적화된 Google의 가장 지능적인 Flash 모델입니다.
  • 에이전트형 실행: 확장된 하위 에이전트 배포, 문제 해결, 신속한 에이전트형 루프입니다.
  • 코딩: 대체 경로를 테스트하고 솔루션을 동적으로 탐색하기 위한 반복적인 코딩 주기, 신속한 탐색, 프로토타입 제작입니다.
  • 장기적: 확장된 다단계 워크플로 및 도구 사용입니다.
  • 사고 보존: 모델은 멀티턴 대화에서 중간 추론을 자동으로 유지합니다. API를 변경할 필요는 없습니다.
  • 새 기본 노력 수준: 기본 사고 노력이 high에서 medium으로 변경되었습니다. 자세한 내용은 새 기본 노력 수준을 참조하세요.
  • 개선된 low 사고: 단계가 적게 필요한 코드 및 에이전트형 작업에서 low가 크게 개선되어 지연 시간과 비용이 낮으면서도 높은 품질을 제공합니다.
  • 정식 버전 출시: 확장된 프로덕션 사용을 위한 안정적인 모델입니다.

적합한 Flash 모델 선택

Gemini 3.5 Flash는 Google의 가장 지능적이고 강력한 Flash 모델입니다. 하지만 사용 사례마다 비용 및 지연 시간 요구사항이 다를 수 있습니다.

  • Gemini 3.1 Flash-Lite: 3.5 Flash의 고급 추론 깊이가 필요하지 않은 저렴한 비용의 대량 작업에는 Gemini 3.1 Flash-Lite를 사용하는 것이 좋습니다. 효율성에 최적화된 안정적인 장기 모델입니다. 자세한 내용은 Flash-Lite 개발자 가이드 를 참조하세요.
  • Gemini 3 Flash 프리뷰: 정식 버전 안정성과 개선된 추론을 위해 3.5 Flash로 마이그레이션하는 것이 좋지만 프리뷰 모델로 계속 테스트하려는 개발자는 Gemini 3 Flash (프리뷰)를 계속 사용할 수 있습니다.

동작 변경사항

새 기본 노력 수준: medium

이제 기본 사고 노력이 Gemini 3 Flash 프리뷰의 high에서 변경된 medium입니다. medium 은 더 빠르고 비용 효율적이면서도 광범위한 작업에서 매우 좋은 결과를 제공합니다. 복잡한 문제의 경우 high는 모델이 더 심층적으로 사고하도록 유도합니다.

노력 수준 용도
minimal 응답 속도에 최적화되어 있습니다. 채팅과 유사한 사용 사례, 빠른 사실 기반 답변, 간단한 도구 호출입니다.
low 지연 시간이 짧고 단계가 적게 필요한 코드 및 에이전트형 작업입니다. 사고가 필요한 분석 및 작성 작업에도 적합합니다.
medium (기본값) 대부분의 작업에 가장 적합한 품질입니다. 복잡한 코드 및 에이전트형 사용 사례에 권장됩니다.
high 모델의 사고 및 도구 사용 능력을 극대화합니다. 복잡한 추론, 어려운 수학, 가장 어려운 코드 또는 에이전트 작업에 가장 적합합니다. 확장된 사고 및 함수 호출을 허용합니다.

기본값을 재정의하려면 구성에서 thinking_level을 설정하세요.

Python

from google import genai
from google.genai import types

client = genai.Client()

response = client.models.generate_content(
    model="gemini-3.5-flash",
    contents="Prove that the square root of 2 is irrational.",
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_level="high")
    ),
)

print(response.text)

JavaScript

import { GoogleGenAI } from "@google/genai";

const ai = new GoogleGenAI({});

async function main() {
  const response = await ai.models.generateContent({
    model: "gemini-3.5-flash",
    contents: "Prove that the square root of 2 is irrational.",
    config: {
      thinkingConfig: {
        thinkingLevel: "HIGH",
      },
    },
  });
  console.log(response.text);
}

main();

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [{"text": "Prove that the square root of 2 is irrational."}]
    }],
    "generationConfig": {
      "thinkingConfig": {
        "thinkingLevel": "HIGH"
      }
    }
  }'

다음 표에는 모델별로 지원되는 사고 수준이 나와 있습니다.

사고 수준 Gemini 3.5 Flash Gemini 3.1 Pro Gemini 3.1 Flash-Lite Gemini 3 Flash 설명
minimal 지원됨 지원되지 않음 지원됨 (기본값) 지원됨 대부분의 쿼리에 '사고 없음' 설정과 일치합니다. 참고: minimal은 사고가 사용 중지되었음을 보장하지 않습니다. 모델은 복잡한 작업에 대해 매우 최소한으로 추론할 수 있습니다.
low 지원됨 지원됨 지원됨 지원됨 지연 시간과 비용을 최소화합니다.
medium 지원됨 (기본값) 지원됨 지원됨 지원됨 대부분의 작업에 균형 잡힌 사고입니다.
high 지원됨 (동적) 지원됨 (기본값, 동적) 지원됨 (동적) 지원됨 (기본값, 동적) 추론 깊이를 극대화합니다.

사고 보존

모델은 멀티턴 대화에서 중간 추론을 자동으로 유지합니다. 대화 기록에 있는 경우 추론 컨텍스트가 전달되어 반복적인 디버깅 및 코드 리팩터링과 같은 복잡한 다단계 작업의 성능이 개선됩니다. API를 변경할 필요는 없습니다.

Gemini 3.x의 매개변수 업데이트 및 권장사항

다음은 Gemini 3.5 Flash를 비롯한 모든 Gemini 3.x 모델에 적용됩니다.

  • temperature, top_p, top_k: 기본값을 변경하지 않는 것이 좋습니다. Gemini 3의 추론 기능은 기본 설정에 최적화되어 있습니다.
  • thinking_budget 대신 thinking_level을 사용하세요.
  • 함수 호출 응답 일치: id, name, 응답 수는 이전 호출과 일치해야 합니다.
  • 멀티모달 함수 응답: 함수 응답 외부에 멀티모달 콘텐츠를 포함하지 말고 함수 응답 내부에 포함하세요.
  • 함수 응답의 인라인 안내: 별도의 부분이 아닌 함수 응답 텍스트에 추가합니다.
  • 불필요한 도구 호출 줄이기: 더 낮은 사고 수준을 사용하거나 시스템 안내를 실험하여 에이전트형 워크플로에서 도구 호출을 줄입니다.

코드를 업데이트하는 방법은 아래 섹션을 참조하세요.

샘플링 매개변수 (더 이상 권장되지 않음)

temperature, top_p, top_k는 더 이상 모든 Gemini 3.x 모델에 권장되지 않습니다. Gemini 3의 추론 기능은 기본 설정에 최적화되어 있습니다. 모든 요청에서 이러한 매개변수를 삭제하세요.

# ⚠️ Remove these parameters (not recommended)
config = types.GenerateContentConfig(
    temperature=0.7,
    top_p=0.9,
    top_k=40
)

결정론을 보장하려면 특정 사용 사례에 대한 명시적 규칙으로 시스템 안내를 정의하는 것이 좋습니다.

thinking_budget (더 이상 권장되지 않음)

원시 숫자 thinking_budget 매개변수는 더 이상 모든 Gemini 3.x 모델에서 권장되지 않습니다. 대신 thinking_level 문자열 enum을 사용하세요.

# ⚠️ Before (not recommended)
config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_budget=7500)
)

# ✅ After
config = types.GenerateContentConfig(
    thinking_config=types.ThinkingConfig(thinking_level="medium")
)

사용 가능한 값: minimal, low, medium (기본값), high

함수 호출: 엄격한 응답 일치

Interactions API는 이미 일치하지 않는 함수 응답에 오류를 발생시킵니다. GenerateContent API는 아직 오류를 발생시키지 않지만 응답이 일치하지 않으면 모델이 대부분의 경우 finish_reason: STOP으로 빈 응답을 반환합니다. 항상 다음 규칙을 따르세요.

요구사항 세부정보
id 포함 모든 FunctionResponse에는 해당 FunctionCallid가 포함되어야 합니다.
name 일치 응답의 name은 호출의 name과 일치해야 합니다.
개수 일치 수신된 각 FunctionCall에 대해 정확히 하나의 FunctionResponse를 반환합니다.

Python

# ✅ Include matching id and name in the function response
final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={"result": result},
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Include matching id and name in the function response
const functionResponsePart = {
  functionResponse: {
    name: toolCall.name,
    response: { result: result },
    id: toolCall.id,
  },
};

const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    { role: "user", parts: [functionResponsePart] },
  ],
  config: config,
});

REST

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-3.5-flash:generateContent" \
  -H "x-goog-api-key: $GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [
      {"role": "user", "parts": [{"text": "..."}]},
      {"role": "model", "parts": [{"functionCall": {"name": "my_function", "args": {...}}}]},
      {"role": "user", "parts": [{"functionResponse": {"name": "my_function", "id": "call_id", "response": {"result": "..."}}}]}
    ]
  }'

멀티모달 함수 응답

클라이언트가 함수 응답 외부에서 이미지를 제공하는 경우가 많습니다. 이로 인해 예기치 않은 모델 동작 (예: 사고 유출)이 발생하고 출력 품질이 저하될 수 있습니다. 대신 멀티모달 함수 응답 API 문서 의 권장사항을 따르고 모델에 전송하는 함수 응답 부분에 멀티모달 콘텐츠를 포함하세요. 모델은 다음 차례에 이 멀티모달 콘텐츠를 처리하여 더 많은 정보를 바탕으로 응답을 생성할 수 있습니다.

Python

# ✅ Include multimodal content in the function response
final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={
                    "result": "instrument.jpg",
                    "image": base64_image_data,
                },
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Include multimodal content in the function response
const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    {
      role: "user",
      parts: [{
        functionResponse: {
          name: toolCall.name,
          id: toolCall.id,
          response: {
            result: "instrument.jpg",
            image: base64ImageData,
          },
        },
      }],
    },
  ],
  config: config,
});

함수 응답의 인라인 안내

클라이언트가 후속 Parts로 함수 응답과 함께 추가 안내를 제공하는 경우가 많습니다. 이로 인해 예기치 않은 모델 동작 (예: 사고 유출)이 발생하고 출력 품질이 저하될 수 있습니다. 대신 추가 안내를 두 개의 줄바꿈으로 구분하여 함수 응답 텍스트의 끝에 추가하세요.

Python

# ✅ Append inline instructions to the end of the function response separated by two newlines
result_text = f"{json.dumps(result)}\n\n<your inline instructions>"

final_response = client.models.generate_content(
    model="gemini-3.5-flash",
    config=config,
    contents=[
        *previous_contents,
        response.candidates[0].content,
        types.Content(role="user", parts=[
            types.Part.from_function_response(
                name=tool_call.name,
                response={"result": result_text},
                id=tool_call.id,
            )
        ]),
    ],
)

JavaScript

// ✅ Append inline instructions to the end of the function response separated by two newlines
const resultText = `${JSON.stringify(result)}\n\n<your inline instructions>`;

const finalResponse = await ai.models.generateContent({
  model: "gemini-3.5-flash",
  contents: [
    ...previousContents,
    { role: "model", parts: [{ functionCall: toolCall }] },
    {
      role: "user",
      parts: [{
        functionResponse: {
          name: toolCall.name,
          id: toolCall.id,
          response: { result: resultText },
        },
      }],
    },
  ],
  config: config,
});

불필요한 도구 호출 줄이기

도구 호출이 과도하게 사용되는 경우 다음 두 가지 기법을 사용하면 도구 호출을 최소화할 수 있습니다.

  1. 사고 수준을 낮추는 것부터 시작 (medium, low, minimal): 사고 수준이 높을수록 모델이 더 많은 도구를 사용하여 탐색하고 확인하므로 수준을 낮추면 도구 호출을 줄일 수 있습니다.

  2. 시스템 안내 추가: 사고 수준을 조정한 후에도 과도한 사용이 계속되면 도구 사용을 제한하는 프롬프트를 고려해 보세요. 예를 들면 다음과 같습니다.

    You have a limited action budget of <n> tool calls. Use them efficiently.
    

마이그레이션 체크리스트

Gemini 3 Flash 프리뷰에서 마이그레이션

  • 모델 이름 업데이트: gemini-3-flash-previewgemini-3.5-flash
  • 가격 책정 검토 Gemini 3.5 Flash는 Gemini 3 Flash 프리뷰보다 비쌉니다. 사용 사례가 비용에 매우 민감한 경우 Gemini 3.1 Flash-Lite 로 마이그레이션하는 것이 좋습니다. 자세한 내용은 가격 책정 페이지를 참조하세요.
  • 구성에서 temperature, top_p, top_k 삭제 (더 이상 권장되지 않음)
  • thinking_budgetthinking_level로 바꿉니다.
  • 모든 FunctionResponse 부분에 id 및 일치하는 name을 추가합니다.
  • 프롬프트를 테스트합니다. 기본 노력이 highmedium으로 변경되었습니다. 품질, 속도, 비용을 확인하세요.
  • 이제 사고 보존이 기본적으로 사용 설정되어 있습니다. 추론 컨텍스트가 턴 간에 전달되어 성능이 개선되지만 토큰 사용량이 증가할 수 있습니다.
  • 불필요한 도구 호출 줄이기: 사고 수준(medium, low, minimal)을 낮추는 것부터 시작합니다. 과도한 사용이 계속되면 도구 사용을 제한하는 시스템 안내를 추가합니다.
  • 컴퓨터 사용이 지원됩니다.

Gemini 2.5에서 마이그레이션

위의 모든 작업과 함께 다음을 수행할 수 있습니다.

  • 프롬프트 간소화 사고의 연쇄 프롬프트 엔지니어링을 사용하여 추론을 강제한 경우 더 간단한 프롬프트로 thinking_level: "medium" 또는 "high"를 사용해 보세요.
  • PDF 및 미디어 워크로드 테스트 밀도 높은 문서 파싱을 위해 특정 동작에 의존하고 있었다면, 정확도를 유지하기 위해 media_resolution_high 설정을 테스트해 보세요. Gemini 3 기본값으로 마이그레이션하면 PDF의 토큰 사용량이 증가할 수 있지만 동영상의 토큰 사용량은 감소할 수 있습니다. 요청이 컨텍스트 윈도우를 초과하는 경우 media_resolution을 명시적으로 줄이세요. 자세한 내용은 미디어 해상도 문서를 참조하세요.
  • 결합된 도구 사용 활용 Google 검색, URL 컨텍스트, 코드 실행, 커스텀 함수를 동일한 요청에서 사용할 수 있습니다.
  • 멀티모달 함수 응답을 사용하는 경우 멀티모달 콘텐츠를 함수 응답 부분 옆이 아닌 내부에 이동합니다.
  • 함수 응답과 함께 인라인 안내를 사용하는 경우 별도의 부분이 아닌 두 개의 줄바꿈으로 구분하여 함수 응답 텍스트에 추가합니다.
  • Gemini 3.x에서는 이미지 분할이 지원되지 않습니다. 분할 워크로드의 경우 사고가 사용 중지된 Gemini 2.5 Flash 또는 Gemini Robotics-ER 1.6을 계속 사용하세요.
  • 구성에서 candidate_count 삭제 (Gemini 3.x에서 지원되지 않음)

Gemini 3 제품군 기능

Gemini 3.5 Flash는 컴퓨터 사용을 비롯한 모든 Gemini 3 제품군 기능을 상속합니다. Gemini 3에서 도입되어 계속되는 기능은 다음과 같습니다.

  • 사고: API 호출 간에 보존되는 암호화된 추론 컨텍스트입니다. Interactions API에서 자동, GenerateContent에서 암시적입니다.
  • 도구를 사용한 구조화된 출력: JSON 모드를 기본 제공 도구 (검색, URL 컨텍스트, 코드 실행, 함수 호출)와 결합합니다.
  • 멀티모달 함수 응답: 함수 호출 결과에서 이미지, 오디오, 기타 미디어를 반환합니다.
  • 이미지를 사용한 코드 실행: 이미지를 처리하고 생성하는 코드를 실행합니다.
  • 결합된 도구 사용: 동일한 요청에서 기본 제공 도구와 커스텀 함수 호출을 사용합니다.
  • 미디어 해상도: 이미지, 동영상, PDF 입력의 토큰 할당을 세부적으로 제어합니다. Gemini 3 모델은 혼합 충실도 프롬프트에 대해 콘텐츠 항목별 해상도 설정 (low, medium, high, ultra_high)을 지원합니다.
  • 사고 서명: 모델의 내부 추론을 암호화하여 표현합니다. 멀티턴 함수 호출에 필요하며 공식 SDK에서 자동으로 관리합니다.

프롬프트 권장사항

Gemini 3.x 모델은 추론 모델이므로 프롬프트 작성 방식에도 변화가 필요합니다.

  • 정확한 지시: 간결하게 작성하세요. Gemini 3.x는 직접적이고 명확한 지시에 가장 잘 반응합니다. 이전 모델에서 사용되던 장황하거나 복잡한 프롬프트 엔지니어링 기법은 모델이 과분석을 유발할 수 있습니다.
  • 출력 장황도: 기본적으로 Gemini 3.x는 덜 장황하며, 직접적이고 효율적인 답변을 제공하는 것을 선호합니다. 사용 사례에 대화형 톤이 필요한 경우 프롬프트에서 명시적으로 모델을 유도하세요 (예: '친근하고 말이 많은 조수처럼 설명해 주세요').
  • 컨텍스트 관리: 전체 책, 코드베이스, 긴 동영상과 같은 대규모 데이터 세트로 작업할 때는 데이터 컨텍스트 뒤에 프롬프트 끝에 특정 안내 또는 질문을 배치하세요. '이전 정보를 바탕으로...'와 같은 문구로 질문을 시작하여 모델의 추론을 고정합니다.

프롬프트 설계 전략에 관한 자세한 내용은 프롬프트 엔지니어링 가이드를 참조하세요.

제한사항

  • Gemini 3.x에서는 이미지 분할이 지원되지 않습니다. 분할 워크로드의 경우 사고가 사용 중지된 Gemini 2.5 Flash 또는 Gemini Robotics-ER 1.6을 계속 사용하세요.

FAQ

  1. Gemini 3.5 Flash의 지식 단절 시점은 언제인가요? Gemini 3.5 Flash의 지식 단절 시점은 2025년 1월입니다. 최신 정보는 검색 그라운딩 도구를 사용하세요.

  2. 컨텍스트 윈도우 한도는 어떻게 되나요? Gemini 3.5 Flash는 최대 100만 토큰의 입력 컨텍스트 윈도우와 최대 65,000개의 출력 토큰을 지원합니다.

  3. 이전 thinking_budget 코드가 계속 작동하나요? 예, thinking_budget은 이전 버전과의 호환성을 위해 계속 지원되지만 더 예측 가능한 성능을 위해 thinking_level로 마이그레이션하는 것이 좋습니다. 동일한 요청에서 두 가지를 모두 사용하지는 마세요.

  4. Gemini 3.5 Flash는 Batch API를 지원하나요? 예. 자세한 내용은 Batch API 가이드를 참조하세요.

  5. 컨텍스트 캐싱이 지원되나요? 예, 컨텍스트 캐싱이 지원됩니다.

  6. 지원되는 도구는 무엇인가요? Gemini 3.5 Flash는 Google 검색, Google 지도 그라운딩, 파일 검색, 코드 실행, URL 컨텍스트, 결합된 도구 사용, 컴퓨터 사용을 비롯한 표준 함수 호출을 지원합니다.

다음 단계