V10 RecursosGuias
RecursosGuias
Guias
Voltar | Lista de artigos

Como executar uma Prompt Function no Cegid Pulse?

Última alteração a 27/10/2026

A Prompt Function permite enviar dados estruturados, ficheiros e instruções em linguagem natural para o motor de IA do Cegid Pulse, obtendo uma resposta gerada pelo modelo.

Estão disponíveis as seguintes execuções:

ExecuçãoContextosDadosFicheirosCálculos
Simples1string (CSV ou outro formato tabular)NãoSim
Múltiplos contextos1 ou maisDataTable por contextoNãoConfigurável
Com envio de ficheiros1 ou mais (opcional)DataTable por contexto1 a 5 (máx. 5 MB cada)Não

Pré-requisitos

Antes de invocar qualquer execução, a plataforma deve estar inicializada:

PriEngine.CreatContext(empresa, utilizador, password, instancia);

1. Execução simples

Envia um único contexto com dados em formato de texto (tipicamente CSV) e uma instrução em linguagem natural.

string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunction(
    string contextDescription,
    string contextData,
    string humanQuestion
);

Parâmetros

ParâmetroTipoDescrição
contextDescriptionstringDescreve a estrutura e o significado dos dados fornecidos em contextData.
contextDatastringDados a processar. Não existe um formato fixo — formatos tabulares (CSV, TSV) funcionam bem para operações de ordenação, filtragem e agrupamento.
humanQuestionstringInstrução em linguagem natural que define o comportamento esperado.

Os três parâmetros são obrigatórios; valores vazios produzem comportamento indefinido.

Exemplos

string contextDescription = @"O contexto dos dados contém as vendas com a faturação aos clientes agrupadas por artigo com o total das quantidades e valores das vendas faturadas. 
A tabela contém as colunas para este contexto: 
[Cliente] que indica o nome do cliente; 
[Artigo] que representa o nome do artigo; 
[QuantidadeTotal] que representa a quantidade total comprada pelo cliente para o artigo; 
[TotalLiquido] que indica a faturação total desse artigo ao cliente.";

string contextData = @"Cliente;Artigo;QuantidadeTotal;TotalLiquido;Ano;Mes
Inforshow, Informática Comunicação;Monitor 17"" TFT L1752S;1;176;2024;2
Inforshow, Informática Comunicação;Pentium D925 Dual Core;1;1000;2024;2
Inforshow, Informática Comunicação;Pentium D925 Dual Core;1;878;2024;3
Inforshow, Informática Comunicação;Processador INTEL CORE 2 DUO E6300 1.86GHZ;1;1198;2024;3
Inforshow, Informática Comunicação;Serviços de Implementação;1;300;2024;2
José Maria Fernandes & Filhos, Lda.;Formador Joana Fonseca;35;1396,5;2024;3
José Maria Fernandes & Filhos, Lda.;Monitor TFT 747D 17';1;159;2024;1
José Maria Fernandes & Filhos, Lda.;Pentium 4 945+ Dual Core 3.4GHZ;1;926;2024;1
José Maria Fernandes & Filhos, Lda.;Pentium D925 Dual Core;1;878;2024;1
José Maria Fernandes & Filhos, Lda.;Processador INTEL CORE 2 DUO E6300 1.86GHZ;1;1198;2024;1
José Maria Fernandes & Filhos, Lda.;Serviços de Implementação;1;59,86;2024;3";

string humanQuestion = "Analisa e coloca 3 insights em pt-PT dos dados de vendas e identifica a faturação dos 5 clientes com maior volume de vendas.";

string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunction(contextDescription, contextData, humanQuestion);

2. Execução com múltiplos contextos

Envia um ou mais contextos (cada um com uma descrição e um DataTable de dados) e permite escolher se a execução usa ou não cálculos.

string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunction(
    IEnumerable contexts,
    string humanQuestion,
    EnumSmartActionExecutionType executionType
);

Parâmetros

ParâmetroTipoDescrição
contextsIEnumerableLista de contextos a enviar ao modelo. Cada entrada contém uma descrição textual (Background) e os dados associados (Data).
humanQuestionstringInstrução em linguagem natural que define o comportamento esperado.
executionTypeEnumSmartActionExecutionTypeDefine se a execução usa cálculos. Ver tabela abaixo.

StdBEUserPromptFunctionContext:

PropriedadeTipoDescrição
BackgroundstringDescrição dos dados fornecidos (contexto para o modelo).
DataDataTableDados a processar.

EnumSmartActionExecutionType:

ValorDescriçãoContextos suportados
WithCalculationsExecuta com suporte a expressões de cálculo.Apenas 1 — passar mais do que um contexto lança uma exceção.
WithoutCalculationsExecuta sem cálculos. Todos os contextos são enviados num único pedido ao modelo.1 ou mais

Exemplo

O exemplo abaixo analisa stock e encomendas a fornecedores em simultâneo, enviando dois contextos distintos sem recorrer a cálculos.

using StdBE100;
using static StdBE100.StdBETipos;

// Contexto 1 — stock atual dos artigos
var tabelaArtigos = new DataTable();
tabelaArtigos.Columns.AddRange(new[] {
    new DataColumn("Artigo"), new DataColumn("Descricao"), new DataColumn("StockAtual")
});
tabelaArtigos.Rows.Add("A0001", "Monitor 17\" TFT L1752S", "120");
tabelaArtigos.Rows.Add("A0002", "Pentium D925 Dual Core",  "45");
tabelaArtigos.Rows.Add("A0003", "Processador INTEL CORE 2 DUO E6300", "0");

// Contexto 2 — encomendas a fornecedores pendentes
var tabelaEncomendas = new DataTable();
tabelaEncomendas.Columns.AddRange(new[] {
    new DataColumn("Artigo"), new DataColumn("QuantidadeEncomendada"), new DataColumn("DataEntregaPrevista")
});
tabelaEncomendas.Rows.Add("A0002", "100", "2026-06-15");
tabelaEncomendas.Rows.Add("A0003", "50",  "2026-06-10");

var contexts = new List()
{
    new StdBEUserPromptFunctionContext()
    {
        Background = @"Stock atual dos artigos em armazém.
Colunas:
[Artigo] código do artigo;
[Descricao] descrição do artigo;
[StockAtual] quantidade disponível em armazém.",
        Data = tabelaArtigos
    },
    new StdBEUserPromptFunctionContext()
    {
        Background = @"Encomendas a fornecedores pendentes de entrega.
Colunas:
[Artigo] código do artigo;
[QuantidadeEncomendada] quantidade encomendada ao fornecedor;
[DataEntregaPrevista] data prevista de entrega (formato yyyy-MM-dd).",
        Data = tabelaEncomendas
    }
};

string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunction(
    contexts,
    "Com base no stock atual e nas encomendas pendentes, identifica os artigos em risco de rotura e qual o impacto esperado após a receção das encomendas.",
    EnumSmartActionExecutionType.WithoutCalculations
);

3. Execução com envio de ficheiros

O método UserPromptFunctionFiles permite enviar um ou mais ficheiros (ver formatos suportados abaixo) juntamente com um ou mais contextos para o motor de IA do Cegid Pulse. Os ficheiros são primeiro carregados e só depois são referenciados na chamada à prompt function. Esta execução é sempre feita sem cálculos.

Assinatura

string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunctionFiles(
    IEnumerable contexts,
    string humanQuestion,
    Dictionary<string, byte[]=""> files
);
</string,>

Parâmetros

ParâmetroTipoDescrição
contextsIEnumerableLista de contextos a enviar ao modelo. Opcional — pode ser null ou vazia se a análise se basear apenas nos ficheiros enviados.
humanQuestionstringInstrução em linguagem natural que define o comportamento esperado.
filesDictionary<string, byte[]=""></string,>Ficheiros a enviar, indexados pelo nome do ficheiro (com extensão), com o respetivo conteúdo binário. Máximo de 5 entradas.

Usa a mesma estrutura StdBEUserPromptFunctionContext (Background + Data) descrita na secção anterior.

Limites e requisitos

Apenas são permitidos no máximo 5 ficheiros por execução, cada um até 5 MB.

  • Se o dicionário files contiver mais de 5 entradas, é lançada uma ExpectedException com a mensagem “Apenas é permitido um máximo de 5 ficheiros por execução.” antes de qualquer upload ser efetuado.
  • Se algum ficheiro exceder os 5 MB, é lançada uma ExpectedException com a mensagem “O ficheiro ‘’ excede o tamanho máximo permitido de 5 MB.” — também antes de qualquer upload ser efetuado.

Tal como nas restantes execuções, se o utilizador não tiver o token de licença do Pulse é lançada uma NotSupportedException.

Formatos de ficheiro suportados

Os formatos aceites são os seguintes:

CategoriaExtensões
PDF.pdf
Imagens.jpg, .png
Texto.txt, .md, .json, .xml, .csv
Documentos.doc, .docx
Apresentações.ppt, .pptx
Folhas de cálculo.xls, .xlsx

Exemplo

O exemplo abaixo envia um contexto com dados de vendas e um ficheiro PDF (por exemplo, um relatório de faturação) para que o modelo cruze a informação tabular com o conteúdo do documento.

using StdBE100;

var contexts = new List()
{
    new StdBEUserPromptFunctionContext()
    {
        Background = @"O contexto dos dados contém as vendas com a faturação aos clientes agrupadas por artigo com o total das quantidades e valores das vendas faturadas.
A tabela contém as colunas para este contexto:
[Cliente] que indica o nome do cliente;
[Artigo] que representa o nome do artigo;
[QuantidadeTotal] que representa a quantidade total comprada pelo cliente para o artigo;
[TotalLiquido] que indica a faturação total desse artigo ao cliente.",
        Data = tabelaVendas
    }
};

// Ficheiros a enviar (nome do ficheiro -> conteúdo binário)
var files = new Dictionary<string, byte[]="">
{
    { "RelatorioFaturacao.pdf", File.ReadAllBytes("RelatorioFaturacao.pdf") }
};

string humanQuestion = "Confirma se os valores de faturação do relatório em anexo coincidem com os dados de vendas fornecidos e identifica eventuais divergências.";

string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunctionFiles(contexts, humanQuestion, files);
O exemplo seguinte demonstra uma chamada apenas com ficheiros, sem contexto tabular associado:
var files = new Dictionary<string, byte[]="">
{
    { "Fatura001.pdf", File.ReadAllBytes("Fatura001.pdf") },
    { "Fatura002.pdf", File.ReadAllBytes("Fatura002.pdf") }
};

string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunctionFiles(
    null,
    "Resume o conteúdo das faturas em anexo e indica o valor total faturado.",
    files
);
</string,></string,>

Notas gerais

  • O resultado é sempre devolvido como texto livre e deve ser interpretado pelo código chamador.
  • Na execução com ficheiros, cada ficheiro é carregado individualmente antes da chamada à prompt function; se o upload de algum dos ficheiros falhar, o pedido não é efetuado.
  • Um projeto base com exemplos de implementação está disponível no GitHub da Primavera.
Adicionar aos favoritos ou partilhar este artigo
Esta página foi útil?
Obrigado pelo seu voto.
Artigos Relacionados
Começar a Usar Como criar um projeto de integração com Visual Studio? Como criar um projeto de extensibilidade de interface (PEX) com Visual Studio? Como criar um projeto de extensibilidade de API (Motor) com Visual Studio? Como criar separadores do utilizador com Visual Studio?
Últimos Artigos Vistos
Questões frequentes sobre a Web API