Função PromptFunctions do Cegid Pulse

Prev Next
  • PT

  • AO

  • MZ

  • CV

  • CS

  • Evolution

  • Web

  • Desktop


O objetivo desta funcionalidade é simplificar a integração com modelos de AI e permitir que as respostas sejam geradas de forma mais flexível e centralizada, através da plataforma Cegid Pulse.


Funcionamento em Web

Requisitos

Para utilizar esta funcionalidade, é necessário cumprir os seguintes requisitos:

  • Cegid PHC Evolution

  • Plano Advanced ou superior

  • Módulo Cegid Pulse

A função de implementador PromptFunction permite obter respostas geradas por modelos de Inteligência Artificial do Cegid Pulse. Esta função pode ser utilizada em diferentes cenários, como por exemplo:

  • Geração automática de textos

  • Tradução de conteúdos

  • Resumo de informação

  • Geração de emails

  • Análise ou interpretação de dados

A função pode ser utilizada em vários contextos da aplicação, incluindo:

  • Eventos

  • Opções de utilizador

  • Código personalizado

A função foi adicionada ao editor de código, disponível em alguns ecrãs da aplicação. A função encontra-se no separador Funções, enquanto o respetivo exemplo de utilização está disponível no separador Exemplos. Esta organização permite tenha um acesso rápido tanto à função como a exemplos práticos da sua utilização.

Parâmetros da função

A função PromptFunction é composta pelos seguintes parâmetros:

1. UserQuestion

  • Tipo: String

  • Define a pergunta ou pedido enviado ao modelo de Inteligência Artificial

  • Este parâmetro corresponde à instrução principal utilizada para gerar a resposta

  • Exemplo: Escreve um email para um cliente a agradecer a sua preferência.

2. ContextDescription

  • Tipo: String

  • Define o contexto ou instruções adicionais que ajudam o modelo de Inteligência Artificial a gerar uma resposta mais adequada

  • Este parâmetro pode ser utilizado para orientar o estilo, formato ou comportamento da resposta

  • Exemplos de utilização: Responde em português europeu

3. ContextData

  • Tipo: DataTable

  • Define dados estruturados que podem ser utilizados como contexto adicional na geração da resposta

  • Estes dados são enviados para o modelo para permitir análises ou respostas baseadas em informação estruturada

  • Exemplo de utilização: Utilizar uma DataTable com informação de clientes, documentos ou outros dados da aplicação para apoiar a geração da resposta.

4. Culture

  • Tipo: String

  • Parâmetro opcional

  • Define a cultura utilizada para gerar a resposta

  • Caso não seja definida, é utilizada por defeito a cultura da sessão atual

  • Exemplo: pt-PT

Para garantir compatibilidade com implementações existentes, a função GetGenAIAnswer continua disponível. As implementações que utilizam esta função continuam a funcionar sem necessidade de alterações. Internamente, esta função passa agora a utilizar a PromptFunction, sendo considerados apenas os parâmetros necessários para esta nova abordagem. Todos os restantes parâmetros anteriormente utilizados deixam de ter efeito.

No Cegid Pulse Studio, é possível utilizar diferentes modelos de Inteligência Artificial, nomeadamente Abacus e OpenAI, cada um com características específicas. O modelo Abacus apresenta melhor desempenho em cenários que envolvem análise e interpretação de dados numéricos. Por defeito, o comportamento da função PromptFunction depende dos parâmetros enviados:

  • Quando os parâmetros Pergunta, Contexto e Dataset são todos preenchidos, o pedido é processado pelo modelo Abacus.

  • Caso contrário, se apenas alguns destes parâmetros forem utilizados, o pedido é processado pelo modelo OpenAI.


Funcionamento em Desktop

Requisitos de utilização

Para utilizar esta funcionalidade, é necessário cumprir os seguintes requisitos:

  • Cegid PHC Evolution

  • Plano Advanced ou superior

  • Módulo Cegid Pulse

A função de implementador PromptFunction permite obter respostas geradas por modelos de Inteligência Artificial do Cegid Pulse. Esta função pode ser utilizada em diferentes cenários, como por exemplo:

  • Geração automática de textos

  • Tradução de conteúdos

  • Resumo de informação

  • Geração de emails

  • Análise ou interpretação de dados

Parâmetros da função

A função PromptFunction é composta pelos seguintes parâmetros:

1. Pergunta

  • Tipo: Caracter

  • Define a pergunta ou pedido enviado ao modelo de Inteligência Artificial

  • Este parâmetro corresponde à instrução principal que será utilizada para gerar a resposta

  • Exemplo: Escreve um email para um cliente a agradecer a sua preferência.

2. Contexto

  • Tipo: Caracter

  • Define o contexto ou instruções adicionais que ajudam o modelo de Inteligência Artificial a gerar uma resposta mais adequada

  • Este parâmetro pode ser utilizado para orientar o estilo ou formato da resposta

  • Exemplo de utilização: Responde em português europeu

3. Dataset

  • Tipo: Caracter

  • Define os dados que podem ser utilizados como contexto adicional na geração da resposta

  • O dataset pode ser passado de duas formas: através de um cursor ou através de texto estruturado em formato CSV

  • Exemplo: CL (neste caso, será utilizado o dataset da tabela Clientes)

4. Idioma

  • Tipo: Caracter

  • Parâmetro opcional

  • Define o idioma em que a resposta deve ser gerada

  • Se este parâmetro não for definido, o sistema segue a seguinte ordem:

    • 1. idioma configurado na ficha do utilizador

    • 2. idioma definido no sistema

    • Exemplo: pt-PT

Durante a execução da função podem ocorrer as seguintes mensagens:

  • Falta de requisitos: Caso o módulo Cegid Pulse não esteja ativo, é apresentada a mensagem: "Não tem os requisitos necessários para utilizar esta funcionalidade."

  • “Erro na execução da Prompt Function”: Caso ocorra um erro durante a execução da função:

  • "Ocorreu um erro ao executar a Prompt Function Cegid Pulse. Contacte o administrador de sistema."

No Cegid Pulse Studio, é possível utilizar diferentes modelos de Inteligência Artificial, nomeadamente Abacus e OpenAI, cada um com características específicas. O modelo Abacus apresenta melhor desempenho em cenários que envolvem análise e interpretação de dados numéricos. Por defeito, o comportamento da função PromptFunction depende dos parâmetros enviados:

  • Quando os parâmetros Pergunta, Contexto e Dataset são todos preenchidos, o pedido é processado pelo modelo Abacus.

  • Caso contrário, se apenas alguns destes parâmetros forem utilizados, o pedido é processado pelo modelo OpenAI.

Exemplo

O exemplo seguinte demonstra a utilização da função PromptFunction para gerar automaticamente o corpo de um email em formato HTML a partir das faturas em aberto de um cliente.

local lbOk, lcSql, lcFileDir, lcContextData, lcContextDescription local lcUserQuestion, lcRespostaPulse, lnSucess

lcRespostaPulse = "" lcContextDescription = "" lcContextData = "" lcUserQuestion = "" lcfiledir = "" lnSucess = 0 lbOk = .f.

* Verificar se o e-mail está preenchido na ficha do cliente if used("cl") and !eof("cl") and empty(cl.email) msg("É necessário preencher o e-mail na ficha do cliente.") return lbOk endif

* Mensagem informativa actform("A enviar e-mail ao cliente...")

* Query para obter as faturas por regularizar do cliente lcSql = " select ft.nmdoc as Serie, ft.fno as Numero, ft.fdata as DataEmissao, ft.pdata as DataVencimento, ft.etotal as Total, sum((cc.edeb-cc.edebf)-(cc.ecred-cc.ecredf)) as TotalDivida " lcSql = lcSql + " from cc inner join ft on cc.no=ft.no and cc.estab=ft.estab and cc.ftstamp = ft.ftstamp " lcSql = lcSql + " where ft.fno > 0 and cc.no ="+astr(cl.no)+" and cc.estab= "+astr(cl.estab) lcSql = lcSql + " And (case when cc.moeda=´EURO´ Or cc.moeda=space(11) then abs((cc.edeb-cc.edebf)-(cc.ecred-cc.ecredf)) else " lcSql = lcSql + " abs((cc.debm-cc.debfm)-(cc.credm-cc.credfm)) end) > (case when cc.moeda =´EURO´ Or cc.moeda =space(11) then 0.010000 Else 0 end) " lcSql = lcSql + " and cc.origem<>´RD´ and cc.origem<>´CH´ " lcSql = lcSql + " group by ft.nmdoc, ft.fno, ft.fdata, ft.pdata, ft.etotal " lcSql = lcSql + " order by ft.fdata desc, ft.nmdoc, ft.fno "

* Obter o cursor das faturas por regularizar e transformar em formato CSV if u_sqlexec(lcSql, "cr_regdocs") and !eof("cr_regdocs") lcFileDir = tmp_dir + "cr_regdocs" + ".csv" lbOk = listtocsv("cr_regdocs") if lbOk lcContextData = filetostr(lcFileDir) delete file (lcFileDir) endif endif fecha("cr_regdocs")

* Caso não existam faturas em aberto if not lbOk deactform() msg("Não existem faturas por regularizar do cliente "+ alltrim(cl.nome) +".") return lbOk endif

* Definir o contexto para a fonte de dados (CSV) text to lcContextDescription textmerge noshow Contexto: Os dados fornecidos representam as últimas 5 faturas emitidas ao cliente que ainda se encontram por regularizar. A empresa que emitiu esses documentos é Cegid PHC com NIF 502199326.

O cliente tem os seguintes dados: - Nome: <> - NIF: <>

Os dados adicionais são fornecidos em formato CSV (separador ponto e vírgula) e cada linha representa uma fatura em aberto.

As colunas do CSV seguem a seguinte estrutura: 1. Serie – Série da fatura 2. Numero – Número da fatura 3. DataEmissao – Data de emissão da fatura (formato DD.MM.YYYY) 4. DataVencimento – Data limite de pagamento (formato DD.MM.YYYY) 5. Total – Valor total da fatura com IVA incluído 6. TotalDivida – Valor total em dívida da fatura

O objetivo é utilizar estes dados para comunicar com o cliente de forma profissional e clara. endtext

* Definir a pergunta/pedido para o Cegid Pulse text to lcUserQuestion textmerge noshow Com base no contexto e no CSV fornecido, cria o corpo de um e-mail HTML moderno e profissional.

Regras obrigatórias: - Devolver exclusivamente HTML puro (sem Markdown). - Utilizar apenas CSS inline. - Criar um layout moderno com container centralizado. - Incluir um resumo com número de faturas e total em dívida. - Apresentar uma tabela com os dados das faturas. - Destacar visualmente os valores em dívida. - Utilizar um tom profissional e institucional. - No final adicionar uma assinatura profissional da empresa. endtext

* Obter a resposta do Cegid Pulse lcRespostaPulse = PromptFunction(lcUserQuestion, lcContextDescription, lcContextData)

if empty(lcRespostaPulse) deactform() msg("Não foi possível obter a resposta do Cegid Pulse. Tente novamente mais tarde.") return .f. endif

* Remover possíveis caracteres inválidos lcRespostaPulse = STRTRAN(lcRespostaPulse, "```html", "") lcRespostaPulse = STRTRAN(lcRespostaPulse, "```", "")

* Enviar e-mail em formato HTML para o cliente lnSucess = u_sendmailhtml(alltrim(cl.email), ; "Regularização de Faturas em Aberto – Cegid PHC", ; lcRespostaPulse,"",.f.,.t.)

deactform()

if lnSucess=0 msg("E-mail enviado com sucesso.") else msg("Ocorreu um erro ao enviar o e-mail. Verifique análise interna.") endif

Compatibilidade com funções GenAI

Para garantir compatibilidade com implementações existentes, a função GetGenaiAnswer continua disponível. As implementações que utilizam esta função continuam a funcionar, contudo alguns parâmetros anteriormente utilizados deixam se aplicar dado que a configuração da geração de respostas passa a ser gerida através do Cegid Pulse.

  • Id: define o local de onde é chamada a função e preenche o campo Id de contexto no ecrã Log de atividade das consultas GenAI;

  • DatasetTitle: define o título da listagem de dados;

  • Temperatura: define o tipo de resposta (Objetiva, Neutra ou Criativa);

  • TemperaturaDec: define o nível de criatividade da resposta;

  • Tamanho: define o tamanho da resposta (Curta, Média ou Longa);

  • Modelo: define o modelo (Legado, Padrão ou Especial).

As seguintes funções não estão disponíveis:

  • ShowGenAi

  • GetPromptToCopy

Sempre que estas funções forem executadas será apresentada a seguinte mensagem: "Esta funcionalidade já não se encontra disponível".