mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-07-05 06:59:23 +00:00
* feat: adopt directory-based docs versioning with Edge channel Switch docs.crewai.com from navigation-only versioning (every version selector entry rendered the same docs/<lang>/* source files) to Mintlify's directory-based versioning so each version selector entry renders its own snapshot. Add an "Edge" channel under docs/edge/<lang>/* that always reflects main HEAD for unreleased work, eliminating pre-release leakage onto frozen release labels. External links to canonical /<lang>/* URLs are preserved via wildcard redirects that always land on the current default version. Layout: - docs/edge/<lang>/* rolling source (you edit here) - docs/edge/enterprise-api.*.yaml - docs/v<X.Y.Z>/<lang>/* frozen, immutable snapshots - docs/v<X.Y.Z>/enterprise-api.*.yaml - docs/images/ shared, append-only - docs/docs.json nav + redirects URLs follow the Mintlify-idiomatic shape: /edge/<lang>/<page> for Edge, /v<X.Y.Z>/<lang>/<page> for every frozen snapshot. The wildcard redirects /<lang>/:slug* -> /<default>/<lang>/:slug* keep stale links working, and every freeze rewrites them (plus all per-section/per-page redirects) so destinations always resolve to the current default without depending on a second redirect hop. Release flow integration (devtools release): - New module crewai_devtools.docs_versioning.freeze() materialises docs/v<X.Y.Z>/ from docs/edge/, rewrites openapi: refs inside the snapshot, inserts the version into every language block in docs.json, and refreshes all redirect destinations. - _update_docs_and_create_pr() in cli.py now calls that freeze during Phase 2 of devtools release. Edge changelogs are updated first (so the snapshot freeze picks them up), then the snapshot is staged alongside docs.json, branched as docs/freeze-v<X.Y.Z>, and the PR is titled [docs-freeze] docs: snapshot and changelog for v<X.Y.Z> — the title prefix the new CI guard reads. - The PR still gates tag, GitHub release, PyPI publish, and the enterprise release as before; no new PRs are added. - Pre-releases (1.X.YaN, 1.X.YbN, ...) skip the snapshot — they ride Edge — and the docs PR title omits the [docs-freeze] prefix. - docs_check (AI-generated docs scaffolding) writes to docs/edge/<lang>/* so newly-generated unreleased docs land in Edge and never accidentally touch a frozen snapshot. Migration scripts (one-shot): - scripts/docs/freeze_historical_versions.py reconstructs all 16 historical snapshots (v1.10.0 .. v1.14.7) from git tags via git archive | tar, rewriting openapi: MDX refs so each snapshot reads its own enterprise-api YAML rather than the live one. - scripts/docs/prefix_version_paths.py one-shot-migrates docs.json: rewrites every page path in 16 versioned blocks to point under docs/v<X.Y.Z>/, inserts a new Edge entry per language, tags v1.14.7 as Latest (default), prunes pages whose target file doesn't exist in the snapshot (e.g. docs/ar/ didn't exist before v1.12.0), and writes the wildcard + per-section redirects. - scripts/docs/freeze_current_edge.py is now a thin CLI wrapper around docs_versioning.freeze for manual one-off freezes (e.g. retroactively snapshotting a forgotten release). CI guards (.github/workflows/docs-snapshots.yml): - Frozen snapshots under docs/v[0-9]*/ are immutable; only PRs whose title contains [docs-freeze] (i.e. release-cut PRs generated by devtools release or the manual wrapper) may modify them. - Images under docs/images/ are append-only since snapshots share a single image directory. Deleting or renaming an image breaks every historical snapshot that still references it. Restored docs/images/crewai-otel-export.png from PR #3673; it was deleted in PR #4908 but v1.10.0 / v1.10.1 snapshots still reference it. Restoring instead of editing the snapshots preserves historical rendering fidelity and validates the new append-only rule retroactively. Tests: - lib/devtools/tests/test_docs_versioning.py covers the freeze: file copy, openapi rewrite, version insertion, default demotion, redirect upserts, per-section redirect rewriting, idempotency, and invalid inputs. Verified locally with mintlify broken-links: 0 broken links across the full site (Edge + 16 frozen versions, 4 locales). AGENTS.md (repo root) is the contributor guide for the new model; RELEASING.md is the release-cut runbook; README's Contribution section links to both. Co-authored-by: Cursor <cursoragent@cursor.com> * style: resolve linter issues --------- Co-authored-by: Cursor <cursoragent@cursor.com>
213 lines
7.8 KiB
Plaintext
213 lines
7.8 KiB
Plaintext
---
|
|
title: Conecte-se a qualquer LLM
|
|
description: Guia abrangente sobre como integrar o CrewAI a diversos Large Language Models (LLMs) usando o LiteLLM, incluindo provedores compatíveis e opções de configuração.
|
|
icon: brain-circuit
|
|
mode: "wide"
|
|
---
|
|
|
|
## Conecte o CrewAI a LLMs
|
|
|
|
O CrewAI conecta-se a LLMs por meio de integrações nativas via SDK para os provedores mais populares (OpenAI, Anthropic, Google Gemini, Azure e AWS Bedrock), e usa o LiteLLM como alternativa flexível para todos os demais provedores.
|
|
|
|
<Note>
|
|
Por padrão, o CrewAI usa o modelo `gpt-4o-mini`. Isso é determinado pela variável de ambiente `OPENAI_MODEL_NAME`, que tem como padrão "gpt-4o-mini" se não for definida.
|
|
Você pode facilmente configurar seus agentes para usar um modelo ou provedor diferente, conforme descrito neste guia.
|
|
</Note>
|
|
|
|
## Provedores Compatíveis
|
|
|
|
O LiteLLM oferece suporte a uma ampla gama de provedores, incluindo, mas não se limitando a:
|
|
|
|
- OpenAI
|
|
- Anthropic
|
|
- Google (Vertex AI, Gemini)
|
|
- Azure OpenAI
|
|
- AWS (Bedrock, SageMaker)
|
|
- Cohere
|
|
- VoyageAI
|
|
- Hugging Face
|
|
- Ollama
|
|
- Mistral AI
|
|
- Replicate
|
|
- Together AI
|
|
- AI21
|
|
- Cloudflare Workers AI
|
|
- DeepInfra
|
|
- Groq
|
|
- SambaNova
|
|
- [NVIDIA NIMs](https://docs.api.nvidia.com/nim/reference/models-1)
|
|
- E muitos outros!
|
|
|
|
Para uma lista completa e sempre atualizada dos provedores suportados, consulte a [documentação de Provedores do LiteLLM](https://docs.litellm.ai/docs/providers).
|
|
|
|
<Info>
|
|
Para usar qualquer provedor não coberto por uma integração nativa, adicione o LiteLLM como dependência ao seu projeto:
|
|
```bash
|
|
uv add 'crewai[litellm]'
|
|
```
|
|
Provedores nativos (OpenAI, Anthropic, Google Gemini, Azure, AWS Bedrock) usam seus próprios extras de SDK — consulte os [Exemplos de Configuração de Provedores](/pt-BR/concepts/llms#exemplos-de-configuração-de-provedores).
|
|
</Info>
|
|
|
|
## Alterando a LLM
|
|
|
|
Para utilizar uma LLM diferente com seus agentes CrewAI, você tem várias opções:
|
|
|
|
<Tabs>
|
|
<Tab title="Usando um Identificador de String">
|
|
Passe o nome do modelo como uma string ao inicializar o agente:
|
|
<CodeGroup>
|
|
```python Code
|
|
from crewai import Agent
|
|
|
|
# Usando o GPT-4 da OpenAI
|
|
openai_agent = Agent(
|
|
role='OpenAI Expert',
|
|
goal='Provide insights using GPT-4',
|
|
backstory="An AI assistant powered by OpenAI's latest model.",
|
|
llm='gpt-4'
|
|
)
|
|
|
|
# Usando o Claude da Anthropic
|
|
claude_agent = Agent(
|
|
role='Anthropic Expert',
|
|
goal='Analyze data using Claude',
|
|
backstory="An AI assistant leveraging Anthropic's language model.",
|
|
llm='claude-2'
|
|
)
|
|
```
|
|
</CodeGroup>
|
|
</Tab>
|
|
<Tab title="Usando a Classe LLM">
|
|
Para uma configuração mais detalhada, utilize a classe LLM:
|
|
<CodeGroup>
|
|
```python Code
|
|
from crewai import Agent, LLM
|
|
|
|
llm = LLM(
|
|
model="gpt-4",
|
|
temperature=0.7,
|
|
base_url="https://api.openai.com/v1",
|
|
api_key="your-api-key-here"
|
|
)
|
|
|
|
agent = Agent(
|
|
role='Customized LLM Expert',
|
|
goal='Provide tailored responses',
|
|
backstory="An AI assistant with custom LLM settings.",
|
|
llm=llm
|
|
)
|
|
```
|
|
</CodeGroup>
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
## Opções de Configuração
|
|
|
|
Ao configurar uma LLM para o seu agente, você tem acesso a uma variedade de parâmetros:
|
|
|
|
| Parâmetro | Tipo | Descrição |
|
|
|:----------|:-----:|:-------------|
|
|
| **model** | `str` | O nome do modelo a ser utilizado (ex.: "gpt-4", "claude-2") |
|
|
| **temperature** | `float` | Controla o grau de aleatoriedade nas respostas (0.0 a 1.0) |
|
|
| **max_tokens** | `int` | Número máximo de tokens a serem gerados |
|
|
| **top_p** | `float` | Controla a diversidade das respostas (0.0 a 1.0) |
|
|
| **frequency_penalty** | `float` | Penaliza novos tokens com base na frequência em que já apareceram no texto |
|
|
| **presence_penalty** | `float` | Penaliza novos tokens com base na presença deles no texto até o momento |
|
|
| **stop** | `str`, `List[str]` | Sequência(s) que interrompem a geração do texto |
|
|
| **base_url** | `str` | URL base do endpoint da API |
|
|
| **api_key** | `str` | Sua chave de API para autenticação |
|
|
|
|
Para uma lista completa de parâmetros e suas respectivas descrições, consulte a documentação da classe LLM.
|
|
|
|
## Conectando-se a LLMs Compatíveis com OpenAI
|
|
|
|
Você pode se conectar a LLMs compatíveis com a OpenAI usando variáveis de ambiente ou definindo atributos específicos na classe LLM:
|
|
|
|
<Tabs>
|
|
<Tab title="Usando Variáveis de Ambiente">
|
|
<CodeGroup>
|
|
```python Generic
|
|
import os
|
|
|
|
os.environ["OPENAI_API_KEY"] = "your-api-key"
|
|
os.environ["OPENAI_API_BASE"] = "https://api.your-provider.com/v1"
|
|
os.environ["OPENAI_MODEL_NAME"] = "your-model-name"
|
|
```
|
|
|
|
```python Google
|
|
import os
|
|
|
|
# Exemplo usando a API compatível com OpenAI do Gemini.
|
|
os.environ["OPENAI_API_KEY"] = "your-gemini-key" # Deve começar com AIza...
|
|
os.environ["OPENAI_API_BASE"] = "https://generativelanguage.googleapis.com/v1beta/openai/"
|
|
os.environ["OPENAI_MODEL_NAME"] = "openai/gemini-2.0-flash" # Adicione aqui seu modelo do Gemini, sob openai/
|
|
```
|
|
</CodeGroup>
|
|
</Tab>
|
|
<Tab title="Usando Atributos da Classe LLM">
|
|
<CodeGroup>
|
|
```python Generic
|
|
llm = LLM(
|
|
model="custom-model-name",
|
|
api_key="your-api-key",
|
|
base_url="https://api.your-provider.com/v1"
|
|
)
|
|
agent = Agent(llm=llm, ...)
|
|
```
|
|
|
|
```python Google
|
|
# Exemplo usando a API compatível com OpenAI do Gemini
|
|
llm = LLM(
|
|
model="openai/gemini-2.0-flash",
|
|
base_url="https://generativelanguage.googleapis.com/v1beta/openai/",
|
|
api_key="your-gemini-key", # Deve começar com AIza...
|
|
)
|
|
agent = Agent(llm=llm, ...)
|
|
```
|
|
</CodeGroup>
|
|
</Tab>
|
|
</Tabs>
|
|
|
|
## Utilizando Modelos Locais com Ollama
|
|
|
|
Para modelos locais como os oferecidos pelo Ollama:
|
|
|
|
<Steps>
|
|
<Step title="Baixe e instale o Ollama">
|
|
[Clique aqui para baixar e instalar o Ollama](https://ollama.com/download)
|
|
</Step>
|
|
<Step title="Puxe o modelo desejado">
|
|
Por exemplo, execute `ollama pull llama3.2` para baixar o modelo.
|
|
</Step>
|
|
<Step title="Configure seu agente">
|
|
<CodeGroup>
|
|
```python Code
|
|
agent = Agent(
|
|
role='Local AI Expert',
|
|
goal='Process information using a local model',
|
|
backstory="An AI assistant running on local hardware.",
|
|
llm=LLM(model="ollama/llama3.2", base_url="http://localhost:11434")
|
|
)
|
|
```
|
|
</CodeGroup>
|
|
</Step>
|
|
</Steps>
|
|
|
|
## Alterando a URL Base da API
|
|
|
|
Você pode alterar a URL base da API para qualquer provedor de LLM definindo o parâmetro `base_url`:
|
|
|
|
```python Code
|
|
llm = LLM(
|
|
model="custom-model-name",
|
|
base_url="https://api.your-provider.com/v1",
|
|
api_key="your-api-key"
|
|
)
|
|
agent = Agent(llm=llm, ...)
|
|
```
|
|
|
|
Isso é particularmente útil ao trabalhar com APIs compatíveis com a OpenAI ou quando você precisa especificar um endpoint diferente para o provedor escolhido.
|
|
|
|
## Conclusão
|
|
|
|
Ao utilizar o LiteLLM, o CrewAI oferece integração transparente com uma vasta gama de LLMs. Essa flexibilidade permite que você escolha o modelo mais adequado para sua necessidade específica, seja priorizando desempenho, custo-benefício ou implantação local. Lembre-se de consultar a [documentação do LiteLLM](https://docs.litellm.ai/docs/) para obter as informações mais atualizadas sobre modelos suportados e opções de configuração. |