Claude Opus 4.8이 $5/$25(입력/출력 백만 토큰)인 시장에 출력 $1.20짜리 모델이 SWE-bench Pro에서 GPT-5.5를 앞서는 벤치마크를 들고 나타났습니다. 6월 1일 출시된 MiniMax M3입니다. 한국어를 포함한 다국어를 지원하고, 텍스트·이미지·영상을 1M 토큰 컨텍스트 안에서 처리합니다. OpenAI 호환 API라 기존 코드 변경이 거의 없습니다.
M3가 뭔지 — 아키텍처부터
M3의 핵심 기술적 변화는 MiniMax Sparse Attention(MSA)입니다. 이전 M2 시리즈는 표준 풀 어텐션을 썼는데, M3에서는 GQA(Grouped-Query Attention) 백본 위에 MSA를 올린 구조입니다. 블록 레벨에서 실제 비압축 키-값을 선택하는 방식으로, 1M 토큰 컨텍스트에서 토큰당 연산량이 이전 세대 M2 대비 약 1/20 수준입니다.
M3는 텍스트, 이미지, 영상 입력을 처음부터 혼합 모달리티 데이터로 학습한 네이티브 멀티모달 모델입니다. 비전을 나중에 붙인 게 아닙니다.
컨텍스트 윈도우 최대 1,048,576 토큰(1M), 최대 출력 512,000 토큰입니다. 대형 코드베이스 전체를 컨텍스트에 올려놓고 작업하거나, 긴 영상 파일을 통째로 분석하는 워크플로우가 가능해집니다.
MiniMax는 한국어·일본어·중국어·영어·프랑스어·독일어·스페인어를 공식 지원합니다. 북미·유럽·아시아태평양 데이터센터를 운영하고 있어서 지역별 레이턴시도 관리됩니다.
벤치마크 — 어디서 이기나
MiniMax 발표 기준 주요 벤치마크는 SWE-Bench Pro 59.0%, Terminal Bench 2.1 66.0%, BrowseComp 83.5%, MCP Atlas 74.2%입니다. SWE-Bench Pro에서 GPT-5.5와 Gemini 3.1 Pro를 앞서고 Claude Opus 4.7에 근접하며, BrowseComp에서는 Opus 4.7(79.3%)을 앞섭니다.
단, 이 수치들은 MiniMax 자체 인프라에서 Claude Code, Mini-SWE-Agent, Terminus 같은 에이전트 스캐폴딩을 써서 측정한 결과입니다. 독립 리더보드에서 재현된 수치가 아직 없으니 참고 수준으로 봐야 합니다.
API 키 발급 — 2가지 경로
경로 1 — MiniMax 직접 (정식 가격)
platform.minimax.io 가입 후 API 키 발급. 정식 가격은 입력 $0.60/백만 토큰, 출력 $2.40/백만 토큰입니다.
경로 2 — OpenRouter (런치 프로모 가격)
OpenRouter에서 런치 프로모 50% 할인으로 입력 $0.30/백만 토큰, 출력 $1.20/백만 토큰입니다. 기존 OpenRouter 계정이 있으면 별도 가입 없이 바로 접근 가능합니다. 모델 ID: minimax/minimax-m3
바로 쓰기 — 텍스트 기본 호출
MiniMax API는 Anthropic SDK(권장)와 OpenAI SDK 양쪽 모두 지원합니다.
OpenAI SDK로 연동 (가장 간단):
from openai import OpenAI
# MiniMax 직접 사용
client = OpenAI(
api_key="YOUR_MINIMAX_API_KEY",
base_url="https://api.minimax.io/v1"
)
# 또는 OpenRouter 경유 (프로모 가격)
# client = OpenAI(
# api_key="YOUR_OPENROUTER_KEY",
# base_url="https://openrouter.ai/api/v1"
# )
response = client.chat.completions.create(
model="MiniMax-M3", # MiniMax 직접
# model="minimax/minimax-m3", # OpenRouter 경유 시
messages=[
{
"role": "system",
"content": "당신은 한국어를 유창하게 구사하는 시니어 소프트웨어 엔지니어입니다."
},
{
"role": "user",
"content": "파이썬으로 비동기 HTTP 클라이언트를 만들어줘. "
"재시도 로직과 타임아웃 처리를 포함해서."
}
],
max_tokens=4096,
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
Anthropic SDK로 연동 (MiniMax 공식 권장):
import anthropic
client = anthropic.Anthropic(
api_key="YOUR_MINIMAX_API_KEY",
base_url="https://api.minimax.io"
)
message = client.messages.create(
model="MiniMax-M3",
max_tokens=4096,
system="당신은 한국어를 유창하게 구사하는 AI 어시스턴트입니다.",
messages=[
{
"role": "user",
"content": "이 Python 코드의 버그를 찾아주고 수정해줘."
}
]
)
print(message.content[0].text)
이미지 입력 — 문서·스크린샷 분석
from openai import OpenAI
import base64
client = OpenAI(
api_key="YOUR_MINIMAX_API_KEY",
base_url="https://api.minimax.io/v1"
)
# 이미지 base64 인코딩
with open("ui_screenshot.png", "rb") as f:
image_b64 = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="MiniMax-M3",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": f"data:image/png;base64,{image_b64}"
}
},
{
"type": "text",
"text": "이 UI 스크린샷을 보고 React 컴포넌트 코드를 작성해줘. "
"Tailwind CSS를 사용하고, 한국어 주석을 달아줘."
}
]
}
],
max_tokens=8192
)
print(response.choices[0].message.content)
영상 입력 — 1M 컨텍스트 활용
M3의 가장 강력한 기능 중 하나입니다. 긴 영상을 통째로 넣고 분석할 수 있습니다.
from openai import OpenAI
import base64
client = OpenAI(
api_key="YOUR_MINIMAX_API_KEY",
base_url="https://api.minimax.io/v1"
)
# 영상 파일 base64 인코딩 (최대 약 2분 권장)
with open("product_demo.mp4", "rb") as f:
video_b64 = base64.b64encode(f.read()).decode()
response = client.chat.completions.create(
model="MiniMax-M3",
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": f"data:video/mp4;base64,{video_b64}"
}
},
{
"type": "text",
"text": "이 제품 데모 영상에서 소개된 기능들을 한국어로 요약하고, "
"UX 개선 포인트를 3가지 제안해줘."
}
]
}
],
max_tokens=4096
)
print(response.choices[0].message.content)
툴 콜링 — 에이전트 연동
from openai import OpenAI
import json
client = OpenAI(
api_key="YOUR_MINIMAX_API_KEY",
base_url="https://api.minimax.io/v1"
)
# 툴 정의
tools = [
{
"type": "function",
"function": {
"name": "search_codebase",
"description": "코드베이스에서 특정 패턴이나 함수를 검색합니다",
"parameters": {
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "검색할 코드 패턴 또는 함수명"
},
"file_extension": {
"type": "string",
"description": "검색 대상 파일 확장자 (예: .py, .ts)"
}
},
"required": ["query"]
}
}
},
{
"type": "function",
"function": {
"name": "run_tests",
"description": "지정된 테스트 파일을 실행합니다",
"parameters": {
"type": "object",
"properties": {
"test_path": {
"type": "string",
"description": "실행할 테스트 파일 경로"
}
},
"required": ["test_path"]
}
}
}
]
messages = [
{
"role": "user",
"content": "인증 관련 버그가 있는 것 같아. 코드베이스에서 auth 관련 함수를 "
"찾아서 분석하고 테스트를 실행해줘."
}
]
# 툴 콜링 루프
while True:
response = client.chat.completions.create(
model="MiniMax-M3",
messages=messages,
tools=tools,
tool_choice="auto",
max_tokens=4096
)
choice = response.choices[0]
if choice.finish_reason == "tool_calls":
# 툴 콜 처리
messages.append(choice.message)
for tool_call in choice.message.tool_calls:
func_name = tool_call.function.name
args = json.loads(tool_call.function.arguments)
# 실제 함수 실행 (여기서는 시뮬레이션)
if func_name == "search_codebase":
result = f"auth.py에서 {args['query']} 관련 함수 3개 발견: authenticate(), verify_token(), refresh_session()"
elif func_name == "run_tests":
result = "테스트 결과: 12개 통과, 2개 실패 - test_token_expiry, test_refresh_flow"
else:
result = "함수 실행 완료"
messages.append({
"role": "tool",
"tool_call_id": tool_call.id,
"content": result
})
else:
# 최종 응답
print(response.choices[0].message.content)
break
1M 토큰 컨텍스트 — 대형 코드베이스 전체 분석
M3의 가장 실용적인 활용처 중 하나입니다. 대형 프로젝트를 통째로 컨텍스트에 넣고 질문할 수 있습니다.
from openai import OpenAI
import os
client = OpenAI(
api_key="YOUR_MINIMAX_API_KEY",
base_url="https://api.minimax.io/v1"
)
def load_codebase(directory: str, extensions: list[str]) -> str:
"""디렉토리의 코드 파일을 전부 읽어서 하나의 문자열로 합치기"""
code_content = []
for root, dirs, files in os.walk(directory):
# node_modules, .git 등 제외
dirs[:] = [d for d in dirs if d not in
['node_modules', '.git', '__pycache__', 'dist', 'build']]
for file in files:
if any(file.endswith(ext) for ext in extensions):
filepath = os.path.join(root, file)
try:
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
code_content.append(f"\n\n### {filepath}\n```\n{content}\n```")
except Exception:
pass
return "\n".join(code_content)
# 코드베이스 로드 (Python 프로젝트 예시)
codebase = load_codebase("./my_project", [".py", ".json", ".yaml"])
response = client.chat.completions.create(
model="MiniMax-M3",
messages=[
{
"role": "system",
"content": "당신은 코드베이스 전체를 분석하는 시니어 아키텍트입니다."
},
{
"role": "user",
"content": f"""다음은 프로젝트 전체 코드베이스입니다:
{codebase}
위 코드베이스를 분석해서 다음을 한국어로 답해줘:
1. 전체 아키텍처 구조 설명
2. 잠재적 보안 취약점
3. 성능 병목 예상 지점
4. 리팩토링 우선순위 TOP 5"""
}
],
max_tokens=8192
)
print(response.choices[0].message.content)
가격 계산 — 실전 비용 비교
모델 입력 출력 1M 토큰 컨텍스트 처리 비용
| MiniMax M3 (프로모) | $0.30 | $1.20 | ~$0.30 |
| MiniMax M3 (정식) | $0.60 | $2.40 | ~$0.60 |
| Claude Opus 4.8 | $5.00 | $25.00 | ~$5.00 |
| GPT-5.5 | $5.00 | $30.00 | ~$5.00 |
| Gemini 3.1 Pro | $1.25 | $5.00 | ~$1.25 |
512K 초과 토큰부터는 2배 장문 컨텍스트 요금이 적용됩니다. 1M 토큰 꽉 채워 쓰면 위 표보다 비용이 늘어납니다. 실제 워크플로우 기준으로 테스트해보는 게 중요합니다.
주의사항 — 실전 배포 전 확인
표준 티어 기준 분당 60 요청 제한이 있습니다. 더 높은 한도가 필요하면 별도 신청이 필요합니다.
API 키를 클라이언트(브라우저, 모바일 앱)에 직접 노출하지 마세요. 반드시 백엔드에서 호출하고, 환경변수로 키를 관리하세요. 에이전트 루프에서는 재시도 로직, 레이트 리밋 핸들링, 사용량 모니터링을 필수로 구현하세요.
✅ 결론
- MiniMax M3는 오픈소스 모델 최초로 프론티어급 코딩 + 1M 컨텍스트 + 네이티브 멀티모달을 동시에 제공합니다
- 한국어 공식 지원, OpenAI 호환 API라 기존 스택에 base URL 교체만으로 연동됩니다
- 출력 $1.20/백만 토큰(프로모) — Claude 대비 20배 저렴합니다
- 벤치마크는 MiniMax 자체 측정치 — 독립 검증 전까지 프로덕션 전환은 신중하게
❌ 주의
- 512K 초과 시 2배 요금 — 1M 컨텍스트 꽉 채우면 비용이 달라집니다
- 분당 60 요청 기본 한도 — 고볼륨 워크플로우는 사전 한도 조정 필요
- 오픈소스라고 했지만 HuggingFace 가중치 배포 상태를 직접 확인 필요 — MIT 라이선스 최종 확인 후 프로덕션 적용하세요
'LLM' 카테고리의 다른 글
| Windows AI 로컬 에이전트 Aion 1.0 — OS에 내장된 14B 추론 모델이 뭘 바꾸나 (0) | 2026.06.15 |
|---|---|
| MiniMax M2.5 vs M3 비교 — 무엇이 달라졌고 언제 업그레이드해야 하나 (0) | 2026.06.15 |
| Microsoft Phi-4-reasoning-vision-15B 실전 가이드 — "언제 생각할지" 스스로 결정하는 경량 멀티모달 모델 (0) | 2026.06.15 |
| NVIDIA Nemotron 3 Nano Omni 실전 가이드 — 문서·영상·오디오를 모델 하나로 처리하는 법 (1) | 2026.06.15 |
| GPT-5.5 vs Claude Opus 4.8 vs Gemini 3.5 Flash — 2026년 6월 지금 뭘 써야 하나 (0) | 2026.06.05 |