Como executar uma Prompt Function no Cegid Pulse?
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: Antes de invocar qualquer execução, a plataforma deve estar inicializada: Envia um único contexto com dados em formato de texto (tipicamente CSV) e uma instrução em linguagem natural. Os três parâmetros são obrigatórios; valores vazios produzem comportamento indefinido. Exemplos 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. StdBEUserPromptFunctionContext: EnumSmartActionExecutionType: O exemplo abaixo analisa stock e encomendas a fornecedores em simultâneo, enviando dois contextos distintos sem recorrer a cálculos. 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. Usa a mesma estrutura StdBEUserPromptFunctionContext (Background + Data) descrita na secção anterior. Apenas são permitidos no máximo 5 ficheiros por execução, cada um até 5 MB. Tal como nas restantes execuções, se o utilizador não tiver o token de licença do Pulse é lançada uma NotSupportedException. Os formatos aceites são os seguintes: 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.Execução Contextos Dados Ficheiros Cálculos Simples 1 string (CSV ou outro formato tabular) Não Sim Múltiplos contextos 1 ou mais DataTable por contexto Não Configurável Com envio de ficheiros 1 ou mais (opcional) DataTable por contexto 1 a 5 (máx. 5 MB cada) Não Pré-requisitos
PriEngine.CreatContext(empresa, utilizador, password, instancia);
1. Execução simples
string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunction(
string contextDescription,
string contextData,
string humanQuestion
);
Parâmetros
Parâmetro Tipo Descrição contextDescription string Descreve a estrutura e o significado dos dados fornecidos em contextData. contextData string Dados a processar. Não existe um formato fixo — formatos tabulares (CSV, TSV) funcionam bem para operações de ordenação, filtragem e agrupamento. humanQuestion string Instrução em linguagem natural que define o comportamento esperado. 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
string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunction(
IEnumerable contexts,
string humanQuestion,
EnumSmartActionExecutionType executionType
);
Parâmetros
Parâmetro Tipo Descrição contexts IEnumerable Lista de contextos a enviar ao modelo. Cada entrada contém uma descrição textual (Background) e os dados associados (Data). humanQuestion string Instrução em linguagem natural que define o comportamento esperado. executionType EnumSmartActionExecutionType Define se a execução usa cálculos. Ver tabela abaixo. Propriedade Tipo Descrição Background string Descrição dos dados fornecidos (contexto para o modelo). Data DataTable Dados a processar. Valor Descrição Contextos suportados WithCalculations Executa com suporte a expressões de cálculo. Apenas 1 — passar mais do que um contexto lança uma exceção. WithoutCalculations Executa sem cálculos. Todos os contextos são enviados num único pedido ao modelo. 1 ou mais Exemplo
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
Assinatura
string result = PriEngine.Platform.InterfacePublico.Pulse.UserPromptFunctionFiles(
IEnumerable contexts,
string humanQuestion,
Dictionary<string, byte[]=""> files
);
</string,>Parâmetros
Parâmetro Tipo Descrição contexts IEnumerable Lista de contextos a enviar ao modelo. Opcional — pode ser null ou vazia se a análise se basear apenas nos ficheiros enviados. humanQuestion string Instrução em linguagem natural que define o comportamento esperado. files Dictionary<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. Limites e requisitos
Formatos de ficheiro suportados
Categoria Extensõ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
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