ctx.ai
No RunJS, ctx.ai aciona tarefas de funcionário de IA. Ele é útil em JSBlock, JSAction e outras interações nas quais um botão, formulário ou fluxo de negócio precisa entregar trabalho a um funcionário de IA específico.
ctx.ai faz upload de anexos para tarefas de IA e aciona tarefas. É possível aguardar o upload dos arquivos, mas o acionamento da tarefa não retorna seu resultado de execução. Depois da chamada, a tarefa entra no fluxo de conversa do funcionário de IA.
ctx.ai é fornecido pelo plugin de IA. Se o plugin de IA não estiver habilitado, ou se o ambiente RunJS atual não tiver carregado a capacidade de cliente correspondente, ctx.ai pode não existir. Você pode verificar ctx.ai?.uploadFile, ctx.ai?.triggerTask ou ctx.ai?.triggerModelTask antes de chamar.
Métodos
ctx.ai.uploadFile()
Faz upload de um arquivo e retorna um objeto de anexo que pode ser passado diretamente para uma tarefa de funcionário de IA.
O upload usa o armazenamento de arquivos configurado pelo plugin de IA e cria um registro em aiFiles. O objeto retornado inclui campos como id, filename, url e source:
O Promise é rejeitado quando o upload falha. Remover um anexo da lista local não exclui o registro já criado em aiFiles, assim como na janela de chat de IA padrão.
ctx.ai.triggerTask()
Aciona diretamente uma tarefa de funcionário de IA.
Campos comuns de Task:
Acompanhar o estado de carregamento da resposta
Passe onResponseLoadingChange nas opções de nível superior para acompanhar o estado de carregamento da resposta do modelo. O callback recebe true quando o NocoBase começa a aguardar a resposta e false quando ela termina, é cancelada ou falha. Se o componente React já declarou setResponseLoading com useState, você pode escrever:
onResponseLoadingChange acompanha apenas a resposta iniciada diretamente por esta chamada de triggerTask(). Com autoSend: false, a tarefa fica no rascunho do chat e o callback não é executado. Se o usuário enviar o rascunho depois, esse envio manual não reutiliza o callback.
Em um componente React de um bloco JS, essa atualização renderiza novamente o componente enquanto ele permanecer montado.
Direcionar para um AI Chat Box
Defina chatBoxUid nas opções de nível superior de triggerTask() para acionar a tarefa em um bloco AI Chat Box montado, em vez de abrir o diálogo global do funcionário de IA.
O uid deve pertencer ao bloco AI Chat Box externo atualmente montado na página. Não coloque esse valor de roteamento dentro de tasks. Se o bloco de destino não for encontrado, NocoBase exibirá um erro e não retornará ao diálogo global. Quando chatBoxUid é omitido, a tarefa usa o diálogo global do funcionário de IA.
Fazer upload e enviar anexos no JSBlock
O exemplo a seguir renderiza upload de arquivos, instruções da tarefa e um botão de envio no JSBlock. Os arquivos enviados são passados ao funcionário de IA por message.attachments:
Com autoSend: false, os anexos e as instruções da tarefa são colocados no rascunho do chat de IA e não são enviados imediatamente.
Adicionar contexto de blocos da página
message.workContext atualmente passa blocos da página. Coloque nele o uid FlowModel do bloco de destino:
Se quiser usar o JSBlock atual como contexto, use o uid do modelo atual:
Especificar modelo
model especifica o modelo de uma tarefa. Se omitido, a configuração de modelo padrão do funcionário de IA é usada. Passar null significa não especificar modelo no nível da tarefa.
Configurar skills / tools
skillSettings especifica as skills e tools disponíveis para uma tarefa. Se omitido, a configuração de capacidades do funcionário de IA é usada.
Para desabilitar explicitamente todas as skills ou tools desta tarefa, passe arrays vazios e mantenha os campos de versão:
Exemplo:
Se aiEmployee for uma string, NocoBase procura correspondência exata por username entre os funcionários de IA acessíveis ao usuário atual.
ctx.ai.triggerModelTask()
Lê uma tarefa de um modelo de ação de funcionário de IA na página e a aciona.
As opções públicas de triggerModelTask() não aceitam chatBoxUid. Para direcionar a um AI Chat Box, configure chatBoxUid na tarefa predefinida da ação de funcionário de IA. triggerModelTask() continuará reutilizando esse valor predefinido.
options.onResponseLoadingChange funciona da mesma forma que em triggerTask(). Sua execução depende do valor autoSend da tarefa configurada. Ele não é executado quando a tarefa usa autoSend: false.
Se o modelo de destino não existir, não tiver funcionário de IA configurado, ou o índice informado não tiver tarefa, nenhuma tarefa será acionada e um aviso será impresso no console.
Observações
triggerTask()etriggerModelTask()são fire-and-forget. Eles não retornam o resultado de execução da tarefa.uploadFile()retorna um Promise. Aguarde o fim do upload antes de acionar uma tarefa que use o anexo.- Strings em
aiEmployeecorrespondem apenas exatamente aAIEmployee.username. triggerModelTask()usataskIndexcomeçando em0.message.workContextatualmente descreve apenas contexto de blocos da página.- O valor de nível superior
triggerTask().chatBoxUiddeve referenciar um bloco AI Chat Box atualmente montado na página. triggerModelTask()continua usando ochatBoxUidconfigurado na tarefa predefinida.- Os anexos dinâmicos de
triggerModelTask()são adicionados aosmessage.attachmentsexistentes da tarefa predefinida sem alterar a configuração salva. onResponseLoadingChangeacompanha apenas uma resposta enviada automaticamente pela chamada atual. Ele não acompanha uma mensagem enviada manualmente pelo usuário depois.
Relacionado
- ctx.message: Mostra avisos leves antes e depois de acionar tarefas.
- ctx.render: Renderiza botões ou formulários no JSBlock.
- ctx.model: Obtém informações do FlowModel atual.

