무료 AI 코딩
코드 질문·자동 완성·에이전트 중 필요한 기능을 고르고 각각의 무료 한도를 확인하세요.
무료로 시작하기 전에 확인할 것
- 채팅 답변과 IDE 자동 완성, 여러 파일을 수정하는 에이전트는 서로 다른 기능입니다.
- 무료 요청 수와 지원 IDE·모델, 프로젝트 접근 범위를 확인하세요.
- 실행 환경을 고정하고 실패 재현 입력·테스트로 결과를 검증하세요.
무료 AI 코딩 도구 16개 비교
무료 플랜을 먼저, 같은 유형에서는 가나다순으로 표시합니다. 무료 기능과 한도를 비교한 목록이며 성능 순위가 아닙니다.
| 도구 | 무료 유형 | 무료 기능·한도·제약 | 출처·무료 요금 확인일 |
|---|---|---|---|
| 구글 AI 스튜디오 | 무료 플랜 | 무료 등급에서 Gemini 2.5 Pro·Flash 계열 사용 가능. 최신 Pro 프리뷰·이미지·영상 모델은 무료 등급 없음. 무료 등급 입력·출력은 구글 제품 개선에 쓰일 수 있습니다 | 공식 요금표2026.09.25 |
| 그록 | 무료 플랜 | 웹·앱에서 무료로 쓸 수 있고 채팅과 음성에 각각 일일 한도가 있습니다 | 공식 요금표2026.09.25 |
| 깃허브 코파일럿 | 무료 플랜 | Copilot Free는 월 2,000회 코드 완성과 50회 채팅 요청(Copilot Edits 포함)으로 제한 | 공식 요금표2026.09.26 |
| 딥시크 | 무료 플랜 | 웹·앱 채팅은 무료이며 광고와 인앱 결제가 없습니다 | 공식 요금표2026.09.25 |
| 러버블 | 무료 플랜 | 하루 5크레딧, 월 30크레딧 | 공식 요금표2026.09.26 |
| 리플릿 | 무료 플랜 | 무료 Starter: 게시 앱 1개, Lite build만, Agent 일일 크레딧 소량 | 공식 요금표2026.09.28 |
| 볼트 | 무료 플랜 | 하루 30만 토큰, 월 100만 토큰 | 공식 요금표2026.09.26 |
| 브이제로 | 무료 플랜 | 월 $5 크레딧, 하루 7메시지 | 공식 요금표2026.09.26 |
| 윈드서프(데빈 데스크톱) | 무료 플랜 | 에이전트 소량 한도, 인라인 편집 무제한 | 공식 요금표2026.09.28 |
| 제미나이 | 무료 플랜 | 무료 요금제가 있으며 사용량 한도는 5시간마다 갱신되고 주간 한도가 있습니다. 나노바나나 Pro는 제한적으로 쓸 수 있습니다 | 공식 요금표2026.09.25 |
| 챗GPT | 무료 플랜 | GPT-5.6 Luna 텍스트 대화 무제한(악용 방지 제한), GPT-6 Astra·Sol·Luna 는 제한적. 이미지·음성·심층 리서치·메모리·Codex 제한적 | 공식 요금표2026.09.26 |
| 커서 | 무료 플랜 | Hobby 플랜은 신용카드 없이 사용 가능, Agent·Chat·Tab 완성이 제한된 사용량으로 제공 | 공식 요금표2026.09.25 |
| 코덱스 | 무료 플랜 | ChatGPT Free 플랜에서 제한적 사용 | 공식 요금표2026.09.26 |
| 클로드 | 무료 플랜 | 무료 플랜 제공(웹·데스크톱·모바일, 웹 검색, 파일 생성, 코드 실행 포함). 사용량은 Pro보다 적음 | 공식 요금표2026.09.25 |
| 퍼플렉시티 | 무료 플랜 | 무료 계정으로 기본 검색을 쓸 수 있고, Pro 검색은 하루 횟수 제한이 있습니다 | 공식 요금표2026.09.26 |
| 업스테이지 솔라 | 가입·일회성 크레딧 | 가입 시 $10 크레딧 | 공식 요금표2026.09.26 |
무료로 시작하는 순서
- 언어·버전·오류 메시지와 최소 재현 코드를 준비합니다.
- 기대 동작과 변경 범위를 지정해 수정안과 테스트를 요청합니다.
- 변경 내용을 검토하고 정상·경계·오류 입력을 실행해 확인합니다.
따라 쓸 프롬프트
대괄호 부분을 자신의 자료와 조건으로 바꿔 사용하세요.
환경은 [언어·버전]입니다. 아래 코드의 [문제]를 수정해 주세요. 기대 동작은 [동작]이며 변경 범위는 [범위]입니다. 원인을 설명하고 정상 입력·경계값·오류 입력 테스트를 제시하세요. 실행했다고 가정하지 말고 직접 확인해야 할 부분을 표시하세요. [최소 재현 코드]
같은 입력으로 나온 실제 답변
아래는 2026.10.06에 API 모델로 실행한 기존 실측 답변입니다. 무료 앱으로 실행한 결과나 무료 플랜 성능 순위가 아닙니다.
비교에 사용한 입력 원문
파이썬 스크립트를 하나 작성해 주세요. 표준 라이브러리만 사용합니다(re, csv, json, argparse, collections 등은 표준 라이브러리입니다). 입력: 웹 서버 접속 로그 파일. 한 줄 형식은 다음과 같습니다. 2026-09-20T13:05:41+09:00 203.0.113.7 GET /api/items 200 123 (공백으로 구분: 시각(ISO 8601), IP, 메서드, 경로, 상태코드, 응답시간ms) 요구사항: 1. 시간대(0~23시)별 요청 수를 00시부터 23시까지 24개 모두 출력(요청이 없는 시간은 0) 2. 요청 수 상위 5개 IP를 요청 수 내림차순으로, 같은 수면 IP 문자열 오름차순으로 3. 상태코드 500 이상인 요청의 비율(%)을 소수점 첫째 자리까지 4. 열 개수가 6개가 아니거나 상태코드·응답시간이 정수가 아닌 줄은 건너뛰고, 건너뛴 줄 수를 기록 5. 결과는 JSON 하나로 표준 출력에 출력. 키는 정확히 hourly, top_ips, error_rate, skipped 네 개. hourly 는 "00"~"23" 키의 객체, top_ips 는 [ip, count] 배열의 배열 조건: - 파일 경로는 argparse 로 받고 기본값은 access.log. 인코딩은 UTF-8 - 함수를 3개 이상으로 나누고 각 함수에 타입 힌트를 붙이세요 - 코드 블록 하나로, 주석은 한국어 - JSON 출력은 ensure_ascii=False, indent 2. print 는 마지막 JSON 한 번만 - 코드 아래에 실행 방법을 존댓말 두 문장 이내로 - 요구사항 외 기능(그래프, 파일 저장, 로깅 설정, 진행 표시) 추가 금지
그록
실제 답변 전체 보기
#!/usr/bin/env python3
import argparse
import json
from collections import Counter
from datetime import datetime
from typing import Dict, List, Optional, Tuple
def 줄_파싱(줄: str) -> Optional[Tuple[int, str, int]]:
# 열 6개가 아니면 건너뜀
칸 = 줄.split()
if len(칸) != 6:
return None
시각, ip, _메서드, _경로, 상태_문자, 응답_문자 = 칸
try:
시 = datetime.fromisoformat(시각).hour
상태 = int(상태_문자)
int(응답_문자)
except ValueError:
return None
if not 0 <= 시 <= 23:
return None
return 시, ip, 상태
def 로그_집계(경로: str) -> Tuple[Counter, Counter, int, int]:
# 유효 줄만 시간대·IP·오류 건수로 모음
시간대: Counter = Counter()
ip별: Counter = Counter()
오류 = 0
건너뜀 = 0
with open(경로, encoding="utf-8") as 파일:
for 줄 in 파일:
줄 = 줄.strip()
if not 줄:
건너뜀 += 1
continue
결과 = 줄_파싱(줄)
if 결과 is None:
건너뜀 += 1
continue
시, ip, 상태 = 결과
시간대[시] += 1
ip별[ip] += 1
if 상태 >= 500:
오류 += 1
return 시간대, ip별, 오류, 건너뜀
def 상위_ip(ip별: Counter, 개수: int = 5) -> List[List[object]]:
# 요청 수 내림차순, 동률이면 IP 오름차순
정렬 = sorted(ip별.items(), key=lambda 항목: (-항목[1], 항목[0]))
return [[ip, 건수] for ip, 건수 in 정렬[:개수]]
def 보고서_작성(
시간대: Counter, ip별: Counter, 오류: int, 건너뜀: int
) -> Dict[str, object]:
전체 = sum(시간대.values())
비율 = round((오류 / 전체) * 100, 1) if 전체 else 0.0
return {
"hourly": {f"{시:02d}": 시간대[시] for 시 in range(24)},
"top_ips": 상위_ip(ip별),
"error_rate": 비율,
"skipped": 건너뜀,
}
def main() -> None:
파서 = argparse.ArgumentParser()
파서.add_argument("logfile", nargs="?", default="access.log")
인자 = 파서.parse_args()
시간대, ip별, 오류, 건너뜀 = 로그_집계(인자.logfile)
결과 = 보고서_작성(시간대, ip별, 오류, 건너뜀)
print(json.dumps(결과, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
같은 폴더에서 python 스크립트이름.py로 실행하시면 기본 파일 access.log를 읽습니다. 다른 파일은 python 스크립트이름.py 로그경로처럼 인자로 지정해 주십시오.
딥시크
실제 답변 전체 보기
import argparse
import json
from collections import Counter
from datetime import datetime
from typing import Dict, List, Optional, Tuple, Union
def parse_args() -> argparse.Namespace:
"""명령줄 인자를 파싱합니다."""
parser = argparse.ArgumentParser(description="웹 서버 접속 로그를 집계합니다.")
parser.add_argument(
"path",
nargs="?",
default="access.log",
help="로그 파일 경로 (기본값: access.log)",
)
return parser.parse_args()
def parse_line(line: str) -> Optional[Tuple[int, str, int, int]]:
"""한 줄을 파싱합니다. 형식이 맞지 않으면 None을 반환합니다."""
fields = line.split()
# 열 개수가 정확히 6개인지 확인
if len(fields) != 6:
return None
# 상태코드와 응답시간이 정수인지 확인
try:
status = int(fields[4])
response_ms = int(fields[5])
except ValueError:
return None
# ISO 8601 시각에서 시간대(0~23) 추출
hour = datetime.fromisoformat(fields[0]).hour
return hour, fields[1], status, response_ms
def process_file(path: str) -> Tuple[Dict[str, int], Counter, int, int, int]:
"""로그 파일을 읽어 시간대별 요청 수, IP별 요청 수, 오류 수, 전체 수, 건너뛴 수를 계산합니다."""
hourly: Dict[str, int] = {f"{hour:02d}": 0 for hour in range(24)}
ip_counter: Counter = Counter()
total = 0
error_count = 0
skipped = 0
with open(path, "r", encoding="utf-8") as file:
for line in file:
parsed = parse_line(line)
if parsed is None:
skipped += 1
continue
hour, ip, status, _ = parsed
hourly[f"{hour:02d}"] += 1
ip_counter[ip] += 1
total += 1
if status >= 500:
error_count += 1
return hourly, ip_counter, error_count, total, skipped
def build_result(
hourly: Dict[str, int],
ip_counter: Counter,
error_count: int,
total: int,
skipped: int,
) -> Dict[str, object]:
"""최종 JSON 결과를 만듭니다."""
top_ips: List[List[Union[str, int]]] = [
[ip, count]
for ip, count in sorted(
ip_counter.items(),
key=lambda item: (-item[1], item[0]),
)[:5]
]
error_rate = round((error_count / total * 100), 1) if total else 0.0
return {
"hourly": hourly,
"top_ips": top_ips,
"error_rate": error_rate,
"skipped": skipped,
}
def main() -> None:
"""프로그램 진입점입니다."""
args = parse_args()
hourly, ip_counter, error_count, total, skipped = process_file(args.path)
result = build_result(hourly, ip_counter, error_count, total, skipped)
print(json.dumps(result, ensure_ascii=False, indent=2))
if __name__ == "__main__":
main()
다음과 같이 실행하시면 됩니다: python script.py access.log
경로를 생략하시면 기본값인 access.log를 사용합니다.
기준과 출처
- 무료 기능·한도는 저장된 공식 안내를 사용합니다. 무료 요금 확인일은 무료 요금 행에서만 표시합니다.
- 무료 플랜·체험·가입 크레딧은 별도로 구분하며, API 예시만으로 무료 앱의 성능을 판단하지 않습니다.
- 실측 입력과 답변은 기존 API 측정 데이터 원문을 연결합니다.