Kanana-2 Open Source로 에이전트 만들기 – 실무 활용 시나리오 & 코드 예시

어떤 프로젝트에 Kanana-2 Open Source를 쓰면 좋을까?
카카오 기술블로그와 관련 기사들을 보면, Kanana-2는 에이전트형 서비스를 강하게 의식하고 설계된 모델입니다.
대표적으로 이런 프로젝트에 어울려요.
- 도구 호출 기반 에이전트
- 예: “조직문화 면담 요약 → 위험 키워드 분석 → Jira 이슈 자동 생성” 같은 파이프라인
- Kanana-2 Instruct/Thinking에게 “이 상황에서 사용할 함수 이름과 파라미터를 JSON으로 반환해 줘” 같은 패턴을 학습시키기 좋습니다.
- 한국어 중심 업무 자동화
- 예: 공공기관/에너지 회사/내부 시스템의 Korean-heavy 문서 요약, Q&A, 보고서 작성 도우미
- 한국어 질의 응답 성능이 강점으로 언급되므로, 사내 데이터 + RAG와 결합하기 편합니다.
- 연구/실험용 국산 LLM 플랫폼
- MoE, MLA, 긴 컨텍스트 등 최신 구조를 한국어 데이터와 함께 실험하고 싶은 연구자에게도 유용합니다.
모델 선택 가이드 – Base / Instruct / Thinking

Hugging Face 페이지 기준으로, Kanana-2-30B-A3B 계열은 이렇게 나뉩니다.
- Base
- “원석”에 가까운 모델
- 나만의 도메인(예: 조직문화, 사내 매뉴얼)에 맞게 파인튜닝하고 싶은 경우에 적합
- Instruct
- 우리가 흔히 쓰는 “대화형 지시 응답”에 맞춰 튜닝된 버전
- 프롬프트만 잘 주면 바로 챗봇/도우미로 쓰기 좋음
- Thinking
- 이름 그대로 추론(Thinking)에 조금 더 무게를 둔 모델
- 복잡한 플로우, 단계별 Reasoning, 도구 호출이 엮인 워크플로우에서 강점
실무용 한 줄 추천
- “당장 챗봇/에이전트 PoC를 만들고 싶다” → Instruct
- “도메인 특화 + 연구 + 파인튜닝” → Base
- “툴콜링 + Reasoning 테스트를 집중적으로 하고 싶다” → Thinking
Python + Hugging Face로 Kanana-2 Open Source 맛보기
下面的代码显示了 개념 예시용이에요. 실제로는 GPU 자원과 메모리 고려가 필요합니다.
from transformers import AutoModelForCausalLM, AutoTokenizer
import torch
MODEL_ID = "kakaocorp/kanana-2-30b-a3b-thinking" # Kanana-2 오픈소스 thinking 예시
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
torch_dtype=torch.bfloat16,
device_map="auto" # 적절한 GPU/CPU 환경에 맞게 조정
)
def ask_kanana(prompt: str, max_tokens: int = 512) -> str:
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
**inputs,
max_new_tokens=max_tokens,
do_sample=True,
temperature=0.7,
)
return tokenizer.decode(output[0], skip_special_tokens=True)
if __name__ == "__main__":
prompt = (
"당신은 에이전틱 AI 연구를 돕는 조수입니다. "
"Kanana-2 오픈소스 모델의 특징을 한국어로 5줄 이내로 요약해 주세요."
)
print(ask_kanana(prompt))
이 정도만으로도 “Kanana-2 Open Source가 어떤 톤과 스타일로 답하는지” 감을 잡을 수 있어요.
실제 서비스에서는 반드시
- 프롬프트 템플릿 관리
- 안전 필터링(출력 검증)
- RAG/툴콜링 레이어(예: LangChain, LlamaIndex, 자체 에이전트 프레임워크)
를 얹어서 써야 합니다.
ChatGPT Codex로 구현하기
바로 위 섹션을 코덱스를 통해서 구현해 보았습니다.
위 내용을 알려주고 설명을 해달라고 요구하니 다음과 같은 답변을 줍니다.
---Kanana‑2 Open Source 모델을 Python + Hugging Face로 “맛보기” 하려면 이렇게 진행하면 좋아요. 현재는 개념 설명 위주로 안내하고, 실제 실행 세팅은 다음 단계에서 환경에 맞게 맞춰가면 됩니다.
진행 순서(요약)
- 모델 접근 권한 확인: Hugging Face에서 kakaocorp/kanana-2-30b-a3b-thinking 페이지에 접근 가능한지 먼저
확인
- Python 환경 준비: python -m venv .venv 후 transformers, accelerate, torch 설치
- GPU 환경 확인: CUDA 지원 여부, GPU VRAM 확인 (30B급은 수십 GB VRAM 필요)
- 로딩 옵션 결정: device_map="auto" + torch_dtype=torch.bfloat16 등으로 메모리 최적화
- 간단 질의 코드 실행: 샘플 프롬프트로 출력 확인
핵심 체크포인트
- VRAM이 충분하지 않으면: device_map="auto"로 CPU/GPU 분산, 혹은 더 작은 모델로 테스트
- 속도/메모리 최적화: torch_dtype, low_cpu_mem_usage=True, max_new_tokens 조절
- 추론 품질: temperature, top_p 등의 샘플링 파라미터 튜닝
------
현재 환경은 Apple M2 내장 GPU(Metal)이고, CUDA GPU는 없습니다. nvidia-smi도
없어서 NVIDIA VRAM 기반 실행은 불가합니다. 이 경우 PyTorch의 MPS 백엔드로는 작은 모델만 실험 가능하고,
30B급은 현실적으로 메모리/속도 한계가 큽니다.
로컬 실행 옵션은 크게 두 가지예요:
- 소형/중형 모델로 맛보기: M2에서 가능한 크기로 내려서 동작 확인
- 원본 30B 모델은 원격 GPU: (예: 서버/클라우드/Colab)로 돌리기
-------현재 사용중인 노트북에서 14B 모델까지는 돌려보았는데 30B는 불가하다고 하여 코랩으로 한번 진행해보겠습니다.
코랩에서 실행하는 방법을 정리해 드릴게요. 30B 모델은 메모리 요구가 커서 A100 80GB 이상을 권장합니다. T4/
L4는 매우 빡빡하거나 불가능할 수 있어요. 그래도 가능성을 높이려면 4-bit 양자화로 시도합니다.
Colab 진행 순서
1. Colab 런타임 → 하드웨어 가속기: GPU (가능하면 A100)
2. Hugging Face 토큰 준비(모델 접근 권한 필요)
3. 셀에서 라이브러리 설치
4. 로그인 후 모델 로드/추론 실행
Colab 셀 예시 (4-bit 양자화)
!pip -q install transformers accelerate bitsandbytes
from huggingface_hub import login
login() # 토큰 입력
import torch
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
MODEL_ID = "kakaocorp/kanana-2-30b-a3b-thinking"
bnb_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_use_double_quant=True,
bnb_4bit_compute_dtype=torch.bfloat16,
)
tokenizer = AutoTokenizer.from_pretrained(MODEL_ID)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
device_map="auto",
quantization_config=bnb_config,
)
def ask_kanana(prompt: str, max_tokens: int = 256) -> str:
inputs = tokenizer(prompt, return_tensors="pt").to(model.device)
with torch.no_grad():
output = model.generate(
**inputs,
max_new_tokens=max_tokens,
do_sample=True,
temperature=0.7,
)
return tokenizer.decode(output[0], skip_special_tokens=True)
prompt = "당신은 에이전틱 AI 연구를 돕는 조수입니다. Kanana-2 오픈소스 모델의 특징을 한국어로 5줄 이내로
요약해 주세요."
print(ask_kanana(prompt))
실패/메모리 부족 시 대안
- 더 작은 모델로 테스트 (예: 7B/13B급)
- max_new_tokens를 128 이하로 낮추기
- torch_dtype=torch.float16로 바꾸기 (bfloat16 불가 GPU일 때)
위 내용 따라서 코랩에서 세팅을 하고 토큰을 준비해서 하려고 했으나 실제 토큰을 생성할 수 없는 상황임을 확인했고, 그래서 허깅페이스에서 직접 코랩으로 연결하는 작업을 해보았습니다.


위 그림에서처럼 Google Colab을 선택하면 다음과 같은 코드가 펼쳐진 코랩으로 연결이 됩니다. (물론 코랩 로그인이 되어 있어야겠지요.)
!pip install -U transformers
## Local Inference on GPU
Model page: https://huggingface.co/kakaocorp/kanana-2-30b-a3b-thinking
⚠️ If the generated code snippets do not work, please open an issue on either the [model repo](https://huggingface.co/kakaocorp/kanana-2-30b-a3b-thinking)
and/or on [huggingface.js](https://github.com/huggingface/huggingface.js/blob/main/packages/tasks/src/model-libraries-snippets.ts) 🙏
# Use a pipeline as a high-level helper
from transformers import pipeline
pipe = pipeline("text-generation", model="kakaocorp/kanana-2-30b-a3b-thinking")
messages = [
{"role": "user", "content": "Who are you?"},
]
pipe(messages)
# Load model directly
from transformers import AutoTokenizer, AutoModelForCausalLM
tokenizer = AutoTokenizer.from_pretrained("kakaocorp/kanana-2-30b-a3b-thinking")
model = AutoModelForCausalLM.from_pretrained("kakaocorp/kanana-2-30b-a3b-thinking")
messages = [
{"role": "user", "content": "Who are you?"},
]
inputs = tokenizer.apply_chat_template(
messages,
add_generation_prompt=True,
tokenize=True,
return_dict=True,
return_tensors="pt",
).to(model.device)
outputs = model.generate(**inputs, max_new_tokens=40)
print(tokenizer.decode(outputs[0][inputs["input_ids"].shape[-1]:]))
이 오류는 'CUDA 메모리 부족' 오류입니다. GPU 메모리가 부족하여 모델을 로드할 수 없다는 뜻입니다. 모델의 메모리 사용량을 줄이기 위해 8비트 정밀도로 로드하도록 코드를 수정했습니다.위와 같이 해도 기본 무료 자원용량으로는 30B 카나나를 돌릴 수가 없습니다.ㅜㅜ
Agentic AI 시나리오 예시 – “툴콜링 워크플로우”

예를 들어, “조직문화 면담 분석 에이전트”를 만든다고 가정해 볼게요. 툴콜링 워크플로우는 다음과 같아요.
- 사용자 프롬프트
- “이번 분기 면담 기록을 요약하고, 주요 리스크 3가지를 뽑아서 Jira 이슈로 만들어줘.”
- Kanana-2 Instruct/Thinking에 System Prompt
- “너는 조직문화 데이터 분석 에이전트다. 사용할 수 있는 도구는 다음 세 가지다…
search_interviewssummarize_textcreate_jira_issue
사용자 요청에 따라 어떤 도구를 어떤 순서로 부를지 JSON으로 반환해라.”
- “너는 조직문화 데이터 분석 에이전트다. 사용할 수 있는 도구는 다음 세 가지다…
- 툴콜링 레이어
- 모델이 내놓은 JSON을 파싱해서 실제 Python 함수 호출
- 최종 응답 구성
- Jira 이슈 생성 결과 + 요약 결과를 다시 Kanana-2에게 넘겨 “사용자용 자연어 보고서”로 정리
이때 Kanana-2 오픈소스의 강점은
- 한국어 면담 텍스트를 자연스럽게 이해하고
- “도구를 어떤 순서로 호출할지”를 스스로 설계하는 데 최적화된 점입니다.
장점과 한계 – 솔직 리뷰
👍 Kanana-2 오픈소스의 장점
- 한국어 중심 에이전트에 최적화
- 도구 호출/지시 이행/추론(Thinking)에 신경 써서 튜닝된 모델
- MLA + MoE 구조 덕분에, 같은 파라미터급 대비 추론 효율이 좋은 편
- Hugging Face 공개 + 논문/기술문서까지 나와 있어 연구 용도로도 괜찮음
🤔 고려해야 할 한계
- 30B급 모델은 로컬/소형 서버에선 부담이 크다
- GPU 메모리, 비용, 인프라가 필요
- Llama 3.x, Qwen 3.x처럼 글로벌 생태계가 큰 모델들에 비해
- 튜토리얼, 예제, 커뮤니티 자료는 아직 적은 편
- 라이선스가 Apache-2.0처럼 “매우 느슨한” 것은 아니라서
- 기업 적용 전 법무/라이선스 검토는 필수
용어 정리 (초보자용)
- Kanana-2 오픈소스
카카오가 공개한 차세대 국산 LLM 시리즈. 에이전틱 AI와 도구 호출, 복잡한 지시 이행에 초점을 둔 모델 계열. - 에이전틱 AI (Agentic AI)
단순히 답변만 하는 AI가 아니라,
“상황 이해 → 필요한 작업(도구 호출/코드 실행 등) 선택 → 결과를 조합해 다시 응답”까지 스스로 하는 에이전트형 AI. - MLA (Multi-head Latent Attention)
주어진 자원 안에서 효율을 높이기 위한 새로운 어텐션 구조. 기존 어텐션보다 계산량을 줄이면서도 성능을 유지하는 것을 목표로 합니다. - 专家混合体(MoE)
여러 개의 “전문가 네트워크” 중 일부만 골라서 사용하는 구조.
전체 파라미터는 크지만, 실제로는 일부만 활성화해서 연산량과 비용을 줄이는 트릭. - Thinking 모델
내부적으로 “단계별 추론”을 강화한 LLM 계열을 흔히 부르는 이름.
Kanana-2에서도 Thinking 버전이 따로 존재합니다.




