Skip to content

IA: agentes e motor

O Melis inclui um motor de IA que lhe permite construir agentes — fluxos de trabalho de IA programados e com múltiplos passos — e disponibilizá-los em qualquer parte do back-office ou nos seus próprios módulos. Diferentes fornecedores (Anthropic Claude, Google Gemini, Ollama, OCI) integram-se por trás de um único motor.

Os módulos envolvidos: melis-ai (ferramentas React no back-office + o Assistente de IA global), melis-ai-engine (o motor e a interface de chat partilhada), melis-ai-engine-claude / melis-ai-engine-gemini (fornecedores) e melis-ai-community-extensions (agentes de exemplo prontos a usar).

Na v6 a framework e os módulos permanecem inalterados; o que mudou foi o back-office, agora uma interface React em /melis-react. A lógica de IA continua no lado do servidor — o React é apresentação mais chamadas de API.

Conceitos essenciais

ConceitoO que éTabela
Empresa / fornecedorO fornecedor de IA (Anthropic, Google…).melis_ai_companies
ModeloUm modelo concreto de uma empresa (por exemplo, um modelo Claude ou Gemini).melis_ai_models (mam_generative_model)
Chave de plataformaA chave de API usada para chamar um fornecedor.melis_ai_platform_keys
AgenteUm fluxo de trabalho = uma lista ordenada de passos de cenário.melis_ai_agents, melis_ai_scenario_steps
InstânciaUm identificador reutilizável e nomeado para executar um agente (usado como o id da sessão de chat).melis_ai_instances (mai_instance_id)
Utilização diáriaContabilização de tokens/utilização por modelo/agente/instância.melis_ai_daily_usage

Um agente é um cenário: uma sequência de passos como ENTRY PARAMS, AI CONTEXT, AI CHAT, CODE, EXIT PARAMS. O motor percorre os passos, chama o modelo quando necessário e produz uma resposta final — opcionalmente escrevendo-a de volta na página que o iniciou (através de parâmetros de saída).

Fornecedores

O motor escolhe um fornecedor a partir do nome da empresa do modelo (MelisAIEngine\Service\MelisAIEngineService::getActiveModelClass()):

  • a empresa contém "Anthropic"MelisAIEngineModelClaudeService (módulo melis-ai-engine-claude)
  • a empresa contém "Google"MelisAIEngineModelGeminiService (módulo melis-ai-engine-gemini)
  • além de módulos de fornecedor Ollama (local) e OCI (OCI GenAI) que seguem o mesmo contrato

Cada fornecedor estende o MelisAIEngineModelService do melis-ai-engine e implementa o mesmo contrato (setClient(), formatação de payload/mensagens, chamadas de ferramentas). Adicionar um novo fornecedor significa adicionar um módulo com o seu próprio serviço de modelo — sem alterações ao motor. Os fornecedores não têm interface própria: instalar um alimenta o catálogo com a sua empresa + modelos, que depois aparecem como opções na administração do MelisAI.

Onde reside no back-office React

Em /melis-react, o MelisAI inclui um pacote de bricks que expõe três ferramentas nativas em React na barra lateral esquerda, na secção Melis AIAdmin, AI Agents, MCP Inspectoralém de uma sobreposição global do Assistente de IA. Cada ferramenta de menu tem um alternador New / Old: New é a interface React, Old abre a ferramenta clássica num iframe.

A secção de menu do Melis AI

As ferramentas aparecem apenas quando o MelisAI está ativo. Uma quarta entrada — AI Tool Creator — é fornecida por um módulo diferente (melis-ai-tool-creator).

Configurá-lo (Admin)

Abra Melis AI → Admin. Um único alternador New/Old aplica-se a toda a ferramenta; a vista React é uma estrutura de separadores — Usage · Platform AI · Instances · MCP Server · Chat dev tool — com um único Save para o separador ativo.

  • Platform AI — escolha uma Company + Model, cole a(s) chave(s) de API (melis_ai_platform_keys) e defina a plataforma como Active + Default. Um modelo tem de ter uma chave para estar ativo. O painel à direita gere os carregamentos de ficheiros — incluindo Upload mode: File API vs Embed in request (o Gemini usa por predefinição a File API, o Claude o embed).

    Admin → Platform AI

  • Instances — gira as instâncias nomeadas usadas para iniciar agentes. A tabela lista o Name ID de cada instância (o mai_instance_id) e o agente associado; + New instance abre um formulário React (Name, Instance ID, Status, Agent, rótulo por idioma).

    Admin → Instances

  • Usage — consumo de tokens/consultas, total e por instância, ao longo de um intervalo selecionável.

  • MCP Server — escolha que funções MCP o servidor expõe e marque as tabelas sensíveis.

  • Chat dev tool — uma consola de chat para programadores que mostra o payload de IA em bruto e a resposta lado a lado; a forma mais rápida de ver o que o modelo realmente recebeu e respondeu.

Construir um agente (AI Agents)

Em Melis AI → AI Agents constrói o cenário de um agente. A lista mostra os agentes fornecidos com a respetiva contagem de passos e número de chamadas ao longo do tempo; abrir um adiciona um sub-separador com um editor de cinco separadores — Config · AI Tools · DB Rights · Scenario · Run.

Lista de AI Agents

  • Config — nome, código, descrição, uma substituição opcional de modelo e alternadores de carregamento de ficheiros.

  • AI Tools — assinale as ferramentas que este agente pode chamar, agrupadas em MCP tools e Local tools; o motor oferece então exatamente essas ao modelo.

  • DB Rights — leitura / escrita / eliminação / drop por tabela, além de um interruptor global Allow table creation. A escrita, a eliminação de linhas e o drop são irreversíveis.

  • Scenario — os passos ordenados e tipados: ENTRY PARAMS → um ou mais AI CONTEXT (sistema/conhecimento silencioso) → AI CHAT (o turno visível) → EXIT PARAMS, com passos CODE opcionais. Arraste para reordenar; cada passo tem um Code que referencia com [CODE] para trazer a resposta de um passo anterior para um prompt posterior.

    Agente → Scenario

  • Run — um chat de teste em direto contra o agente (a instância agenttool), para que possa iterar sobre o cenário e as ferramentas sem sair do editor.

O Assistente de IA

O Assistente de IA global é um botão flutuante no canto inferior direito de todos os ecrãs (não tem entrada de menu). Abre um painel de chat que executa o Main Chat Assistant geral (instância mainchatassistantgeneral) e pode conduzir o back-office — abrir uma ferramenta, abrir uma página — diretamente a partir da conversa. Mantém-se montado ao longo das navegações, pelo que uma sessão aberta sobrevive à mudança de ferramenta.

Painel do Assistente de IA aberto

Usar um agente a partir do seu código

A integração mais simples no lado do servidor continua a ser o view helper AIChatViewHelper (melis-ai-engine/src/View/Helper/MelisAIChatViewHelper.php). Coloque-o numa vista .phtml para apresentar um chat pronto a usar associado a uma instância:

php
<?= $this->AIChatViewHelper(
    $maiInstanceId,        // instance id from melis_ai_instances.mai_instance_id
    $agentId = null,       // optional explicit agent id
    $extraEntryParams = [],// custom_text / custom_files / custom_data
    $debugMode = false,
    $exitParamArr = []     // where to write the result back (fields, js/route callbacks)
) ?>

Um padrão comum é delimitar a sessão por objeto acrescentando um id ao sufixo do id da instância, por exemplo "newscontentcreator|".$newsId — para que cada notícia mantenha a sua própria conversa.

No back-office React, o equivalente é o componente AiChatContainer exportado pelo melis-ai-engine (através do alias Vite @melis-ai-engine). Monte-o com um maiInstanceId e ele executa todo o ciclo init → run → (continue×N) → validate contra os endpoints /melis/react-api/ai-engine/* — sem necessidade de trabalho no backend:

tsx
import { AiChatContainer } from '@melis-ai-engine'

<AiChatContainer maiInstanceId="newscontentcreator|42" clearSession autoRun />

Exemplo real

O melis-ai-community-extensions inclui agentes funcionais — por exemplo, um news content creator que recebe um prompt + imagens e escreve o texto gerado de volta no formulário de notícias através de um callback de saída. Leia vendor/melisplatform/melis-ai-community-extensions/src/Controller/NewsController.php para ver o helper usado de ponta a ponta.

Programaticamente, o motor é conduzido através do MelisAIEngine\Service\MelisAIEngineAgentService (runAgent(), validateAnswer(), continueConversation(), restartAgent(), getFinalAnswer()), construído por agente + instância, com o estado da conversa persistido num armazenamento suportado por base de dados (MelisAIEngineConversationStore) em vez de sessões PHP. Tanto o view helper clássico como o contentor de chat React chamam este mesmo serviço.

Ferramentas

Os agentes podem chamar ferramentas (funções) durante uma execução — incluindo ferramentas MCP para operações de ficheiros e base de dados. Use o MCP Inspector (Melis AI → MCP Inspector) para confirmar que um servidor está a funcionar e que as suas ferramentas são detetáveis antes de as permitir num agente. Consulte a página dedicada MCP.

Ficheiros essenciais

AssuntoCaminho
Serviço do motorvendor/melisplatform/melis-ai-engine/src/Service/MelisAIEngineService.php
Execução de agentesvendor/melisplatform/melis-ai-engine/src/Service/MelisAIEngineAgentService.php
View helper de chatvendor/melisplatform/melis-ai-engine/src/View/Helper/MelisAIChatViewHelper.php
Contentor de chat Reactvendor/melisplatform/melis-ai-engine/ui-react/src/AiChatContainer.tsx
Backend de chat Reactvendor/melisplatform/melis-ai-engine/src/Controller/React/MelisReactApiAiEngineController.php
Fornecedor Claudevendor/melisplatform/melis-ai-engine-claude/src/Service/MelisAIEngineModelClaudeService.php
Fornecedor Geminivendor/melisplatform/melis-ai-engine-gemini/src/Service/MelisAIEngineModelGeminiService.php
Bricks do back-office Reactvendor/melisplatform/melis-ai/ui-react/src/
Agentes de exemplovendor/melisplatform/melis-ai-community-extensions/

Para o back-office clássico (iframe) de qualquer uma destas ferramentas, use o alternador Old de cada ferramenta — o comportamento legado está documentado em /legacy. Leia o código dos módulos para a API exata e atual — consulte a Referência de módulos.