> ## Documentation Index
> Fetch the complete documentation index at: https://kxp.wyhil.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 모델 설정

> Prometheus에서 모델을 구성하고 설정하는 방법을 알아보세요.

# 에이전트 모드 모델 설정

Prometheus에서 에이전트 모드(Agent Mode)용 모델을 설정하는 방법을 알아보세요. 최적의 성능을 위한 권장 모델 및 구성 옵션도 포함되어 있습니다.

export const ModelRecommendations = ({role = "all"}) => {
  const parseMarkdownLinks = text => {
    const regex = /\[([^\]]+)\]\(([^)]+)\)/g;
    const parts = [];
    let lastIndex = 0;
    let match;
    let key = 0;
    while ((match = regex.exec(text)) !== null) {
      if (match.index > lastIndex) {
        const beforeText = text.slice(lastIndex, match.index);
        if (beforeText) {
          parts.push(<span key={key++}>{beforeText}</span>);
        }
      }
      const [, linkText, url] = match;
      parts.push(<a key={key++} href={url} target="_blank" rel="noopener noreferrer" style={{
        color: "#0066cc",
        textDecoration: "underline"
      }}>
          {linkText}
        </a>);
      lastIndex = regex.lastIndex;
    }
    if (lastIndex < text.length) {
      const remainingText = text.slice(lastIndex);
      if (remainingText) {
        parts.push(<span key={key++}>{remainingText}</span>);
      }
    }
    return parts.length > 0 ? parts : text;
  };
  const modelRecs = {
    agent_plan: {
      open: ["[Qwen3 Coder (480B)](https://hub.continue.dev/openrouter/qwen3-coder)", "[Qwen3 Coder (30B)](https://hub.continue.dev/ollama/qwen3-coder-30b)", "[Devstral (27B)](https://hub.continue.dev/ollama/devstral)", "[Kimi K2 (1T)](https://hub.continue.dev/openrouter/kimi-k2)", "[gpt-oss (120B)](https://hub.continue.dev/openrouter/gpt-oss-120b)", "[gpt-oss (20B)](https://hub.continue.dev/ollama/gpt-oss-20b)", "[GLM 4.5 (355B)](https://hub.continue.dev/openrouter/glm-4-5)", "[GLM 4.5 Air (106B)](https://hub.continue.dev/openrouter/glm-4-5-air)"],
      closed: ["[Claude Opus 4.1](https://hub.continue.dev/anthropic/claude-4-1-opus)", "[Claude Sonnet 4](https://hub.continue.dev/anthropic/claude-4-sonnet)", "[GPT-5](https://hub.continue.dev/openai/gpt-5)", "[Gemini 2.5 Pro](https://hub.continue.dev/google/gemini-2.5-pro)"],
      notes: "폐쇄형 모델이 오픈 소스 모델보다 약간 더 우수합니다."
    },
    chat_edit: {
      open: ["[Qwen3 Coder (480B)](https://hub.continue.dev/openrouter/qwen3-coder)", "[Qwen3 Coder (30B)](https://hub.continue.dev/ollama/qwen3-coder-30b)", "[gpt-oss (120B)](https://hub.continue.dev/openrouter/gpt-oss-120b)", "[gpt-oss (20B)](https://hub.continue.dev/ollama/gpt-oss-20b)"],
      closed: ["[Claude Opus 4.1](https://hub.continue.dev/anthropic/claude-4-1-opus)", "[Claude Sonnet 4](https://hub.continue.dev/anthropic/claude-4-sonnet)", "[GPT-5](https://hub.continue.dev/openai/gpt-5)", "[Gemini 2.5 Pro](https://hub.continue.dev/google/gemini-2.5-pro)"],
      notes: "폐쇄형 모델과 오픈 소스 모델의 성능이 거의 비슷합니다."
    },
    autocomplete: {
      open: ["[QwenCoder2.5 (1.5B)](https://hub.continue.dev/ollama/qwen2.5-coder-1.5b)", "[QwenCoder2.5 (7B)](https://hub.continue.dev/ollama/qwen2.5-coder-7b)"],
      closed: ["[Codestral](https://hub.continue.dev/mistral/codestral)", "[Mercury Coder](https://hub.continue.dev/inception/mercury-coder)"],
      notes: "폐쇄형 모델이 오픈 소스 모델보다 약간 더 우수합니다."
    },
    apply: {
      open: ["[FastApply](https://hub.continue.dev/mdpauley/fast-apply-15b-v10)"],
      closed: ["[Relace Instant Apply](https://hub.continue.dev/relace/instant-apply)", "[Morph Fast Apply](https://hub.continue.dev/morphllm/morph-v2)"],
      notes: "폐쇄형 모델이 오픈 소스 모델보다 더 우수합니다."
    },
    embed: {
      open: ["[Nomic Embed Text](https://hub.continue.dev/ollama/nomic-embed-text-latest)", "Qwen3 Embedding"],
      closed: ["[Voyage Code 3](https://hub.continue.dev/voyageai/voyage-code-3)", "[Morph Embeddings](https://hub.continue.dev/morphllm/morph-embedding-v2)", "Codestral Embed"],
      notes: "폐쇄형 모델이 오픈 소스 모델보다 약간 더 우수합니다."
    },
    rerank: {
      open: ["zerank-1", "zerank-1-small", "Qwen3 Reranker"],
      closed: ["[Voyage Rerank 2.5](https://hub.continue.dev/voyageai/rerank-2-5)", "Relace Code Rerank", "[Morph Rerank](https://hub.continue.dev/morphllm/morph-rerank-v2)"],
      notes: "이 모델 역할에 대해 오픈 소스 모델이 등장하기 시작했습니다."
    },
    next_edit: {
      open: ["[Instinct](https://hub.continue.dev/continuedev/instinct)"],
      closed: ["[Mercury Coder](https://hub.continue.dev/inception/mercury-coder)"],
      notes: "폐쇄형 모델이 오픈 소스 모델보다 더 우수합니다."
    }
  };
  let rolesToShow = [];
  if (!role || role === "all") {
    rolesToShow = Object.keys(modelRecs);
  } else {
    const key = role.toLowerCase().replace(/\s|\//g, "_").replace(/-/g, "_");
    if (modelRecs[key]) {
      rolesToShow = [key];
    }
  }
  if (rolesToShow.length === 0) {
    return <div>권장 사항을 찾을 수 없습니다: {role}</div>;
  }
  return <table style={{
    width: "100%",
    borderCollapse: "collapse",
    marginTop: "1rem"
  }}>
      <thead>
        <tr>
          <th style={{
    textAlign: "left",
    borderBottom: "1px solid #ddd",
    padding: "8px"
  }}>
            모델 역할
          </th>
          <th style={{
    textAlign: "left",
    borderBottom: "1px solid #ddd",
    padding: "8px"
  }}>
            최고의 오픈 소스 모델
          </th>
          <th style={{
    textAlign: "left",
    borderBottom: "1px solid #ddd",
    padding: "8px"
  }}>
            최고의 폐쇄형(기성) 모델
          </th>
          <th style={{
    textAlign: "left",
    borderBottom: "1px solid #ddd",
    padding: "8px"
  }}>
            비고
          </th>
        </tr>
      </thead>
      <tbody>
        {rolesToShow.map(roleKey => {
    const rec = modelRecs[roleKey];
    if (!rec) return null;
    return <tr key={roleKey}>
              <td style={{
      fontWeight: 600,
      verticalAlign: "top",
      padding: "8px"
    }}>
                {roleKey.replace(/_/g, " ").replace(/\b\w/g, l => l.toUpperCase())}
              </td>
              <td style={{
      padding: "8px",
      verticalAlign: "top"
    }}>
                {rec.open.map((m, i) => <div key={i} style={{
      marginBottom: "4px"
    }}>
                    {parseMarkdownLinks(m)}
                  </div>)}
              </td>
              <td style={{
      padding: "8px",
      verticalAlign: "top"
    }}>
                {rec.closed.map((m, i) => <div key={i} style={{
      marginBottom: "4px"
    }}>
                    {parseMarkdownLinks(m)}
                  </div>)}
              </td>
              <td style={{
      padding: "8px",
      verticalAlign: "top"
    }}>
                {rec.notes}
              </td>
            </tr>;
  })}
      </tbody>
    </table>;
};

채팅 모드(Chat Mode)용으로 설정한 모델은 해당 모델이 도구 호출을 지원하는 경우 에이전트 모드(Agent Mode)에서도 사용됩니다. 권장 모델 및 설정 방법은 [여기](/ide-extensions/chat/model-setup)에서 확인할 수 있습니다.

## 시스템 메시지 도구(System Message Tools) 작동 방식

Prometheus는 **시스템 메시지 도구**라는 혁신적인 접근 방식을 구현하여 모델의 기본 기능에 관계없이 모든 모델에서 일관된 도구 기능을 보장합니다. 이를 통해 에이전트 모드는 더 넓은 범위의 모델 및 공급자와 원활하게 작동할 수 있습니다.

### 시스템 메시지 도구의 기능

공급업체마다 다른 네이티브 도구 호출 API에만 의존하는 대신, Prometheus는 도구를 XML 형식으로 변환하여 시스템 메시지에 포함합니다. 모델은 응답 내에 구조화된 XML 형식으로 도구 호출을 생성하고, Prometheus는 이를 구문 분석하여 실행합니다. 이 접근 방식은 다음과 같은 이점을 제공합니다:

* **범용 호환성** - 지침을 따를 수 있는 모든 모델은 네이티브 도구 지원 여부와 관계없이 도구를 사용할 수 있습니다.
* **일관된 동작** - 도구 호출은 OpenAI, Anthropic, 로컬 모델 및 기타 모델에서 동일하게 작동합니다.
* **더 나은 안정성** - 네이티브 도구 사용에 어려움을 겪는 모델도 시스템 메시지 도구를 사용할 때 더 나은 성능을 보이는 경우가 많습니다.
* **원활한 전환** - 워크플로우를 수정하지 않고도 공급업체 간에 자유롭게 전환할 수 있습니다.

## 권장 에이전트 모델

<ModelRecommendations role="all" />

### 에이전트 모드 구성 방법

에이전트 모드는 모델의 기능에 따라 네이티브 메시지 도구 또는 시스템 메시지 도구를 사용할지 자동으로 결정합니다. 추가 구성은 필요하지 않으며, 모델을 선택하기만 하면 Prometheus가 나머지를 처리합니다.

## 모델 호환성 확인 방법

도구 사용(에이전트 모드 용) 및 이미지 입력과 같은 특정 기능을 지원하는 모델을 확인하려면 [모델 기능 가이드](/customize/deep-dives/model-capabilities)를 참조하세요.
