IA
As funcionalidades de IA do Antimatter utilizam modelos à sua escolha: um prestador de serviços na nuvem ou um servidor na sua própria rede. Nada é enviado para qualquer lado até configurar um modelo. Esta página aborda as ligações de modelos, cada funcionalidade, os dados que envia e como as desativar.
As funcionalidades de IA
| Funcionalidade | Configurado em | Tipo de modelo | Ativado por omissão |
|---|---|---|---|
| Reescrever no compositor: melhorar, encurtar, corrigir ou traduzir uma mensagem antes de a enviar | IA › Funcionalidades integradas, com uma ligação de modelo | Um modelo de chat (LLM) | não |
| Resumos: resumos dos canais escolhidos pelas pessoas | IA › Funcionalidades integradas, com uma ligação de modelo | Um modelo de chat (LLM) | não |
| Tradução automática de canais | Configuração do site › Localização | Uma ligação de modelo, LibreTranslate ou uma API compatível com OpenAI | não |
| Leitura em voz alta | Integrações › Texto para fala, opcionalmente com uma ligação de modelo | Síntese de voz, compatível com OpenAI | não |
| Agentes de IA: conversar com um bot, resumos de tópicos, resumos de chamadas | A aplicação Agentes | Qualquer serviço de modelo de linguagem de grande escala (LLM) | A aplicação está ativada, mas não faz nada até adicionar um serviço |
| Transcrições de chamadas e legendas em direto | A aplicação Chamadas | Transcrição de voz, compatível com OpenAI | não |
"Compatível com OpenAI" significa um servidor que oferece a mesma API HTTP que a OpenAI. A maioria dos servidores de modelos que pode executar por sua conta cumpre este requisito (por exemplo, Ollama, vLLM, o servidor do llama.cpp, ou servidores de Whisper e de texto para fala), tal como muitos prestadores de serviços na nuvem e gateways, como o LiteLLM ou o OpenRouter. Não é necessária qualquer licença para nenhuma destas funcionalidades.
As funcionalidades integradas (reescrita, resumos, tradução e leitura em voz alta) não necessitam da aplicação Agentes: utilizam as ligações de modelos que adiciona na Consola do sistema.
Ligações de modelos
Uma ligação de modelo é um prestador de serviços de IA que o Antimatter pode chamar: o seu endereço, a sua chave e os seus modelos. Adiciona-a uma vez e, em seguida, seleciona-a para cada funcionalidade que deve utilizá-la. Existem dois tipos:
- Ligações a nível do servidor, geridas pelos administradores do sistema na Consola do sistema › IA › Ligações de modelos. Apenas estas podem servir as funcionalidades integradas. As aplicações também as podem utilizar, para as pessoas autorizadas.
- Ligações da comunidade, que os administradores de uma comunidade adicionam para a sua própria comunidade nas definições da comunidade (ver abaixo). As aplicações utilizam-nas para as pessoas da comunidade. Nunca servem as funcionalidades integradas.
A secção IA da Consola do sistema é visível para as pessoas que podem gerir as ligações a nível do servidor: por omissão, os administradores do sistema. A sua página Ligações de modelos lista as ligações a nível do servidor e as de todas as comunidades.
Adicionar uma ligação
Na Consola do sistema › IA › Ligações de modelos, clique em Adicionar uma ligação e, em seguida, preencha o formulário:
| Campo | O que introduzir |
|---|---|
| Predefinições | Preenche o prestador e o endereço de um serviço bem conhecido: OpenAI, Mistral, Gemini, OpenRouter, ou Ollama e LiteLLM no próprio servidor. Opcional. |
| Nome | O nome que os administradores veem quando o selecionam, por exemplo "OpenAI da Empresa". |
| Prestador | Compatível com OpenAI (a maioria dos prestadores, gateways e servidores de modelos que executa você mesmo) ou Anthropic. Serviços em nuvem com o seu próprio início de sessão, como AWS Bedrock, Google Vertex AI ou Azure com Entra ID, passam pelo seu endpoint compatível com OpenAI ou por um gateway como o LiteLLM. |
| URL base | O endereço da API, até e incluindo /v1, por exemplo http://ollama:11434/v1. Se ficar vazio, é o próprio do prestador (https://api.openai.com/v1 ou https://api.anthropic.com/v1). |
| Chave da API | A chave do prestador. Deixe-a vazia se o endpoint não necessitar de uma. É guardada de forma encriptada e nunca mais é mostrada: o formulário apenas mostra os últimos quatro caracteres e oferece a opção de manter, substituir ou remover. |
| Cabeçalhos adicionais | Cabeçalhos a enviar com cada pedido, para um gateway que os necessite. Os seus valores são guardados de forma encriptada, como a chave, e nunca mais são mostrados: para os alterar, tem de os escrever novamente. |
| Modelos | O modelo usado para cada capacidade quando uma funcionalidade ou uma aplicação não especifica um: Chat, Embeddings, Transcrição e Decisões. Carregar modelos lista os modelos que o endpoint oferece. Deixe uma capacidade vazia se o endpoint não a oferecer. As ligações Anthropic apenas fazem chat. |
| API de decisões | Como o modelo de decisões é chamado: Decisões OpenAI ou SystemOne. Só é relevante para aplicações que pedem decisões. |
| Limites | Ver Limites e orçamentos. |
| Comunidades | Apenas ligações em todo o servidor. Todas as comunidades: utilizável em todas as comunidades, e em mensagens diretas e de grupo. Caso contrário, apenas nas comunidades que escolher. |
| Quem pode utilizá-lo | Todos onde for utilizável, ou apenas as equipas (grupos de pessoas dentro de uma comunidade) e os papéis que escolher (Administradores do sistema, Administradores da comunidade). Também convidados permite que os convidados o utilizem; sem esta opção, os convidados não o podem, mesmo com Todos. |
Testar ligação verifica o endereço e a chave: o servidor pede ao endpoint os seus modelos, ou envia um chat de um único token. Um endereço alterado é testado com a chave guardada apenas após guardar, ou se escrever a chave novamente. Clique em Adicionar ligação para guardar.
O servidor faz as pedidos por si, pelo que tem de conseguir aceder à API: um servidor de modelos no mesmo projeto compose, na sua rede ou na Internet. Os pedidos de saída respeitam as variáveis HTTP_PROXY e HTTPS_PROXY.
Ao eliminar uma ligação, a respetiva chave é eliminada. As funcionalidades que a utilizavam deixam de usar IA até escolher outra ligação.
Limites e orçamentos
Cada ligação tem quatro limites. Um valor vazio ou 0 significa que não há limite.
- Pedidos por minuto e Por pessoa, pedidos por minuto. 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 na base de dados para todo o cluster. Vários pedidos em execução ao mesmo momento podem exceder ligeiramente um orçamento.
Os limites por pessoa aplicam-se também à reescrita e aos resumos: são contados para a pessoa que reescreve ou que é proprietária do resumo.
Utilização
A lista mostra a utilização de cada ligação neste mês. Utilização abre os detalhes: tokens de entrada e saída, pedidos, o orçamento mensal, utilização por dia (UTC) e por utilização (Reescrever, Resumos, Tradução automática, Texto para fala, Pessoas, através de aplicações ou uma aplicação).
Cada chamada que uma pessoa ou uma aplicação faz através de uma ligação também escreve um registo de auditoria: quem, a ligação, a utilização, o modelo, as contagens de tokens e se teve sucesso, nunca o que foi dito. As funcionalidades integradas são apenas contadas na utilização: a tradução sozinha faz uma chamada por mensagem e por idioma.
Ligações da comunidade
Os administradores da comunidade adicionam as ligações próprias da comunidade nas definições da comunidade, na separação Ligações de modelos. O formulário é o mesmo, sem Comunidades: a ligação de uma comunidade só funciona nos seus próprios canais, para os seus próprios membros, e o seu público só pode nomear as suas próprias equipas. Os papéis com a permissão Gestão de ligações de modelos também podem geri-las. Por omissão, os administradores da comunidade têm-na.
A ligação de uma comunidade não pode aceder a endereços privados ou de loopback (por exemplo, um servidor Ollama na sua rede), a menos que Consola do sistema › Ambiente › Desenvolvedor › Permitir ligações internas não fiáveis a (ServiceSettings.AllowedUntrustedInternalConnections) os liste. As ligações de todo o servidor podem.
Consulte Definições da comunidade para o lado dos administradores da comunidade.
A chave de encriptação
As chaves e os cabeçalhos adicionais das ligações de modelos são criptografadas na base de dados (AES-256-GCM) com uma única chave de criptografia. Uma cópia de segurança da base de dados por si só não as revela. O servidor procura a chave nesta ordem:
- A variável
AM_AI_ENCRYPTION_KEY: 32 bytes aleatórios, em base64. Crie uma comopenssl rand -base64 32. - Caso contrário, o ficheiro
ai-encryption.keyna raiz do diretório de dados do servidor (FileSettings.Directory,./data/por omissão). O servidor cria-o, legível apenas por si próprio, na primeira vez que uma ligação o necessita. As aplicações, as exportações e os arquivos de ficheiros não o podem ler.
Quando definir a variável:
- Com o ficheiro compose do site. O
compose.yamlpassaAM_AI_ENCRYPTION_KEYa partir de.enve mantém o ficheiro da chave no volumedataquando a variável está vazia. Definir a variável é melhor: a cópia de segurança de.envpassa então a conter a chave, separada da base de dados. Adicione-a a.enve executedocker compose up -d:
Se o servidor já criou o seu ficheiro de chave, coloque a chave que ele contém emecho "AM_AI_ENCRYPTION_KEY=$(openssl rand -base64 32)" >> .env.envem vez disso, para que as chaves guardadas permaneçam legíveis:docker compose exec antimatter cat /antimatter/data/ai-encryption.keymostra-a. - Um cluster cujos ficheiros estão no S3. Os seus servidores não partilham um diretório, pelo que o servidor não cria o ficheiro: defina a mesma variável em todos os servidores. Até que seja definida, as ligações não podem guardar chaves.
- Com o arquivo de lançamento ou os pacotes, o ficheiro está em
data/(/var/lib/antimatter/datapara os pacotes). Pode mantê-lo aí, ou definir a variável no seu ficheiro 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 guardadas com a antiga ainda podem ser lidas. A chave de uma ligação é criptografada com a nova chave quando a introduzir novamente. Mantenha a chave antiga na lista até que a chave de todas as ligações tenha sido introduzida novamente.
As funcionalidades integradas
Em Consola do sistema › IA › Funcionalidades integradas, escolha para cada funcionalidade uma ligação a nível de servidor e o respetivo modelo, ou Desligado. Uma funcionalidade sem ligação não utiliza IA. Carregar modelos lista todos os modelos da ligação; por omissão, cada funcionalidade utiliza o modelo de conversa da ligação.
| Funcionalidade | Definição | O que mais é necessário |
|---|---|---|
| Reescrever no compositor: o menu de IA da caixa de mensagem (melhorar, encurtar, corrigir, traduzir) | AISettings.Rewrite | Nada: o menu aparece assim que uma ligação for escolhida. |
| Resumos: resumos dos canais que as pessoas escolhem, sob pedido ou com base num cronograma | AISettings.Recaps | Ativar resumos de IA em Consola do sistema › Configuração do site › Resumos (ativado por omissão), o que também define quantos resumos as pessoas podem criar. |
| Tradução automática | AISettings.AutoTranslation | O prestador de tradução Ligação de modelos (recomendado), em Tradução automática. |
| Texto para fala | AISettings.TextToSpeech | Ler mensagens em voz alta ativado, em Texto para fala. O ponto de entrada /audio/speech da ligação substitui o endereço e a chave definidos aí. |
Cada definição tem uma chave ConnectionId e uma chave Model, por exemplo AISettings.Rewrite.ConnectionId (AM_AISETTINGS_REWRITE_CONNECTIONID). Um Model vazio utiliza o modelo predefinido da ligação.
As funcionalidades integradas utilizam os limites da ligação, mas não o respetivo público: qualquer pessoa que possa utilizar a funcionalidade pode utilizar a sua ligação. Uma ligação que precise de atenção, ou que tenha sido eliminada, faz com que a funcionalidade falhe até escolher outra: a página indica-o.
Agentes de IA
A aplicação Agentes (id mattermost-ai) está ativada por omissão. A configuração requer duas etapas: adicionar um serviço (uma ligação a um prestador de modelos) e, em seguida, criar agentes (bots que usam um serviço).

1. Adicionar um serviço
Vá a Consola 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 executa por sua conta, ou qualquer prestador com uma API ao estilo OpenAI. Preencha o URL da API (por exemplo,
http://ollama:11434/v1ouhttp://vllm.internal:8000/v1) e a Chave da API apenas se o servidor a necessitar. Se o servidor só suportar a API de Completions de Conversa, desative Usar API de Respostas. - OpenAI, Anthropic, Google Gemini, Google Vertex AI, AWS Bedrock, Azure, Cohere, Mistral: prestadores de serviços alojados. Cada um necessita da respetiva Chave da API (Bedrock: uma região AWS e credenciais ou um papel IAM; Vertex AI: um projeto, uma região e uma conta de serviço; Azure: também o URL da API).
Defina em seguida o Modelo predefinido (uma lista, se o provedor puder reportar os seus modelos; caso contrário, escreva o nome) e, se o provedor não os reportar, o Limite de tokens de entrada e o Limite de tokens de saída. Um Serviço de recurso pode assumir o controlo quando este falhar. Guarde.
O servidor faz estas solicitações por sua conta, pelo que tem de conseguir aceder à API: um servidor de modelos no mesmo projeto compose, na sua rede ou na Internet. As solicitações em saída respeitam as variáveis HTTP_PROXY e HTTPS_PROXY.
2. Criar agentes
Os agentes são criados na página Agentes da aplicação web: abra-a com Gerir no seletor de agentes do painel de Agentes (na interface clássica, também a partir do menu do produto). O seu endereço é https://chat.example.com/plug/mattermost-ai/agents. Cada agente tem um Nome de apresentação, um Nome de utilizador do agente (como as pessoas o mencionam), um Serviço e, opcionalmente, um modelo, Instruções personalizadas e interruptores para Ativar visão (imagens) e Ativar ferramentas. A sua separação Acesso limita em que canais pode ser utilizado e que utilizadores o podem usar. Em Funções de IA no Consola do sistema, Bot predefinido escolhe o agente utilizado quando nenhum é selecionado, por exemplo para resumos de chamadas.
Funcionalidades opcionais da aplicação Agentes
- Pesquisa por incorporação (experimental, desativada): pesquisa semântica sobre mensagens. Requer PostgreSQL com a extensão pgvector e um modelo de incorporação (OpenAI ou compatível com OpenAI). Envia todas as mensagens para o modelo de incorporação, incluindo canais privados e mensagens diretas.
- Pesquisa na web (desativada): permite aos agentes pesquisar na web através do Google, do Brave ou de um servidor SearXNG que executar.
- Ferramentas nativas: com provedores que as oferecem, os agentes podem usar a pesquisa na web própria do provedor (ativada por predefinição para novos agentes, onde suportado), a obtenção de conteúdo da web e a execução de código. Estas são executadas no provedor. Desative-as por agente.
- Protocolo de contexto de modelo (MCP): ligue agentes a servidores MCP em que confia, para obter ferramentas adicionais.
- Depuração: Saída de rastreamento (desativada, registos do servidor ou um endpoint OpenTelemetry) e Ativar registo de utilização de tokens, que escreve as contagens de tokens em
logs/agents/token_usage.log.
Conversão de voz em texto: transcrições e legendas de chamadas
As chamadas podem ser transcritas, com legendas em direto, por um servidor de reconhecimento de voz que ofereça um ponto de extremidade /v1/audio/transcriptions compatível com a OpenAI. A configuração está em Chamadas e voz. Com Resumir transcrições ativado, o agente predefinido 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 inclui Ler em voz alta: o servidor envia o texto da mensagem para uma API de texto para fala e reproduz o áudio. Definições, em Consola do sistema › Integrações › Texto para fala:
| Definição | Chave e variável | O que introduzir |
|---|---|---|
| Ler mensagens em voz alta | TextToSpeechSettings.Enable, AM_TEXTTOSPEECHSETTINGS_ENABLE | true (desativado por predefinição) |
| URL base da API | TextToSpeechSettings.URL, AM_TEXTTOSPEECHSETTINGS_URL | A URL base até e incluindo /v1, por exemplo http://tts.internal:8000/v1. O servidor utiliza o seu ponto de extremidade /audio/speech. |
| Modelo | TextToSpeechSettings.Model, AM_TEXTTOSPEECHSETTINGS_MODEL | O modelo com o nome que a API lhe atribui, por exemplo tts-1. Obrigatório. |
| Voz | TextToSpeechSettings.Voice, AM_TEXTTOSPEECHSETTINGS_VOICE | Uma das vozes do modelo, ou vazio para a predefinida. |
| Chave da API | TextToSpeechSettings.APIKey, AM_TEXTTOSPEECHSETTINGS_APIKEY | Enviada como um token de portador. Vazio se a API não necessitar de uma. |
Para usar uma ligação de modelo em vez do endereço e da chave acima, seleccione-a para Texto para fala em IA › Funcionalidades integradas. A página indica então que as mensagens são lidas em voz alta com essa ligação: URL base da API e Chave da API não são usadas, Voz continua a ser, bem como Modelo quando a ligação não especifica um modelo. Ler mensagens em voz alta tem de estar ativado.
Antes de enviar, o servidor remove blocos de código, ligações, códigos de emoji e formatação, e mantém no máximo 4000 caracteres. Pede áudio em MP3 e mantém os últimos 64 resultados na memória, pelo que uma mensagem lida duas vezes só é enviada uma vez.
Tradução automática
A tradução automática mostra as mensagens de um canal na língua de cada leitor. Configure-a em Consola do sistema › Configuração do site › Localização, em Tradução automática:
| Definição | Chave | Padrão |
|---|---|---|
| Ativar | AutoTranslationSettings.Enable | desativado |
| Provedor de tradução | AutoTranslationSettings.Provider | connection (mostrado como “Conexão do modelo (recomendado)”, a opção selecionada quando nenhuma está definida), libretranslate, openai (“API compatível com OpenAI, configurada aqui”) ou agents (“Serviço da aplicação de chat de IA (anterior)”) |
| Idiomas permitidos | AutoTranslationSettings.TargetLanguages | en: as línguas para as quais as mensagens podem ser traduzidas |
| Tempo limite de tradução (ms) | AutoTranslationSettings.TimeoutMs | 5000 |
| Restringir a tradução automática em mensagens diretas e de grupo | AutoTranslationSettings.RestrictDMAndGM | desativado |
Cada provedor tem os seus próprios campos:
- Ligação de modelo: uma ligação a nível de servidor e o seu modelo, a mesma definição que Tradução automática em IA › Funcionalidades integradas (
AISettings.AutoTranslation). Um modelo de tradução dedicado é rápido e preciso; um LLM genérico também funciona. - LibreTranslate: Ponto de extremidade da 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 a OpenAI: URL base da API (até e incluindo
/v1; o servidor utiliza o seu ponto de extremidade de conclusões de conversa), Modelo e Chave da API (AutoTranslationSettings.OpenAI.URL,.Model,.APIKey). Um pequeno modelo de tradução executado localmente funciona bem. - Serviço da aplicação de chat de IA (mais antigo): o provedor dos servidores configurados antes da 0.9.0, que usavam um serviço da aplicação Agentes. Já não necessita da aplicação: traduz com a ligação selecionada para a tradução automática em IA › Funcionalidades integradas, ou, caso contrário, com a ligação copiada do serviço da aplicação na atualização. Mudar para Ligação de modelo move a definição para o provedor recomendado.
Quando ativada, os administradores do canal ativam a tradução para um canal nas respetivas definições (Tradução automática), e cada membro pode desativá-la no 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 mostram “Traduzido de …” com um link para a original.
O código, os links, as menções e os emojis são substituídos por marcadores antes de o texto ser enviado, e repostos depois.
Para onde vai cada tipo de dados
| Funcionalidade | O que é enviado | Destino |
|---|---|---|
| Reescrever | A mensagem a ser escrita, e a instrução selecionada | A ligação selecionada para ela |
| Resumos | As mensagens dos canais no resumo, e as instruções da pessoa | A ligação selecionada para ela |
| Aplicações que usam ligações de modelo | O que cada aplicação envia, para a pessoa que a utiliza | As ligações que essa pessoa pode usar |
| Agentes | A pedido, as mensagens do tópico ou do 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 utilizador, o cargo e a língua do utilizador que faz o pedido | A API do serviço |
| Pesquisa por incorporação | Todas as mensagens (exceto as de bots e as de sistema) | A API de incorporação |
| Ferramentas nativas e pesquisa na web | Consultas de pesquisa, páginas a obter, código | O provedor, ou o motor de pesquisa que escolheu |
| Transcrição de chamadas | A voz de todos os que falam enquanto estiver ativada | A API de voz para texto |
| Leitura em voz alta | O texto da mensagem a ser lida | A API de texto para fala, ou a ligação selecionada para ela |
| Tradução | O texto das mensagens nos canais traduzidos | A ligação de modelo, o LibreTranslate ou a API compatível com OpenAI |
Para manter tudo na sua rede, aponte cada funcionalidade para servidores que gere por si próprio. Com um provedor de nuvem, verifique os termos de retenção de dados e informe os utilizadores que funcionalidades enviam as suas mensagens para o exterior.
Desativar a IA
Não existe um único interruptor: cada funcionalidade tem o seu próprio.
- Reescrita e resumos: defina-os como Desligado em Consola do sistema › AI › Funcionalidades integradas. As pessoas continuam a ler os resumos que já têm.
- Ligações de modelos: elimine uma ligação para interromper todo o seu uso. Sem qualquer ligação, nem as funcionalidades integradas nem as aplicações podem utilizar IA através do servidor.
- Agentes: desative a aplicação Agentes em Consola do sistema › Plugins › Gestão de Plugins. Isto também remove os resumos de chamadas.
- Transcrição e legendas:
AM_CALLS_ENABLE_TRANSCRIPTIONS=falseeAM_CALLS_ENABLE_LIVE_CAPTIONS=false(os valores predefinidos). - Ler em voz alta: desligue Ler mensagens em voz alta (
AM_TEXTTOSPEECHSETTINGS_ENABLE=false, o valor predefinido), independentemente de utilizar uma ligação. - Tradução: desative a tradução automática (
AM_AUTOTRANSLATIONSETTINGS_ENABLE=false, o valor predefinido).
Desativar a aplicação Agentes não desliga as outras funcionalidades: estas utilizam ligações de modelos ou as suas próprias APIs.