> ## Documentation Index
> Fetch the complete documentation index at: https://crewai.burt.pe.kr/llms.txt
> Use this file to discover all available pages before exploring further.

# LLMs

> CrewAI 프로젝트에서 대형 언어 모델(LLMs)을 설정하고 사용하는 종합 가이드

<Note>
  CrewAI는 LiteLLM을 통해 여러 LLM 프로바이더와 통합된다. 이를 통해 특정 사용 사례에 적합한 모델을 유연하게 선택할 수 있다. 이 가이드는 CrewAI 프로젝트에서 다양한 LLM 프로바이더를 설정하고 사용하는 방법을 이해하는 데 도움을 준다.
</Note>

## LLM이란 무엇인가?

대규모 언어 모델(LLM)은 CrewAI 에이전트의 핵심 지능을 담당한다. 에이전트가 문맥을 이해하고 결정을 내리며 인간과 유사한 응답을 생성할 수 있게 한다. 다음은 LLM에 대해 알아야 할 핵심 사항이다:

<CardGroup cols={2}>
  <Card title="LLM 기본 개념" icon="brain">
    대규모 언어 모델은 방대한 텍스트 데이터로 학습된 AI 시스템이다. CrewAI 에이전트의 지능을 구동하여 인간과 유사한 텍스트를 이해하고 생성할 수 있게 한다.
  </Card>

  <Card title="컨텍스트 윈도우" icon="window">
    컨텍스트 윈도우는 LLM이 한 번에 처리할 수 있는 텍스트의 양을 결정한다. 더 큰 윈도우(예: 128K 토큰)는 더 많은 컨텍스트를 허용하지만, 비용이 더 들고 속도가 느려질 수 있다.
  </Card>

  <Card title="온도" icon="temperature-three-quarters">
    온도(0.0에서 1.0 사이)는 응답의 무작위성을 조절한다. 낮은 값(예: 0.2)은 더 집중적이고 결정론적인 출력을 생성하며, 높은 값(예: 0.8)은 창의성과 다양성을 증가시킨다.
  </Card>

  <Card title="프로바이더 선택" icon="server">
    각 LLM 프로바이더(예: OpenAI, Anthropic, Google)는 다양한 기능, 가격, 특징을 가진 모델을 제공한다. 정확도, 속도, 비용에 대한 요구 사항에 따라 선택한다.
  </Card>
</CardGroup>

## 지원 모델과 기능

지원되는 모델과 각각의 기능을 상세히 정리했다. [lmarena.ai](https://lmarena.ai/?leaderboard)와 [artificialanalysis.ai](https://artificialanalysis.ai/)에서 성능을 비교할 수 있다.

<Tabs>
  <Tab title="OpenAI">
    | 모델                   | 컨텍스트 윈도우   | 주요 용도               |
    | -------------------- | ---------- | ------------------- |
    | GPT-4                | 8,192 토큰   | 고정확도 작업, 복잡한 추론     |
    | GPT-4 Turbo          | 128,000 토큰 | 장문 콘텐츠, 문서 분석       |
    | GPT-4o & GPT-4o-mini | 128,000 토큰 | 비용 효율적인 대용량 컨텍스트 처리 |
    | o3-mini              | 200,000 토큰 | 빠른 추론, 복잡한 추론       |

    <Note>
      1 토큰 ≈ 영어 4 문자. 예를 들어, 8,192 토큰 ≈ 32,768 문자 또는 약 6,000 단어.
    </Note>
  </Tab>

  <Tab title="Nvidia NIM">
    | 모델                                          | 컨텍스트 윈도우 | 주요 용도                                                      |
    | ------------------------------------------- | -------- | ---------------------------------------------------------- |
    | nvidia/mistral-nemo-minitron-8b-8k-instruct | 8,192 토큰 | 최첨단 소형 언어 모델로, 챗봇, 가상 어시스턴트, 콘텐츠 생성에 뛰어난 정확도 제공            |
    | nvidia/nemotron-4-mini-hindi-4b-instruct    | 4,096 토큰 | 힌디어와 영어를 지원하는 이중 언어 소형 언어 모델로, 디바이스 내 추론에 최적화              |
    | "nvidia/llama-3.1-nemotron-70b-instruct     | 128k 토큰  | NVIDIA가 맞춤화한 대형 언어 모델로, LLM 생성 응답의 유용성 향상                  |
    | nvidia/llama3-chatqa-1.5-8b                 | 128k 토큰  | 챗봇과 검색 엔진을 위한 고품질, 컨텍스트 인식 응답 생성                           |
    | nvidia/llama3-chatqa-1.5-70b                | 128k 토큰  | 챗봇과 검색 엔진을 위한 고품질, 컨텍스트 인식 응답 생성                           |
    | nvidia/vila                                 | 128k 토큰  | 텍스트/이미지/비디오를 이해하고 정보성 응답을 생성하는 멀티모달 비전-언어 모델               |
    | nvidia/neva-22                              | 4,096 토큰 | 텍스트/이미지를 이해하고 정보성 응답을 생성하는 멀티모달 비전-언어 모델                   |
    | nvidia/nemotron-mini-4b-instruct            | 8,192 토큰 | 일반적인 작업                                                    |
    | nvidia/usdcode-llama3-70b-instruct          | 128k 토큰  | OpenUSD 지식 쿼리에 답변하고 USD-Python 코드를 생성하는 최첨단 LLM            |
    | nvidia/nemotron-4-340b-instruct             | 4,096 토큰 | 실제 데이터의 특성을 모방한 다양한 합성 데이터 생성                              |
    | meta/codellama-70b                          | 100k 토큰  | 자연어에서 코드를 생성하고 그 반대도 가능한 LLM                               |
    | meta/llama2-70b                             | 4,096 토큰 | 텍스트와 코드를 생성할 수 있는 최첨단 대형 언어 AI 모델                          |
    | meta/llama3-8b-instruct                     | 8,192 토큰 | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 LLM                       |
    | meta/llama3-70b-instruct                    | 8,192 토큰 | 우수한 컨텍스트 이해, 추론, 텍스트 생성 기능으로 복잡한 대화 지원                     |
    | meta/llama-3.1-8b-instruct                  | 128k 토큰  | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 모델                        |
    | meta/llama-3.1-70b-instruct                 | 128k 토큰  | 우수한 컨텍스트 이해, 추론, 텍스트 생성 기능으로 복잡한 대화 지원                     |
    | meta/llama-3.1-405b-instruct                | 128k 토큰  | 챗봇, 코딩, 도메인 특화 작업을 위한 합성 데이터 생성, 증류, 추론에 적합한 고급 LLM        |
    | meta/llama-3.2-1b-instruct                  | 128k 토큰  | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 소형 언어 모델                  |
    | meta/llama-3.2-3b-instruct                  | 128k 토큰  | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 소형 언어 모델                  |
    | meta/llama-3.2-11b-vision-instruct          | 128k 토큰  | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 소형 언어 모델                  |
    | meta/llama-3.2-90b-vision-instruct          | 128k 토큰  | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 소형 언어 모델                  |
    | meta/llama-3.1-70b-instruct                 | 128k 토큰  | 우수한 컨텍스트 이해, 추론, 텍스트 생성 기능으로 복잡한 대화 지원                     |
    | google/gemma-7b                             | 8,192 토큰 | 텍스트 이해, 변환, 코드 생성에 뛰어난 최첨단 텍스트 생성 모델                       |
    | google/gemma-2b                             | 8,192 토큰 | 텍스트 이해, 변환, 코드 생성에 뛰어난 최첨단 텍스트 생성 모델                       |
    | google/codegemma-7b                         | 8,192 토큰 | Google의 Gemma-7B를 기반으로 한 코드 생성 및 완성을 위한 최첨단 모델             |
    | google/codegemma-1.1-7b                     | 8,192 토큰 | 코드 생성, 완성, 추론, 지시 따르기에 적합한 고급 프로그래밍 모델                     |
    | google/recurrentgemma-2b                    | 8,192 토큰 | 긴 시퀀스 생성 시 빠른 추론을 위한 새로운 반복 아키텍처 기반 언어 모델                  |
    | google/gemma-2-9b-it                        | 8,192 토큰 | 텍스트 이해, 변환, 코드 생성에 뛰어난 최첨단 텍스트 생성 모델                       |
    | google/gemma-2-27b-it                       | 8,192 토큰 | 텍스트 이해, 변환, 코드 생성에 뛰어난 최첨단 텍스트 생성 모델                       |
    | google/gemma-2-2b-it                        | 8,192 토큰 | 텍스트 이해, 변환, 코드 생성에 뛰어난 최첨단 텍스트 생성 모델                       |
    | google/deplot                               | 512 토큰   | 플롯 이미지를 테이블로 변환하는 원샷 비전 언어 이해 모델                           |
    | google/paligemma                            | 8,192 토큰 | 텍스트와 시각적 입력을 이해하고 정보성 응답을 생성하는 비전 언어 모델                    |
    | mistralai/mistral-7b-instruct-v0.2          | 32k 토큰   | 지시를 따르고 요청을 완료하며 창의적인 텍스트를 생성하는 LLM                        |
    | mistralai/mixtral-8x7b-instruct-v0.1        | 8,192 토큰 | 지시를 따르고 요청을 완료하며 창의적인 텍스트를 생성하는 MOE LLM                    |
    | mistralai/mistral-large                     | 4,096 토큰 | 실제 데이터의 특성을 모방한 다양한 합성 데이터 생성                              |
    | mistralai/mixtral-8x22b-instruct-v0.1       | 8,192 토큰 | 실제 데이터의 특성을 모방한 다양한 합성 데이터 생성                              |
    | mistralai/mistral-7b-instruct-v0.3          | 32k 토큰   | 지시를 따르고 요청을 완료하며 창의적인 텍스트를 생성하는 LLM                        |
    | nv-mistralai/mistral-nemo-12b-instruct      | 128k 토큰  | 추론, 코드, 다국어 작업에 최적화된 가장 진보된 언어 모델로, 단일 GPU에서 실행            |
    | mistralai/mamba-codestral-7b-v0.1           | 256k 토큰  | 다양한 프로그래밍 언어와 작업에 걸쳐 코드 작성 및 상호작용을 위한 모델                   |
    | microsoft/phi-3-mini-128k-instruct          | 128K 토큰  | 강력한 수학 및 논리 추론 능력을 갖춘 경량, 최첨단 오픈 LLM                       |
    | microsoft/phi-3-mini-4k-instruct            | 4,096 토큰 | 강력한 수학 및 논리 추론 능력을 갖춘 경량, 최첨단 오픈 LLM                       |
    | microsoft/phi-3-small-8k-instruct           | 8,192 토큰 | 강력한 수학 및 논리 추론 능력을 갖춘 경량, 최첨단 오픈 LLM                       |
    | microsoft/phi-3-small-128k-instruct         | 128K 토큰  | 강력한 수학 및 논리 추론 능력을 갖춘 경량, 최첨단 오픈 LLM                       |
    | microsoft/phi-3-medium-4k-instruct          | 4,096 토큰 | 강력한 수학 및 논리 추론 능력을 갖춘 경량, 최첨단 오픈 LLM                       |
    | microsoft/phi-3-medium-128k-instruct        | 128K 토큰  | 강력한 수학 및 논리 추론 능력을 갖춘 경량, 최첨단 오픈 LLM                       |
    | microsoft/phi-3.5-mini-instruct             | 128K 토큰  | 지연 시간이 제한되고 메모리/계산 자원이 제한된 환경에서 AI 애플리케이션을 구동하는 경량 다국어 LLM |
    | microsoft/phi-3.5-moe-instruct              | 128K 토큰  | 컴퓨팅 효율적인 콘텐츠 생성을 위한 Mixture of Experts 아키텍처 기반 고급 LLM      |
    | microsoft/kosmos-2                          | 1,024 토큰 | 이미지의 시각적 요소를 이해하고 추론하기 위해 설계된 획기적인 멀티모달 모델                 |
    | microsoft/phi-3-vision-128k-instruct        | 128k 토큰  | 이미지에서 고품질 추론에 뛰어난 최첨단 오픈 멀티모달 모델                           |
    | microsoft/phi-3.5-vision-instruct           | 128k 토큰  | 이미지에서 고품질 추론에 뛰어난 최첨단 오픈 멀티모달 모델                           |
    | databricks/dbrx-instruct                    | 12k 토큰   | 언어 이해, 코딩, RAG에서 최첨단 성능을 발휘하는 범용 LLM                       |
    | snowflake/arctic                            | 1,024 토큰 | SQL 생성 및 코딩에 중점을 둔 기업 애플리케이션을 위한 고효율 추론 제공                 |
    | aisingapore/sea-lion-7b-instruct            | 4,096 토큰 | 동남아시아의 언어적, 문화적 다양성을 대표하고 지원하는 LLM                         |
    | ibm/granite-8b-code-instruct                | 4,096 토큰 | 코드 생성, 완성, 설명, 다중 턴 변환을 위한 소프트웨어 프로그래밍 LLM                 |
    | ibm/granite-34b-code-instruct               | 8,192 토큰 | 코드 생성, 완성, 설명, 다중 턴 변환을 위한 소프트웨어 프로그래밍 LLM                 |
    | ibm/granite-3.0-8b-instruct                 | 4,096 토큰 | RAG, 요약, 분류, 코드, 에이전트 AI를 지원하는 고급 소형 언어 모델                 |
    | ibm/granite-3.0-3b-a800m-instruct           | 4,096 토큰 | RAG, 요약, 엔티티 추출, 분류를 위한 고효율 Mixture of Experts 모델          |
    | mediatek/breeze-7b-instruct                 | 4,096 토큰 | 실제 데이터의 특성을 모방한 다양한 합성 데이터 생성                              |
    | upstage/solar-10.7b-instruct                | 4,096 토큰 | 지시 따르기, 추론, 수학 작업에서 뛰어난 NLP 성능                             |
    | writer/palmyra-med-70b-32k                  | 32k 토큰   | 의료 도메인에서 정확하고 컨텍스트에 맞는 응답을 제공하는 선도적인 LLM                   |
    | writer/palmyra-med-70b                      | 32k 토큰   | 의료 도메인에서 정확하고 컨텍스트에 맞는 응답을 제공하는 선도적인 LLM                   |
    | writer/palmyra-fin-70b-32k                  | 32k 토큰   | 재무 분석, 보고, 데이터 처리를 위한 특화된 LLM                              |
    | 01-ai/yi-large                              | 32k 토큰   | 챗봇 및 창의적 글쓰기를 포함한 다양한 작업을 위한 영어와 중국어로 훈련된 강력한 모델           |
    | deepseek-ai/deepseek-coder-6.7b-instruct    | 2k 토큰    | 코드 생성, 완성, 채우기에 뛰어난 강력한 코딩 모델                              |
    | rakuten/rakutenai-7b-instruct               | 1,024 토큰 | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 LLM                       |
    | rakuten/rakutenai-7b-chat                   | 1,024 토큰 | 언어 이해, 우수한 추론, 텍스트 생성 기능을 갖춘 최첨단 LLM                       |
    | baichuan-inc/baichuan2-13b-chat             | 4,096 토큰 | 중국어와 영어 채팅, 코딩, 수학, 지시 따르기, 퀴즈 해결 지원                       |

    <Note>
      NVIDIA의 NIM 지원 모델은 지속적으로 확장 중! 최신 모델 목록은 build.nvidia.com을 방문하세요.
    </Note>
  </Tab>

  <Tab title="Gemini">
    | 모델                   | 컨텍스트 윈도우 | 주요 용도                                       |
    | -------------------- | -------- | ------------------------------------------- |
    | gemini-2.0-flash-exp | 1M 토큰    | 더 빠른 속도로 고품질 결과를 제공하는 멀티모달 모델로, 대부분의 작업에 적합 |
    | gemini-1.5-flash     | 1M 토큰    | 균형 잡힌 멀티모달 모델로, 대부분의 작업에 적합                 |
    | gemini-1.5-flash-8B  | 1M 토큰    | 가장 빠르고 비용 효율적이며, 고빈도 작업에 적합                 |
    | gemini-1.5-pro       | 2M 토큰    | 논리적 추론, 코딩, 창의적 협업을 포함한 다양한 추론 작업에서 최고의 성능  |

    <Tip>
      Google의 Gemini 모델은 모두 멀티모달로, 오디오, 이미지, 비디오, 텍스트를 지원하며 컨텍스트 캐싱, JSON 스키마, 함수 호출 등을 지원한다.

      이 모델은 [The Gemini API](https://ai.google.dev/gemini-api/docs)와 [Google Cloud Vertex](https://cloud.google.com/vertex-ai/generative-ai/docs/migrate/migrate-google-ai)의 [Model Garden](https://cloud.google.com/vertex-ai/generative-ai/docs/model-garden/explore-models)을 통해 API\_KEY로 이용할 수 있다.
    </Tip>
  </Tab>

  <Tab title="Groq">
    | 모델               | 컨텍스트 윈도우   | 주요 용도            |
    | ---------------- | ---------- | ---------------- |
    | Llama 3.1 70B/8B | 131,072 토큰 | 고성능, 대용량 컨텍스트 작업 |
    | Llama 3.2 Series | 8,192 토큰   | 일반적인 작업          |
    | Mixtral 8x7B     | 32,768 토큰  | 균형 잡힌 성능과 컨텍스트   |

    <Tip>
      Groq는 빠른 추론 속도로 유명하며, 실시간 애플리케이션에 적합하다.
    </Tip>
  </Tab>

  <Tab title="SambaNova">
    | 모델               | 컨텍스트 윈도우      | 주요 용도            |
    | ---------------- | ------------- | ---------------- |
    | Llama 3.1 70B/8B | 최대 131,072 토큰 | 고성능, 대용량 컨텍스트 작업 |
    | Llama 3.1 405B   | 8,192 토큰      | 고성능 및 출력 품질      |
    | Llama 3.2 Series | 8,192 토큰      | 일반적인 작업, 멀티모달    |
    | Llama 3.3 70B    | 최대 131,072 토큰 | 고성능 및 출력 품질      |
    | Qwen2 familly    | 8,192 토큰      | 고성능 및 출력 품질      |

    <Tip>
      [SambaNova](https://cloud.sambanova.ai/)는 전체 정밀도에서 빠른 추론 속도를 제공하는 여러 모델을 보유하고 있다.
    </Tip>
  </Tab>

  <Tab title="Others">
    | 제공자           | 컨텍스트 윈도우   | 주요 기능         |
    | ------------- | ---------- | ------------- |
    | Deepseek Chat | 64,000 토큰  | 기술적 토론에 특화    |
    | Deepseek R1   | 64,000 토큰  | 경제적인 추론 모델    |
    | Claude 3      | 최대 200K 토큰 | 강력한 추론, 코드 이해 |
    | Gemma Series  | 8,192 토큰   | 효율적, 소규모 작업   |

    <Info>
      제공자 선택 시 다음 요소를 고려해야 한다:

      * 사용 가능한 API 지역
      * 가격 구조
      * 필요한 기능 (예: 스트리밍, 함수 호출)
      * 성능 요구 사항
    </Info>
  </Tab>
</Tabs>

## LLM 설정하기

CrewAI에서 LLM을 설정하는 방법은 세 가지다. 여러분의 작업 흐름에 가장 적합한 방법을 선택하면 된다:

<Tabs>
  <Tab title="1. 환경 변수">
    가장 간단한 시작 방법이다. 환경 변수를 다음과 같이 설정한다:

    ```bash theme={null}
    # 필수: 인증을 위한 API 키
    OPENAI_API_KEY=<your-api-key>

    # 선택: 기본 모델 선택
    OPENAI_MODEL_NAME=gpt-4o-mini  # 설정하지 않으면 기본값

    # 선택: 조직 ID (해당되는 경우)
    OPENAI_ORGANIZATION_ID=<your-org-id>
    ```

    <Warning>
      API 키를 버전 관리 시스템에 커밋하지 말자. 환경 파일(.env)이나 시스템의 비밀 관리 기능을 사용한다.
    </Warning>
  </Tab>

  <Tab title="2. YAML 설정">
    YAML 파일을 생성해 에이전트 설정을 정의한다. 이 방법은 버전 관리와 팀 협업에 적합하다:

    ```yaml theme={null}
    researcher:
        # 에이전트 정의
        role: Research Specialist
        goal: Conduct comprehensive research and analysis
        backstory: A dedicated research professional with years of experience
        verbose: true

        # 모델 선택 (원하는 것을 주석 해제)
        
        # OpenAI 모델 - 신뢰성과 성능으로 유명
        llm: openai/gpt-4o-mini
        # llm: openai/gpt-4        # 더 정확하지만 비쌈
        # llm: openai/gpt-4-turbo  # 빠르고 대용량 컨텍스트
        # llm: openai/gpt-4o       # 긴 텍스트에 최적화
        # llm: openai/o1-preview   # 최신 기능
        # llm: openai/o1-mini      # 비용 효율적

        # Azure 모델 - 엔터프라이즈 배포용
        # llm: azure/gpt-4o-mini
        # llm: azure/gpt-4
        # llm: azure/gpt-35-turbo

        # Anthropic 모델 - 강력한 추론 능력
        # llm: anthropic/claude-3-opus-20240229-v1:0
        # llm: anthropic/claude-3-sonnet-20240229-v1:0
        # llm: anthropic/claude-3-haiku-20240307-v1:0
        # llm: anthropic/claude-2.1
        # llm: anthropic/claude-2.0

        # Google 모델 - 강력한 추론, 대용량 캐시 가능 컨텍스트 윈도우, 멀티모달
        # llm: gemini/gemini-1.5-pro-latest
        # llm: gemini/gemini-1.5-flash-latest
        # llm: gemini/gemini-1.5-flash-8b-latest

        # AWS Bedrock 모델 - 엔터프라이즈급
        # llm: bedrock/anthropic.claude-3-sonnet-20240229-v1:0
        # llm: bedrock/anthropic.claude-v2:1
        # llm: bedrock/amazon.titan-text-express-v1
        # llm: bedrock/meta.llama2-70b-chat-v1

        # Amazon SageMaker 모델 - 엔터프라이즈급
        # llm: sagemaker/<my-endpoint>

        # Mistral 모델 - 오픈 소스 대안
        # llm: mistral/mistral-large-latest
        # llm: mistral/mistral-medium-latest
        # llm: mistral/mistral-small-latest

        # Groq 모델 - 빠른 추론
        # llm: groq/mixtral-8x7b-32768
        # llm: groq/llama-3.1-70b-versatile
        # llm: groq/llama-3.2-90b-text-preview
        # llm: groq/gemma2-9b-it
        # llm: groq/gemma-7b-it

        # IBM watsonx.ai 모델 - 엔터프라이즈 기능
        # llm: watsonx/ibm/granite-13b-chat-v2
        # llm: watsonx/meta-llama/llama-3-1-70b-instruct
        # llm: watsonx/bigcode/starcoder2-15b

        # Ollama 모델 - 로컬 배포
        # llm: ollama/llama3:70b
        # llm: ollama/codellama
        # llm: ollama/mistral
        # llm: ollama/mixtral
        # llm: ollama/phi

        # Fireworks AI 모델 - 특수 작업용
        # llm: fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct
        # llm: fireworks_ai/accounts/fireworks/models/mixtral-8x7b
        # llm: fireworks_ai/accounts/fireworks/models/zephyr-7b-beta

        # Perplexity AI 모델 - 연구 중심
        # llm: pplx/llama-3.1-sonar-large-128k-online
        # llm: pplx/mistral-7b-instruct
        # llm: pplx/codellama-34b-instruct
        # llm: pplx/mixtral-8x7b-instruct

        # Hugging Face 모델 - 커뮤니티 모델
        # llm: huggingface/meta-llama/Meta-Llama-3.1-8B-Instruct
        # llm: huggingface/mistralai/Mixtral-8x7B-Instruct-v0.1
        # llm: huggingface/tiiuae/falcon-180B-chat
        # llm: huggingface/google/gemma-7b-it

        # Nvidia NIM 모델 - GPU 최적화
        # llm: nvidia_nim/meta/llama3-70b-instruct
        # llm: nvidia_nim/mistral/mixtral-8x7b
        # llm: nvidia_nim/google/gemma-7b

        # SambaNova 모델 - 엔터프라이즈 AI
        # llm: sambanova/Meta-Llama-3.1-8B-Instruct
        # llm: sambanova/BioMistral-7B
        # llm: sambanova/Falcon-180B

        # Open Router 모델 - 경제적인 추론
        # llm: openrouter/deepseek/deepseek-r1
        # llm: openrouter/deepseek/deepseek-chat
    ```

    <Info>
      YAML 설정을 통해 다음을 할 수 있다:

      * 에이전트 설정을 버전 관리
      * 다양한 모델 간 쉽게 전환
      * 팀원 간 설정 공유
      * 모델 선택과 목적 문서화
    </Info>
  </Tab>

  <Tab title="3. 직접 코드">
    최대 유연성을 위해 Python 코드에서 직접 LLM을 설정한다:

    ```python theme={null}
    from crewai import LLM

    # 기본 설정
    llm = LLM(model="gpt-4")

    # 상세 매개변수를 포함한 고급 설정
    llm = LLM(
        model="gpt-4o-mini",
        temperature=0.7,        # 더 창의적인 출력을 위해 높임
        timeout=120,           # 응답 대기 시간(초)
        max_tokens=4000,       # 응답 최대 길이
        top_p=0.9,            # Nucleus 샘플링 매개변수
        frequency_penalty=0.1, # 단어 반복 감소
        presence_penalty=0.1,  # 새로운 주제 장려
        response_format={"type": "json"},  # 구조화된 출력
        seed=42               # 일관된 결과를 위한 시드
    )
    ```

    <Info>
      매개변수 설명:

      * `temperature`: 무작위성 제어 (0.0-1.0)
      * `timeout`: 응답 최대 대기 시간
      * `max_tokens`: 응답 길이 제한
      * `top_p`: 샘플링을 위한 temperature 대안
      * `frequency_penalty`: 단어 반복 감소
      * `presence_penalty`: 새로운 주제 장려
      * `response_format`: 출력 구조 지정
      * `seed`: 일관된 출력 보장
    </Info>
  </Tab>
</Tabs>

## 고급 기능과 최적화

LLM 설정을 최대한 활용하는 방법을 알아본다:

<AccordionGroup>
  <Accordion title="컨텍스트 윈도우 관리">
    CrewAI는 스마트 컨텍스트 관리 기능을 제공한다:

    ```python theme={null}
    from crewai import LLM

    # CrewAI가 자동으로 처리하는 사항:
    # 1. 토큰 계산 및 추적
    # 2. 필요 시 콘텐츠 요약
    # 3. 큰 컨텍스트에 대한 작업 분할

    llm = LLM(
        model="gpt-4",
        max_tokens=4000,  # 응답 길이 제한
    )
    ```

    <Info>
      컨텍스트 관리의 모범 사례:

      1. 적절한 컨텍스트 윈도우를 가진 모델 선택
      2. 가능한 경우 긴 입력 사전 처리
      3. 큰 문서에 대해 청킹 사용
      4. 토큰 사용량 모니터링하여 비용 최적화
    </Info>
  </Accordion>

  <Accordion title="성능 최적화">
    <Steps>
      <Step title="토큰 사용 최적화">
        작업에 맞는 적절한 컨텍스트 윈도우 선택:

        * 소규모 작업 (최대 4K 토큰): 표준 모델
        * 중간 규모 작업 (4K-32K 사이): 향상된 모델
        * 대규모 작업 (32K 이상): 큰 컨텍스트 모델

        ```python theme={null}
        # 적절한 설정으로 모델 구성
        llm = LLM(
            model="openai/gpt-4-turbo-preview",
            temperature=0.7,    # 작업에 따라 조정
            max_tokens=4096,    # 출력 필요에 따라 설정
            timeout=300        # 복잡한 작업을 위해 타임아웃 길게 설정
        )
        ```

        <Tip>
          * 사실적인 응답을 위해 낮은 온도 (0.1 \~ 0.3) 설정
          * 창의적인 작업을 위해 높은 온도 (0.7 \~ 0.9) 설정
        </Tip>
      </Step>

      <Step title="모범 사례">
        1. 토큰 사용량 모니터링
        2. 속도 제한 구현
        3. 가능한 경우 캐싱 사용
        4. 적절한 max\_tokens 제한 설정
      </Step>
    </Steps>

    <Info>
      비용과 성능을 최적화하기 위해 토큰 사용량을 정기적으로 모니터링하고 필요에 따라 설정을 조정한다.
    </Info>
  </Accordion>
</AccordionGroup>

## 프로바이더 설정 예제

<AccordionGroup>
  <Accordion title="OpenAI">
    ```python theme={null}
    # 필수
    OPENAI_API_KEY=sk-...

    # 선택 사항
    OPENAI_API_BASE=<custom-base-url>
    OPENAI_ORGANIZATION=<your-org-id>
    ```

    사용 예시:

    ```python theme={null}
    from crewai import LLM

    llm = LLM(
        model="gpt-4",
        temperature=0.8,
        max_tokens=150,
        top_p=0.9,
        frequency_penalty=0.1,
        presence_penalty=0.1,
        stop=["END"],
        seed=42
    )
    ```
  </Accordion>

  <Accordion title="Anthropic">
    ```python theme={null}
    ANTHROPIC_API_KEY=sk-ant-...
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="anthropic/claude-3-sonnet-20240229-v1:0",
        temperature=0.7
    )
    ```
  </Accordion>

  <Accordion title="Google">
    ```python theme={null}
    # 옵션 1: API 키로 Gemini 접근
    # https://ai.google.dev/gemini-api/docs/api-key
    GEMINI_API_KEY=<your-api-key>

    # 옵션 2: Vertex AI IAM 자격 증명으로 Gemini, Anthropic, Model Garden 접근
    # https://cloud.google.com/vertex-ai/generative-ai/docs/overview
    ```

    자격 증명 가져오기:

    ```python theme={null}
    import json

    file_path = 'path/to/vertex_ai_service_account.json'

    # JSON 파일 로드
    with open(file_path, 'r') as file:
        vertex_credentials = json.load(file)

    # 자격 증명을 JSON 문자열로 변환
    vertex_credentials_json = json.dumps(vertex_credentials)
    ```

    사용 예시:

    ```python theme={null}
    from crewai import LLM

    llm = LLM(
        model="gemini/gemini-1.5-pro-latest",
        temperature=0.7,
        vertex_credentials=vertex_credentials_json
    )
    ```
  </Accordion>

  <Accordion title="Azure">
    ```python theme={null}
    # 필수
    AZURE_API_KEY=<your-api-key>
    AZURE_API_BASE=<your-resource-url>
    AZURE_API_VERSION=<api-version>

    # 선택 사항
    AZURE_AD_TOKEN=<your-azure-ad-token>
    AZURE_API_TYPE=<your-azure-api-type>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="azure/gpt-4",
        api_version="2023-05-15"
    )
    ```
  </Accordion>

  <Accordion title="AWS Bedrock">
    ```python theme={null}
    AWS_ACCESS_KEY_ID=<your-access-key>
    AWS_SECRET_ACCESS_KEY=<your-secret-key>
    AWS_DEFAULT_REGION=<your-region>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="bedrock/anthropic.claude-3-sonnet-20240229-v1:0"
    )
    ```
  </Accordion>

  <Accordion title="Amazon SageMaker">
    ```python theme={null}
    AWS_ACCESS_KEY_ID=<your-access-key>
    AWS_SECRET_ACCESS_KEY=<your-secret-key>
    AWS_DEFAULT_REGION=<your-region>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="sagemaker/<my-endpoint>"
    )
    ```
  </Accordion>

  <Accordion title="Mistral">
    ```python theme={null}
    MISTRAL_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="mistral/mistral-large-latest",
        temperature=0.7
    )
    ```
  </Accordion>

  <Accordion title="Nvidia NIM">
    ```python theme={null}
    NVIDIA_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="nvidia_nim/meta/llama3-70b-instruct",
        temperature=0.7
    )
    ```
  </Accordion>

  <Accordion title="Groq">
    ```python theme={null}
    GROQ_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="groq/llama-3.2-90b-text-preview",
        temperature=0.7
    )
    ```
  </Accordion>

  <Accordion title="IBM watsonx.ai">
    ```python theme={null}
    # 필수
    WATSONX_URL=<your-url>
    WATSONX_APIKEY=<your-apikey>
    WATSONX_PROJECT_ID=<your-project-id>

    # 선택 사항
    WATSONX_TOKEN=<your-token>
    WATSONX_DEPLOYMENT_SPACE_ID=<your-space-id>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="watsonx/meta-llama/llama-3-1-70b-instruct",
        base_url="https://api.watsonx.ai/v1"
    )
    ```
  </Accordion>

  <Accordion title="Ollama (로컬 LLMs)">
    1. Ollama 설치: [ollama.ai](https://ollama.ai/)
    2. 모델 실행: `ollama run llama2`
    3. 설정:

    ```python theme={null}
    llm = LLM(
        model="ollama/llama3:70b",
        base_url="http://localhost:11434"
    )
    ```
  </Accordion>

  <Accordion title="Fireworks AI">
    ```python theme={null}
    FIREWORKS_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="fireworks_ai/accounts/fireworks/models/llama-v3-70b-instruct",
        temperature=0.7
    )
    ```
  </Accordion>

  <Accordion title="Perplexity AI">
    ```python theme={null}
    PERPLEXITY_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="llama-3.1-sonar-large-128k-online",
        base_url="https://api.perplexity.ai/"
    )
    ```
  </Accordion>

  <Accordion title="Hugging Face">
    ```python theme={null}
    HUGGINGFACE_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="huggingface/meta-llama/Meta-Llama-3.1-8B-Instruct",
        base_url="your_api_endpoint"
    )
    ```
  </Accordion>

  <Accordion title="SambaNova">
    ```python theme={null}
    SAMBANOVA_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="sambanova/Meta-Llama-3.1-8B-Instruct",
        temperature=0.7
    )
    ```
  </Accordion>

  <Accordion title="Cerebras">
    ```python theme={null}
    # 필수
    CEREBRAS_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="cerebras/llama3.1-70b",
        temperature=0.7,
        max_tokens=8192
    )
    ```

    <Info>
      Cerebras 특징:

      * 빠른 추론 속도
      * 경쟁력 있는 가격
      * 속도와 품질의 균형
      * 긴 컨텍스트 윈도우 지원
    </Info>
  </Accordion>

  <Accordion title="Open Router">
    ```python theme={null}
    OPENROUTER_API_KEY=<your-api-key>
    ```

    사용 예시:

    ```python theme={null}
    llm = LLM(
        model="openrouter/deepseek/deepseek-r1",
        base_url="https://openrouter.ai/api/v1",
        api_key=OPENROUTER_API_KEY
    )
    ```

    <Info>
      Open Router 모델:

      * openrouter/deepseek/deepseek-r1
      * openrouter/deepseek/deepseek-chat
    </Info>
  </Accordion>
</AccordionGroup>

## 구조화된 LLM 호출

CrewAI는 Pydantic 모델을 사용해 `response_format`을 정의할 수 있도록 지원한다. 이를 통해 프레임워크가 자동으로 출력을 파싱하고 검증할 수 있어, 응답을 수동으로 후처리하지 않고도 애플리케이션에 쉽게 통합할 수 있다.

예를 들어, 예상되는 응답 구조를 나타내는 Pydantic 모델을 정의하고, LLM을 인스턴스화할 때 `response_format`으로 전달할 수 있다. 이 모델은 LLM 출력을 구조화된 파이썬 객체로 변환하는 데 사용된다.

```python theme={null}
from crewai import LLM

class Dog(BaseModel):
    name: str
    age: int
    breed: str


llm = LLM(model="gpt-4o", response_format=Dog)

response = llm.call(
    "Analyze the following messages and return the name, age, and breed. "
    "Meet Kona! She is 3 years old and is a black german shepherd."
)
print(response)
```

## 일반적인 문제와 해결 방법

<Tabs>
  <Tab title="인증">
    <Warning>
      대부분의 인증 문제는 API 키 형식과 환경 변수 이름을 확인하면 해결할 수 있다.
    </Warning>

    ```bash theme={null}
    # OpenAI
    OPENAI_API_KEY=sk-...

    # Anthropic
    ANTHROPIC_API_KEY=sk-ant-...
    ```
  </Tab>

  <Tab title="모델 이름">
    <Check>
      모델 이름에는 항상 프로바이더 접두사를 포함한다.
    </Check>

    ```python theme={null}
    # 올바른 예
    llm = LLM(model="openai/gpt-4")

    # 잘못된 예
    llm = LLM(model="gpt-4")
    ```
  </Tab>

  <Tab title="컨텍스트 길이">
    <Tip>
      광범위한 작업에는 더 큰 컨텍스트 모델을 사용한다.
    </Tip>

    ```python theme={null}
    # 큰 컨텍스트 모델
    llm = LLM(model="openai/gpt-4o")  # 128K 토큰
    ```
  </Tab>
</Tabs>

## 도움 받기

도움이 필요하다면 다음 리소스를 활용할 수 있다:

<CardGroup cols={3}>
  <Card title="LiteLLM 문서" href="https://docs.litellm.ai/docs/" icon="book">
    LiteLLM 통합과 일반적인 문제 해결을 위한 포괄적인 문서
  </Card>

  <Card title="GitHub Issues" href="https://github.com/joaomdmoura/crewAI/issues" icon="bug">
    버그를 보고하거나 기능을 요청하고, 기존 이슈에서 해결책을 찾을 수 있다.
  </Card>

  <Card title="커뮤니티 포럼" href="https://community.crewai.com" icon="comment-question">
    다른 CrewAI 사용자와 소통하고 경험을 공유하며 커뮤니티에서 도움을 받을 수 있다.
  </Card>
</CardGroup>

<Note>
  API 키 보안을 위한 모범 사례:

  * 환경 변수나 보안 볼트를 사용한다
  * 버전 관리 시스템에 키를 절대 커밋하지 않는다
  * 키를 정기적으로 교체한다
  * 개발과 프로덕션 환경에서 별도의 키를 사용한다
  * 키 사용 패턴에서 비정상적인 활동을 모니터링한다
</Note>
