4.2 KiB
4.2 KiB
Plano de Unificação Jasmine & Capitão
Objetivo
Fundir as capacidades customizadas da "Jasmine" (RAG, Detecção de Intenção, Ferramentas Específicas) na estrutura nativa do "Capitão" (IA do Chatwoot). O resultado será um assistente único e poderoso ("Capitão") que possui toda a inteligência originalmente construída para a Jasmine.
Arquitetura
1. Estratégia de Modelo de Dados
Adoção: Transição dos modelos Jasmine::* para modelos Captain::*.
Jasmine::InboxConfig->Captain::Assistant(já suporta configuração)Jasmine::Document->Captain::Document(suporte nativo a RAG)Jasmine::UnknownIntent->Captain::AssistantResponse(para FAQs pendentes)
2. Integração de Lógica
Portabilidade do BrainService:
A lógica central do Jasmine::BrainService (Detecção de Intenção + Seleção de Estratégia) será integrada ao Captain::Llm::ResponseService (ou equivalente).
- Detecção de Intenção: Implementar como uma etapa no pipeline de processamento do Capitão.
- Estratégia RAG: Usar as capacidades existentes de
KnowledgeBasedo Capitão, mas aprimoradas com a lógica de "Playbook" da Jasmine.
3. Unificação de Ferramentas
Migração de Ferramentas:
Jasmine::ToolConfig->Captain::CustomTool- Garantir que o executor de ferramentas do Capitão suporte as integrações de API específicas que a Jasmine usava (reservas de hotel, etc.).
4. Regras de Ouro (Cérebro Jasmine)
⚠️ RAG do Capitão vs Jasmine:
- A lógica RAG da Jasmine prevalece.
- Obrigatório uso de threshold por distância.
- Brain decide se busca RAG, não o LLM.
⚠️ Playbook vs System Prompt:
- No Capitão, o campo
instructionsserá logicamente dividido:- System Prompt (Identidade fixa)
- Playbook (Estratégia operacional montada pelo Brain)
⚠️ Ferramentas Críticas:
- Ferramentas de negócio (reservas, fotos, escalar) NÃO usam function calling do LLM.
- São executadas pelo Brain antes do LLM.
5. Ordem Obrigatória de Execução
- Verificar etiqueta
desligar_ia - Rodar Brain (intenção + estratégia)
- Executar ferramenta (se houver - ToolRunner não-nativo)
- Buscar RAG (se obrigatório pela estratégia)
- Montar prompt (com Playbook + Contexto + Output Normalizado)
- Chamar LLM (apenas para redação final)
- Atualizar estado/etiquetas
Passos de Implementação
Fase 1: Exploração e Mapeamento (Atual)
- Identificar modelos do Capitão (
Captain::Assistant,Captain::Document) - Identificar serviços do Capitão (
Captain::Llm::*,Captain::Tools::*)
Fase 2: Brain Layer Implementation (Concluída)
- Schema: Criada tabela
captain_tool_configs(indexada por conta/inbox/tool). - Serviços: Criados
JasmineBrain,ToolRunner,Definitions,StatusParser. - Injeção:
AssistantChatServicemodificado para consultar o Brain antes do LLM. - Lógica: Implementada lógica de "Stop AI" (
desligar_ia) e Webhooks.
Fase 3: Integração de Ferramentas (UI)
- Backend: Criar API para gerenciar configurações de ferramentas (
CaptainToolConfig). - Frontend: Adicionar aba "Ferramentas" nas configurações do Assistente Capitão.
- Frontend: Criar formulário dinâmico que lista as ferramentas disponíveis (
DEFINITIONS) e permite configuração por Inbox (Ativar/Desativar, URL, Credenciais).
Fase 4: Unificação Frontend
- Usar UI do Capitão: Direcionar o usuário para usar a aba "Assistentes" (Capitão).
- Ocultar Aba Jasmine: Remover o painel customizado da Jasmine assim que a funcionalidade for equiparada.
Ações Necessárias do Usuário
- Criar um Assistente: Usar a UI do Capitão para criar um novo Assistente.
- Habilitar Ferramentas: Configurar as ferramentas de API dentro desse Assistente.
- Upload de Docs: Re-enviar a base de conhecimento (PDF/Texto) para o Assistente Capitão.
Benefícios
- Interface Única: Sem alternância entre "Jasmine" e "Capitão".
- Recursos Nativos: Beneficiar-se das atualizações futuras de IA do Chatwoot.
- Manutenibilidade: Menos código customizado para manter.