mirror of
https://github.com/crewAIInc/crewAI.git
synced 2026-01-09 08:08:32 +00:00
* docs: add pt-br translations Powered by a CrewAI Flow https://github.com/danielfsbarreto/docs_translator * Update mcp/overview.mdx brazilian docs Its en-US counterpart was updated after I did a pass, so now it includes the new section about @CrewBase
122 lines
3.0 KiB
Plaintext
122 lines
3.0 KiB
Plaintext
---
|
|
title: Implementação de LLM Personalizada
|
|
description: Aprenda a criar implementações personalizadas de LLM no CrewAI.
|
|
icon: code
|
|
---
|
|
|
|
## Visão Geral
|
|
|
|
O CrewAI oferece suporte a implementações personalizadas de LLM por meio da classe abstrata `BaseLLM`. Isso permite integrar qualquer provedor de LLM que não tenha suporte nativo no LiteLLM ou implementar mecanismos de autenticação personalizados.
|
|
|
|
## Início Rápido
|
|
|
|
Aqui está uma implementação mínima de LLM personalizada:
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
## Usando Seu LLM Personalizado
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
## Métodos Necessários
|
|
|
|
### Construtor: `__init__()`
|
|
|
|
**Crítico**: Você deve chamar `super().__init__(model, temperature)` com os parâmetros necessários:
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
### Método Abstrato: `call()`
|
|
|
|
O método `call()` é o núcleo da sua implementação de LLM. Ele deve:
|
|
|
|
- Aceitar mensagens (string ou lista de dicionários com 'role' e 'content')
|
|
- Retornar uma resposta como string
|
|
- Lidar com ferramentas e chamada de funções, se suportado
|
|
- Lançar exceções apropriadas para erros
|
|
|
|
### Métodos Opcionais
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
## Padrões Comuns
|
|
|
|
### Tratamento de Erros
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
### Autenticação Personalizada
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
### Suporte a Stop Words
|
|
|
|
O CrewAI adiciona automaticamente `"\nObservation:"` como stop word para controlar o comportamento do agente. Se o seu LLM suporta stop words:
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
Se o seu LLM não suporta stop words nativamente:
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
## Chamada de Funções
|
|
|
|
Se o seu LLM suporta chamada de funções, implemente o fluxo completo:
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
## Solução de Problemas
|
|
|
|
### Problemas Comuns
|
|
|
|
**Erros no Construtor**
|
|
```python
|
|
# ❌ Errado - parâmetros obrigatórios ausentes
|
|
def __init__(self, api_key: str):
|
|
super().__init__()
|
|
|
|
# ✅ Correto
|
|
def __init__(self, model: str, api_key: str, temperature: Optional[float] = None):
|
|
super().__init__(model=model, temperature=temperature)
|
|
```
|
|
|
|
**Chamada de Funções Não Funciona**
|
|
- Certifique-se de que `supports_function_calling()` retorna `True`
|
|
- Verifique se você lida com `tool_calls` na resposta
|
|
- Assegure-se de que o parâmetro `available_functions` está sendo corretamente utilizado
|
|
|
|
**Falhas de Autenticação**
|
|
- Verifique o formato e as permissões da chave de API
|
|
- Confira o formato do header de autenticação
|
|
- Certifique-se de que as URLs dos endpoints estão corretas
|
|
|
|
**Erros de Parsing de Resposta**
|
|
- Valide a estrutura da resposta antes de acessar campos aninhados
|
|
- Trate casos em que o content pode ser None
|
|
- Adicione tratamento de erros para respostas malformadas
|
|
|
|
## Testando Seu LLM Personalizado
|
|
|
|
```python
|
|
# (não traduzir blocos de código)
|
|
```
|
|
|
|
Este guia cobre o essencial para implementar LLMs personalizados no CrewAI. |