Gemini CLI 설정
Gemini CLI는 Google의 AI 코딩 어시스턴트이며 큰 컨텍스트가 필요한 코드 작업에 유용합니다.
먼저 환경 설정 장을 완료하고 Node.js와 npm이 설치되어 있는지 확인하세요.
Linux / macOS
1단계: Gemini CLI 설치
npm i -g @google/gemini-cli
2단계: 환경 변수 설정
~/.bashrc 또는 ~/.zshrc에 추가합니다:
# API base URL: domain only, do not append /v1beta
export GOOGLE_GEMINI_BASE_URL="https://api.icodeeasy.cc"
# Use your I Code Easy API Key
export GEMINI_API_KEY="your API Key"
# Recommended fast model. You can also use stronger models such as gemini-3.1-pro-preview
export GEMINI_MODEL="gemini-3.7-flash"
# Explicitly use Gemini API v1beta
export GOOGLE_GENAI_API_VERSION="v1beta"
파일을 저장한 뒤 source ~/.bashrc 또는 source ~/.zshrc를 실행합니다.
Note: Do not set
GOOGLE_GEMINI_BASE_URLtohttps://api.icodeeasy.cc/v1beta, or Gemini CLI will build paths like/v1beta/v1beta/models/.... 현재 네트워크에서api.icodeeasy.cc가 느리면GOOGLE_GEMINI_BASE_URL을https://jp.icodeeasy.cc또는https://sg.icodeeasy.cc로 변경하세요. 이때도/v1beta는 붙이지 않습니다.
3단계: Gemini 시작
cd your-project-folder
gemini
Windows
1단계: Gemini CLI 설치
npm i -g @google/gemini-cli
2단계: 환경 변수 설정 in PowerShell
# API base URL: domain only, do not append /v1beta
[Environment]::SetEnvironmentVariable("GOOGLE_GEMINI_BASE_URL", "https://api.icodeeasy.cc", "User")
# Use your I Code Easy API Key
[Environment]::SetEnvironmentVariable("GEMINI_API_KEY", "your API Key", "User")
# Recommended fast model. You can also use stronger models such as gemini-3.1-pro-preview
[Environment]::SetEnvironmentVariable("GEMINI_MODEL", "gemini-3.7-flash", "User")
# Explicitly use Gemini API v1beta
[Environment]::SetEnvironmentVariable("GOOGLE_GENAI_API_VERSION", "v1beta", "User")
환경 변수를 설정한 뒤 새 PowerShell 창을 여세요.
현재 네트워크에서 api.icodeeasy.cc가 느리면 GOOGLE_GEMINI_BASE_URL을 https://jp.icodeeasy.cc 또는 https://sg.icodeeasy.cc로 변경하세요. 이때도 /v1beta는 붙이지 않습니다.
3단계: Gemini 시작
새 PowerShell 창을 열고 프로젝트 디렉터리로 이동한 뒤 시작합니다:
cd your-project-folder
gemini
모델 선택
자주 쓰는 모델:
| 용도 | 모델 |
|---|---|
| 새로운 빠른 모델 | gemini-3.7-flash |
| 이전 세대 빠른 모델 | gemini-3.6-flash |
| 빠른 응답 | gemini-3-flash-preview |
| 저비용 고속 | gemini-2.5-flash |
| 더 강한 추론 | gemini-3.1-pro-preview |
| 안정版 2.5 Pro | gemini-2.5-pro |
Gemini CLI의 내장 flash 옵션은 이전 gemini-3-flash-preview로 해석될 수 있습니다. 클라이언트나 플러그인이 gemini-3-flash를 보내면 이 서비스가 자동으로 gemini-3-flash-preview로 매핑합니다. 텍스트 모델 gemini-2.5-flash도 계속 사용할 수 있으며, 2026-08-03부터는 이름 그대로 직접 제공되고(gemini-3.6-flash로의 투명 업그레이드는 폐지) 2.5 Flash 가격으로 과금됩니다.
Raw API 테스트 예시
CLI 없이 네이티브 Gemini API를 직접 테스트하려면:
curl "https://api.icodeeasy.cc/v1beta/models/gemini-3.7-flash:streamGenerateContent?alt=sse" \
-H "x-goog-api-key: your API Key" \
-H "Content-Type: application/json" \
-d '{
"contents": [
{
"role": "user",
"parts": [{"text": "Hello, briefly introduce yourself"}]
}
]
}'
비스트리밍 엔드포인트 경로:
/v1beta/models/{model}:generateContent
스트리밍 엔드포인트 경로:
/v1beta/models/{model}:streamGenerateContent?alt=sse
동영상 분석 데모
Gemini 모델은 동영상 이해 입력을 지원합니다. 동영상을 inlineData(base64)로 요청과 함께 보낼 수 있으며, 모델이 동영상을 보고 요청한 형식으로 분석 결과를 반환합니다. 동영상을 지원하는 주요 모델: gemini-3.7-flash, gemini-3.6-flash.
다음은 완전히 실행 가능한 데모입니다: 로컬 MP4 읽기 → 요청 조립 → 비스트리밍 호출 → JSON 결과 추출 및 검증.
# 0) 먼저 I Code Easy API Key를 설정합니다
export ICODEEASY_API_KEY="your API Key"
# 1) 로컬 동영상을 base64로 변환 (macOS: base64 -i demo.mp4 | tr -d '\n' > demo.b64)
base64 -w0 demo.mp4 > demo.b64
# 2) jq로 요청을 조립해 긴 JSON을 직접 쓰지 않습니다
jq -n --rawfile data demo.b64 '{
contents: [
{
role: "user",
parts: [
{text: "이 동영상을 보고 내용 요약, 장면별 설명, 키워드를 스키마를 엄격히 따르는 JSON으로 반환해 주세요."},
{inlineData: {mimeType: "video/mp4", data: $data}}
]
}
],
generationConfig: {
temperature: 0.1,
responseMimeType: "application/json",
responseJsonSchema: {
type: "object",
properties: {
summary: {type: "string"},
scenes: {type: "array", items: {type: "string"}},
keywords: {type: "array", items: {type: "string"}}
},
required: ["summary", "scenes", "keywords"],
additionalProperties: false
}
}
}' > video-request.json
# 3) 비스트리밍 호출
curl --silent --show-error \
"https://api.icodeeasy.cc/v1beta/models/gemini-3.7-flash:generateContent" \
-H "x-goog-api-key: ${ICODEEASY_API_KEY}" \
-H "Content-Type: application/json" \
--data-binary @video-request.json \
--output video-response.json
# 4) 종료 상태를 확인하고 비즈니스 JSON을 추출합니다
jq -e '.candidates[0].finishReason == "STOP"' video-response.json > /dev/null
jq -r '[.candidates[0].content.parts[]? | select(.thought != true) | (.text // "")] | join("")' \
video-response.json > video-result.json
jq -e . video-result.json
동영상이 인식되었는지 확인할 수 있습니다(promptTokensDetails에 VIDEO 모달리티 토큰 수가 표시됩니다):
jq '.usageMetadata' video-response.json
주의 사항:
- 동영상은 텍스트와 같은 가격으로 입력 토큰으로 과금됩니다.
usageMetadata의VIDEO모달리티 토큰 수가 과금 기준입니다. - base64는 원본보다 약 1/3 더 커집니다. 클립 하나는 약 10~15MB 이내로 유지하고, 더 긴 동영상은 여러 구간으로 나누어 보내세요.
fileData의fileUri로 외부 URL을 전달하는 것은 지원되지 않습니다. 모델 서비스가 외부 링크를 가져오지 않습니다. 동영상은 반드시 로컬에 다운로드한 후 위 데모처럼inlineData로 보내세요.- 동영상 요청 시간은 길이에 따라 늘어나므로 클라이언트 타임아웃을 넉넉히 늘리세요(5분 이상 권장). 사용량이 많은 시간대에는 가끔 503 / "일시적으로 사용할 수 없음"이 발생할 수 있으니 수십 초 간격으로 재시도하세요.
- 이 엔드포인트는 동영상 이해/분석용이며 동영상 생성은 포함하지 않습니다.
FAQ
| 증상 | 원인 | 해결 |
|---|---|---|
요청 경로에 /v1beta/v1beta/models/...가 포함됨 | GOOGLE_GEMINI_BASE_URL에 /v1beta가 포함됨 | https://api.icodeeasy.cc 사용 |
api.icodeeasy.cc가 느림 | 기본 도메인으로 가는 현재 네트워크 경로가 좋지 않음 | /v1beta 없이 https://jp.icodeeasy.cc 또는 https://sg.icodeeasy.cc 사용 |
model_not_found: gemini-3-flash | 사용 가능한 모델 ID가 preview 이름을 사용함 | gemini-3-flash-preview 사용. 이 서비스도 자동 매핑합니다 |
| 401 / 인증 누락 | I Code Easy API Key가 설정되지 않음 | GEMINI_API_KEY="your API Key" 설정 |
/v1/responses 경유 Gemini 실패 | Gemini CLI는 OpenAI Responses API가 아니라 Gemini 네이티브 API를 사용함 | /v1beta/models/{model}:generateContent를 사용하거나 Gemini CLI가 자동으로 요청을 보내게 둡니다 |