C.W.K.
Stream
Lesson 03 of 05 · published

모델 selection과 mini mode

~18 min · adapters, selection

Level 0Downloader
0 XP0/41 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

Size-vs-prompt 미스매치

작은 모델 (1B–3B)은 길고 layered system prompt에 약해. 잘 못 따라가고, drift하고, 작업하는 대신 meta-commentary 출력 자주 함. 큰 모델 (32B+)은 dense system prompt 자연스럽게 처리. Adapter가 어떤 size랑 얘기하는지 알고 system prompt 적응시켜야.

Mini mode

"Mini mode"는 convention이야: 활성 모델이 작으면 stripped-down system prompt로 swap. Plan 유지, 철학 빼. 형식 유지, 톤 calibration 빼.

Metadata 어디서 와?

/api/tags가 설치된 각 모델의 details.parameter_size ("7B", "32B", "1.5B") 반환. 그거 parse해서 mini / standard / large로 분류, prompt 그에 맞게 라우팅.

분류 reinvent하지 마

세 bucket이면 충분: mini (≤3B), standard (4–14B), large (≥15B). 더 많은 bucket = 한계 효용에 if/else chain만 늘어남.

Code

Mini-mode 인지 selector·python
class OllamaModelSelector:
    """OllamaAdapter 위에 layer된 스마트 모델 selection."""

    def __init__(self, adapter: OllamaAdapter):
        self.adapter = adapter

    async def installed(self) -> list[dict]:
        r = await self.adapter.client.get(f"{self.adapter.base_url}/api/tags")
        r.raise_for_status()
        return r.json().get("models", [])

    def classify(self, model_info: dict) -> str:
        size = model_info.get("details", {}).get("parameter_size", "")
        try:
            params_b = float(size.replace("B", "").strip())
        except ValueError:
            params_b = 0.0
        if params_b <= 3:
            return "mini"
        if params_b <= 14:
            return "standard"
        return "large"

    def system_prompt_for(self, klass: str) -> str:
        if klass == "mini":
            # 작은 모델: stripped down — plan + 형식만
            return (
                "You are a helpful assistant. Be concise. "
                "If asked to use a tool, call it directly without commentary."
            )
        # standard + large는 full prompt 처리
        return (
            "You are a knowledgeable AI assistant with expertise in software "
            "engineering, data analysis, and creative work. Think step by step. "
            "Provide detailed, accurate responses. When using tools, explain "
            "your plan in one sentence before calling them."
        )

    async def system_prompt_for_active(self) -> str:
        """활성 모델 class lookup해서 옳은 prompt 반환."""
        models = await self.installed()
        info = next((m for m in models if m["name"] == self.adapter.model), {})
        return self.system_prompt_for(self.classify(info))

External links

Exercise

OllamaModelSelector 구현. 머신 모든 설치된 모델에 classify() 돌려서 bucket 출력. 같은 prompt를 mini-mode랑 standard-mode system prompt로 1B랑 7B 모델에 보내. Mini mode일 때 1B 모델이 더 잘 동작하는지 메모.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.