IA

Os recursos de IA do Antimatter usam modelos de sua escolha: um provedor de nuvem ou um servidor na sua própria rede. Nada é enviado a lugar nenhum até que você configure um modelo. Esta página aborda as conexões de modelos, cada recurso, os dados que ele envia e como desativá-lo.

Os recursos de IA

RecursoConfigurado emTipo de modeloAtivado por padrão
Reescrita no compositor: melhore, encurte, corrija ou traduza uma mensagem antes de enviá-laIA › Recursos integrados, com uma conexão de modeloUm modelo de chat (LLM)não
Resumos: resumos dos canais escolhidos pelas pessoasIA › Recursos integrados, com uma conexão de modeloUm modelo de chat (LLM)não
Tradução automática de canaisConfiguração do Site › RegionalizaçãoUma conexão de modelo, LibreTranslate ou uma API compatível com OpenAInão
Leitura em voz altaIntegrações › Texto para Fala, opcionalmente com uma conexão de modeloConversão de texto em fala, compatível com OpenAInão
Agentes de IA: converse com um bot, resumos de tópicos, resumos de chamadasO aplicativo AgentesQualquer serviço de modelo de linguagem grande (LLM)O aplicativo está ativado, mas não faz nada até que você adicione um serviço
Transcrições de chamadas e legendas ao vivoO aplicativo ChamadasConversão de fala em texto, compatível com OpenAInão

"Compatível com OpenAI" significa um servidor que oferece a mesma API HTTP que a OpenAI. A maioria dos servidores de modelos que você pode executar por conta própria o faz (por exemplo, Ollama, vLLM, o servidor do llama.cpp, ou servidores de Whisper e texto para fala), assim como muitos provedores de nuvem e gateways, como LiteLLM ou OpenRouter. Nenhuma licença é necessária para nenhum desses recursos.

Os recursos integrados (reescrita, resumos, tradução e leitura em voz alta) não precisam do aplicativo Agentes: eles usam as conexões de modelos que você adiciona no Console do Sistema.

Conexões de modelos

Uma conexão de modelo é um provedor de IA que o Antimatter pode chamar: seu endereço, sua chave e seus modelos. Você a adiciona uma vez e, em seguida, a seleciona para cada recurso que deve usá-la. Existem dois tipos:

  • Conexões em nível de servidor, gerenciadas por administradores do sistema em Console do Sistema › IA › Conexões de modelos. Somente elas podem atender aos recursos integrados. Os aplicativos também podem usá-las, para as pessoas autorizadas.
  • Conexões de comunidade, que os administradores de uma comunidade adicionam para a própria comunidade nas configurações da comunidade (veja abaixo). Os aplicativos as usam para as pessoas da comunidade. Elas nunca atendem aos recursos integrados.

A seção IA do Console do Sistema é exibida para as pessoas que podem gerenciar as conexões em nível de servidor: administradores do sistema, por padrão. Sua página Conexões de modelos lista as conexões em nível de servidor e as de todas as comunidades.

Adicionar uma conexão

Em Console do Sistema › IA › Conexões de modelos, clique em Adicionar uma conexão e, em seguida, preencha o formulário:

CampoO que inserir
PredefiniçõesPreenche o provedor e o endereço de um serviço bem conhecido: OpenAI, Mistral, Gemini, OpenRouter, ou Ollama e LiteLLM no próprio servidor. Opcional.
NomeO nome que os administradores veem ao selecioná-lo, por exemplo "OpenAI da Empresa".
ProvedorCompatível com OpenAI (a maioria dos provedores, gateways e servidores de modelos que você executa) ou Anthropic. Serviços em nuvem com login próprio, como AWS Bedrock, Google Vertex AI ou Azure com Entra ID, usam seu endpoint compatível com OpenAI ou um gateway como o LiteLLM.
URL baseO endereço da API, incluindo /v1, por exemplo http://ollama:11434/v1. Se deixado vazio, usa o padrão do provedor (https://api.openai.com/v1 ou https://api.anthropic.com/v1).
Chave de APIA chave do provedor. Deixe vazio se o endpoint não exigir. Ela é armazenada de forma criptografada e nunca exibida novamente: o formulário mostra apenas os últimos quatro caracteres e oferece opções para manter, substituir ou remover.
Cabeçalhos extrasCabeçalhos para enviar com cada requisição, para gateways que os exigem. Seus valores são armazenados de forma criptografada, como a chave, e nunca exibidos novamente: para alterá-los, digite todos novamente.
ModelosO modelo usado para cada capacidade quando um recurso ou aplicativo não especifica um: Chat, Embeddings, Transcrição e Decisões. Carregar modelos lista os modelos oferecidos pelo endpoint. Deixe uma capacidade vazia se o endpoint não a oferecer. Conexões Anthropic apenas fazem chat.
API de DecisõesComo o modelo de decisões é chamado: Decisões OpenAI ou SystemOne. Importante apenas para aplicativos que solicitam decisões.
LimitesVeja Limites e orçamentos.
ComunidadesSomente conexões em nível de servidor. Todas as comunidades: utilizável em todas as comunidades, bem como em mensagens diretas e de grupo. Caso contrário, apenas nas comunidades que você escolher.
Quem pode usarTodos onde estiver utilizável, ou apenas as equipes (grupos de pessoas dentro de uma comunidade) e os papéis que você escolher (Administradores do sistema, Administradores da comunidade). Convidados também permite que convidados usem; sem isso, eles não podem, mesmo com Todos.

Testar Conexão verifica o endereço e a chave: o servidor solicita os modelos ao endpoint ou envia um chat de um token. Um endereço alterado é testado com a chave salva apenas após salvar, ou se você digitar a chave novamente. Clique em Adicionar conexão para salvar.

O servidor faz as solicitações por conta própria, portanto, ele deve conseguir acessar a API: um servidor de modelo no mesmo projeto compose, na sua rede ou na Internet. As solicitações de saída respeitam as variáveis HTTP_PROXY e HTTPS_PROXY.

Ao excluir uma conexão, sua chave é descartada. Os recursos que a utilizavam deixam de usar IA até que você selecione outra conexão.

Limites e orçamentos

Cada conexão possui quatro limites. Valores vazios ou 0 significam sem limite.

  • Solicitações por minuto e Por pessoa, solicitações por minuto. Eles são contados separadamente por cada servidor: um cluster de três servidores permite até três vezes a taxa.
  • Tokens por mês e Por pessoa, tokens por mês: orçamentos de tokens, por mês civil (UTC), contados no banco de dados para todo o cluster. Várias solicitações executadas ao mesmo tempo podem ultrapassar ligeiramente um orçamento.

Os limites por pessoa também se aplicam à reescrita e aos resumos: eles são descontados da pessoa que reescreve ou que é a proprietária do resumo.

Uso

A lista mostra o uso de cada conexão neste mês. Uso abre os detalhes: tokens de entrada e saída, solicitações, o orçamento mensal, o uso por dia (UTC) e por finalidade (Reescrever, Resumos, Tradução automática, Texto para Fala, Pessoas, por meio de aplicativos ou um aplicativo).

Toda chamada feita por uma pessoa ou aplicativo por meio de uma conexão também grava um registro de auditoria: quem, a conexão, a finalidade, o modelo, as contagens de tokens e se funcionou, nunca o que foi dito. Os recursos integrados são contados apenas no uso: a tradução sozinha faz uma chamada por mensagem e idioma.

Conexões da comunidade

Administradores de comunidade adicionam as próprias conexões da comunidade nas configurações da comunidade, na aba Conexões de modelos. O formulário é o mesmo, sem Comunidades: a conexão de uma comunidade funciona apenas nos próprios canais, para os próprios membros, e seu público só pode nomear as próprias equipes. Papéis com a permissão Gerenciar conexões de modelos também podem gerenciá-las. Por padrão, os administradores de comunidade possuem essa permissão.

A conexão de uma comunidade não pode acessar endereços privados ou de loopback (um servidor Ollama na sua rede, por exemplo), a menos que Console do Sistema › Ambiente › Desenvolvedor › Permitir conexão interna não confiável (ServiceSettings.AllowedUntrustedInternalConnections) os liste. As conexões de todo o servidor podem.

Veja Configurações da comunidade para a perspectiva dos administradores de comunidade.

A chave de criptografia

As chaves e os cabeçalhos extras das conexões de modelos são criptografados no banco de dados (AES-256-GCM) com uma única chave de criptografia. Um backup do banco de dados por si só não os revela. O servidor localiza a chave nesta ordem:

  1. A variável AM_AI_ENCRYPTION_KEY: 32 bytes aleatórios, em base64. Crie uma com openssl rand -base64 32.
  2. Caso contrário, o arquivo ai-encryption.key na raiz do diretório de dados do servidor (FileSettings.Directory, ./data/ por padrão). O servidor o cria, legível apenas por ele, na primeira vez que uma conexão precisa dele. Aplicativos, exportações e arquivos de compactação não conseguem lê-lo.
Sem a chave, as chaves de API salvas não podem ser lidas, e cada conexão precisa ter sua chave informada novamente. Faça o backup da chave junto com o banco de dados (veja Backups and upgrades) e mantenha-a separada dos backups do banco de dados.

Quando definir a variável:

  • Com o arquivo compose do site. O compose.yaml passa AM_AI_ENCRYPTION_KEY a partir do .env e mantém o arquivo de chave no volume data quando a variável está vazia. Definir a variável é melhor: o backup do .env então contém a chave, separada do banco de dados. Adicione-a ao .env e execute docker compose up -d:
    echo "AM_AI_ENCRYPTION_KEY=$(openssl rand -base64 32)" >> .env
    Se o servidor já criou seu arquivo de chave, coloque a chave que ele contém no .env em vez disso, para que as chaves salvas permaneçam legíveis: docker compose exec antimatter cat /antimatter/data/ai-encryption.key a exibe.
  • Um cluster cujos arquivos estão no S3. Seus servidores não compartilham um diretório, então o servidor não cria o arquivo: defina a mesma variável em todos os servidores. Até que seja definida, as conexões não podem salvar chaves.
  • Com o arquivo de liberação ou os pacotes, o arquivo está em data/ (/var/lib/antimatter/data para os pacotes). Você pode mantê-lo lá ou definir a variável no seu arquivo de ambiente.

Para alterar a chave, defina a nova em AM_AI_ENCRYPTION_KEY e a antiga em AM_AI_ENCRYPTION_PREVIOUS_KEYS (várias chaves separadas por vírgulas): as chaves salvas com a antiga ainda podem ser lidas. A chave de uma conexão é criptografada com a nova chave quando você a digita novamente. Mantenha a chave antiga na lista até que a chave de cada conexão tenha sido digitada novamente.

Os recursos integrados

Em Console do Sistema › IA › Recursos integrados, selecione para cada recurso uma conexão global do servidor e seu modelo, ou Desligado. Um recurso sem conexão não usa IA. Carregar modelos lista todos os modelos da conexão; por padrão, cada recurso usa o modelo de chat da conexão.

RecursoConfiguraçãoO que mais é necessário
Reescrever no compositor: o menu de IA da caixa de mensagem (melhorar, encurtar, corrigir, traduzir)AISettings.RewriteNada: o menu aparece assim que uma conexão é selecionada.
Resumos: resumos dos canais escolhidos pelas pessoas, sob demanda ou em um agendamentoAISettings.RecapsAtivar resumos de IA em Console do Sistema › Configuração do Site › Resumos (ativado por padrão), o que também define quantos resumos as pessoas podem criar.
Tradução automáticaAISettings.AutoTranslationO provedor de tradução Conexão de modelo (recomendado), em Tradução automática.
Texto para FalaAISettings.TextToSpeechLer mensagens em voz alta ativado, em Texto para Fala. O endpoint /audio/speech da conexão substitui o endereço e a chave definidos lá.

Cada configuração tem uma chave ConnectionId e uma chave Model, por exemplo AISettings.Rewrite.ConnectionId (AM_AISETTINGS_REWRITE_CONNECTIONID). Um Model vazio usa o modelo padrão da conexão.

Os recursos integrados usam os limites da conexão, mas não seu público: qualquer pessoa que possa usar o recurso pode usar sua conexão. Uma conexão que precisa de atenção, ou que foi excluída, faz o recurso falhar até que você selecione outra: a página informa isso.

Agentes de IA

O aplicativo Agentes (id mattermost-ai) está ativado por padrão. A configuração dele requer duas etapas: adicione um serviço (uma conexão com um provedor de modelos) e, em seguida, crie agentes (bots que usam um serviço).

The Agents panel on the right of a channel: a user asked about an incident and the agent answered with a summary of the related threads.
Um agente respondendo no painel de Agentes.
Os agentes do aplicativo Agentes ainda usam os próprios Serviços de IA do aplicativo, não as conexões de modelo. Os recursos integrados não passam mais pelo aplicativo. Em um servidor atualizado para 0.9.0, os serviços do aplicativo também foram copiados uma vez para as conexões de modelo globais do servidor (veja Atualização para 0.9.0).

1. Adicionar um serviço

Vá para Console do Sistema › Plugins › Agentes e, em Serviços de IA, clique em Adicionar um Serviço de IA. Escolha o Tipo de serviço:

  • Compatível com OpenAI: para um servidor de modelos que você executa por conta própria, ou qualquer provedor com uma API no estilo OpenAI. Preencha URL da API (por exemplo, http://ollama:11434/v1 ou http://vllm.internal:8000/v1) e Chave de API apenas se o servidor exigir uma. Se o servidor só suporta a API de Completions de Chat, desative Usar API de Respostas.
  • OpenAI, Anthropic, Google Gemini, Google Vertex AI, AWS Bedrock, Azure, Cohere, Mistral: provedores hospedados. Cada um exige sua Chave de API (Bedrock: uma região da AWS e credenciais ou uma função IAM; Vertex AI: um projeto, uma região e uma conta de serviço; Azure: também a URL da API).

Em seguida, defina o Modelo padrão (uma lista quando o provedor puder informar seus modelos, caso contrário, digite o nome) e, se o provedor não os informar, o Limite de tokens de entrada e o Limite de tokens de saída. Um Serviço de reserva pode assumir quando este falhar. Salve.

O servidor faz essas solicitações por conta própria, portanto, ele deve ter acesso à API: um servidor de modelos no mesmo projeto compose, na sua rede ou na Internet. As solicitações de saída respeitam as variáveis HTTP_PROXY e HTTPS_PROXY.

2. Criar agentes

Os agentes são criados na página Agentes do aplicativo web: abra-a com Gerenciar no seletor de agentes do painel de Agentes (na interface clássica, também pelo menu do produto). Seu endereço é https://chat.example.com/plug/mattermost-ai/agents. Cada agente tem um Nome de Exibição, um Nome de Usuário do Agente (como as pessoas fazem menção a ele), um Serviço e, opcionalmente, um modelo, Instruções Personalizadas e alternadores para Ativar Visão (imagens) e Ativar Ferramentas. A aba Acesso limita em quais canais ele pode ser usado e quais usuários podem usá-lo. Em Funções de IA no Console do Sistema, Bot padrão escolhe o agente usado quando nenhum é selecionado, por exemplo, para resumos de chamadas.

Por padrão, todos os usuários podem criar seus próprios agentes, com os serviços que você configurou. Para restringir isso aos administradores, remova a permissão Gerenciar próprios agentes de IA do papel dos membros em Console do Sistema › Gestão de Usuários › Permissões.

Recursos opcionais do aplicativo Agentes

  • Busca de incorporação (experimental, desativado): busca semântica em mensagens. Requer PostgreSQL com a extensão pgvector e um modelo de incorporação (OpenAI ou compatível com OpenAI). Ele envia toda mensagem para o modelo de incorporação, incluindo canais privados e mensagens diretas.
  • Busca na web (desativado): permite que os agentes pesquisem na web por meio do Google, Brave ou de um servidor SearXNG que você executa.
  • Ferramentas nativas: com provedores que as oferecem, os agentes podem usar a própria busca na web do provedor (ativada por padrão para novos agentes, onde suportado), busca na web e execução de código. Eles são executados no provedor. Desative-os por agente.
  • Protocolo de Contexto de Modelo (MCP): conecte agentes a servidores MCP nos quais você confia, para ferramentas adicionais.
  • Debug: Saída de rastreamento (desativado, logs do servidor ou um endpoint OpenTelemetry) e Ativar registro de uso de tokens, que grava as contagens de tokens em logs/agents/token_usage.log.

Conversão de fala em texto: transcrições e legendas de chamadas

As chamadas podem ser transcritas, com legendas ao vivo, por um servidor de reconhecimento de fala que oferece um endpoint /v1/audio/transcriptions compatível com a OpenAI. A configuração está em Chamadas e voz. Com Resumir transcrições ativado, o agente padrão também publica um resumo de cada transcrição.

Texto para fala: ler em voz alta

Com o texto para fala ativado, o menu de cada mensagem tem Ler em voz alta: o servidor envia o texto da mensagem para uma API de texto para fala e reproduz o áudio. As configurações estão em Console do Sistema › Integrações › Texto para Fala:

ConfiguraçãoChave e variávelO que inserir
Ler mensagens em voz altaTextToSpeechSettings.Enable, AM_TEXTTOSPEECHSETTINGS_ENABLEtrue (desativado por padrão)
URL base da APITextToSpeechSettings.URL, AM_TEXTTOSPEECHSETTINGS_URLA URL base até e incluindo /v1, por exemplo http://tts.internal:8000/v1. O servidor chama seu endpoint /audio/speech.
ModeloTextToSpeechSettings.Model, AM_TEXTTOSPEECHSETTINGS_MODELO modelo como a API o nomeia, por exemplo tts-1. Obrigatório.
VozTextToSpeechSettings.Voice, AM_TEXTTOSPEECHSETTINGS_VOICEUma das vozes do modelo, ou vazio para usar a padrão.
Chave de APITextToSpeechSettings.APIKey, AM_TEXTTOSPEECHSETTINGS_APIKEYEnviado como token de bearer. Vazio se a API não exigir.

Para usar uma conexão de modelo em vez do endereço e da chave acima, selecione-a para Texto para Fala em IA › Recursos integrados. A página então indica que as mensagens são lidas em voz alta com essa conexão: URL base da API e Chave de API não são usadas, Voz ainda é, assim como Modelo quando a conexão não especifica um modelo. Ler mensagens em voz alta ainda deve estar ativado.

Antes de enviar, o servidor remove blocos de código, links, códigos de emoji e formatação, mantendo no máximo 4000 caracteres. Ele solicita áudio em MP3 e mantém os últimos 64 resultados em memória, de modo que uma mensagem lida duas vezes só é enviada uma vez.

Tradução automática

A tradução automática exibe as mensagens de um canal no idioma de cada leitor. Configure-a em Console do Sistema › Configuração do Site › Regionalização, em Tradução automática:

ConfiguraçãoChavePadrão
AtivarAutoTranslationSettings.Enabledesativado
Provedor de traduçãoAutoTranslationSettings.Providerconnection (exibido como "Conexão de modelo (recomendado)", o selecionado quando nenhum é definido), libretranslate, openai ("API compatível com OpenAI, configurada aqui") ou agents ("Serviço do aplicativo de chat de IA (mais antigo)")
Idiomas permitidosAutoTranslationSettings.TargetLanguagesen: os idiomas para os quais as mensagens podem ser traduzidas
Tempo limite de tradução (ms)AutoTranslationSettings.TimeoutMs5000
Restringir tradução automática em mensagens diretas e de grupoAutoTranslationSettings.RestrictDMAndGMdesativado

Cada provedor tem seus próprios campos:

  • Conexão de modelo: uma conexão de nível de servidor e seu modelo, a mesma configuração que Tradução automática em IA › Recursos integrados (AISettings.AutoTranslation). Um modelo de tradução dedicado é rápido e preciso; um LLM geral também funciona.
  • LibreTranslate: Endpoint de API do LibreTranslate e Chave de API do LibreTranslate (AutoTranslationSettings.LibreTranslate.URL, .APIKey). Um servidor LibreTranslate pode ser executado na sua própria rede.
  • API compatível com OpenAI: URL base da API (até e incluindo /v1; o servidor usa seu endpoint de conclusões de chat), Modelo e Chave de API (AutoTranslationSettings.OpenAI.URL, .Model, .APIKey). Um pequeno modelo de tradução executado localmente funciona bem.
  • Serviço do aplicativo de chat de IA (mais antigo): o provedor de servidores configurados antes da versão 0.9.0, que usava um serviço do aplicativo Agentes. Ele não precisa mais do aplicativo: traduz com a conexão selecionada para tradução automática em IA › Recursos integrados, ou com a conexão copiada do serviço do aplicativo na atualização. Mudar para Conexão de modelo move a configuração para o provedor recomendado.

Quando ativado, os administradores do canal ativam a tradução para um canal em suas configurações (Tradução automática), e cada membro pode desativá-la pelo menu do canal (Traduzir mensagens). Em mensagens diretas e de grupo, qualquer membro pode ativá-la; com a restrição ativada, a tradução não está disponível nesses contextos. As mensagens traduzidas exibem “Traduzido de …” com um link para a mensagem original.

Código, links, menções e emojis são substituídos por marcadores antes do envio do texto e restaurados em seguida.

Para onde cada dado é enviado

RecursoO que é enviadoDestino
ReescreverA mensagem sendo escrita e a instrução selecionadaA conexão selecionada para ela
ResumosAs mensagens dos canais no resumo e as instruções da pessoaA conexão selecionada para ela
Aplicativos que usam conexões de modeloO que cada aplicativo envia, para a pessoa que o usaAs conexões que a pessoa pode usar
AgentesA solicitação, as mensagens do tópico ou canal em questão, as instruções do agente, os resultados das ferramentas, as imagens (quando a visão está ativada) e o nome, o nome de usuário, o cargo e o idioma do usuário que fez a solicitaçãoA API do serviço
Pesquisa por incorporação (embedding)Todas as mensagens (exceto as de bots e do sistema)A API de incorporação (embedding)
Ferramentas nativas e pesquisa na webConsultas de pesquisa, páginas a serem obtidas, códigoO provedor ou o mecanismo de pesquisa escolhido
Transcrição de chamadasA voz de todos que falam enquanto a transcrição está ativadaA API de conversão de fala em texto
Leitura em voz altaO texto da mensagem sendo lidaA API de texto para fala, ou a conexão selecionada para ela
TraduçãoO texto das mensagens nos canais com tradução ativadaA conexão de modelo, LibreTranslate ou a API compatível com OpenAI

Para manter tudo dentro da sua rede, aponte cada recurso para servidores que você mesmo administra. Ao usar um provedor em nuvem, verifique os termos de retenção de dados e informe aos usuários quais recursos enviam suas mensagens para fora.

Desativando a IA

Não há um único controle geral: cada recurso possui o seu próprio.

  • Reescrita e resumos: defina-os como Desligado em Console do Sistema › IA › Recursos integrados. As pessoas continuam lendo os resumos que já possuem.
  • Conexões de modelos: exclua uma conexão para interromper todo o seu uso. Sem nenhuma conexão, nem os recursos integrados nem os aplicativos podem usar IA por meio do servidor.
  • Agentes: desative o aplicativo Agentes em Console do Sistema › Plugins › Gerenciamento de Plugin. Isso também remove os resumos de chamadas.
  • Transcrição e legendas: AM_CALLS_ENABLE_TRANSCRIPTIONS=false e AM_CALLS_ENABLE_LIVE_CAPTIONS=false (valores padrão).
  • Ler em voz alta: desative Ler mensagens em voz alta (AM_TEXTTOSPEECHSETTINGS_ENABLE=false, o padrão), independentemente de usar uma conexão.
  • Tradução: desative a tradução automática (AM_AUTOTRANSLATIONSETTINGS_ENABLE=false, valor padrão).

Desativar o aplicativo Agentes não desliga os outros recursos: eles usam conexões de modelos ou suas próprias APIs.