Manuais
PHC GO Funções SDK - Cris
 
A Cris pode ser chamada partir dos seguintes locais no PHC GO:

  • Ecrã
  • Ecrã com uma listagem associada
  • Análise
  • Explorador de dados
  • Listagem


Função de backend


Fazer uma pergunta à Cris:
sdk.GenAiAPI.GetGenAiAnswer(GenAIQuestionContent, GenAiTypeEnum)



Obter as perguntas já construídas com base nos parâmetros gerais:
sdk.GenAiAPI.GetPromptToCopy(GenAIQuestionContent, GenAiTypeEnum)

Parâmetro 1 - GenAIQuestionContent


Construir um objeto do tipo:

  • GenAIfusqlContent: Para utilizar a Cris numa Análise.
  • GenAIMapDefCabContent: Para utilizar a Cris numa Listagem.
  • GenAIMainformContent: Para utilizar a Cris num Ecrã.

Propriedades comuns a todos os objetos:

Name Description Type
context Contexto String
question Pergunta String
aiTemperature Temperatura da resposta AiTemperatureEnum (1 – Objective, 2 – Normal, 3 – Creative)
aiResponseSize Tamanho da resposta AiResponseSizeEnum (1 – Short, 2 – Normal, 3 - Long)
entity Entidade String
aiModel Modelo da Cris AiModelEnum (1 – Simple, 2 – Versatile, 3 - Advanced)


Propriedades específicas de cada objeto:

GenAIfusqlContent


Name Description Type
fusqlStamp Stamp de análise String
cStamp Stamp do registo de for uma análise de registo String
cVars Variáveis da análise List(Of VarsVO)


Exemplo

Enviar um e-mail para o responsável de vendas, com resumo do que correu bem e do que correu mal das visitas. Esta lista de visitas é disponibilizada com base numa análise previamente criada.

dim emailTo as string = "mailto@mail.com"
dim emailFrom as String = "mailfrom@mail.pt"

Dim GenAIfusqlContent as New GenAiApi.GenAIfusqlContent()
GenAIfusqlContent.context = "O e-mail tem o propósito de ajudar o responsável de vendas a preparar a reunião semanal. É uma reunião entre o responsável de vendas e os vários vendedores da empresa. O e-mail deve ser simples, indicar o correu bem e o que correu mal e ações para serem abordadas na reunião semanal de equipa com ideias para cada uma dessas ações.O e-mail deve ser escrito em português europeu (Portugal)."
GenAIfusqlContent.question = "Escreve um e-mail para o responsável de vendas com base nas visitas que aconteceram na última semana Esse e-mail deve indicar o que correu bem e o que correu mal nas visitas"
GenAIfusqlContent.aiTemperature = GenAiApi.AiTemperatureEnum.Objective
GenAIfusqlContent.aiResponseSize = GenAiApi.AiResponseSizeEnum.Normal
GenAIfusqlContent.entity = "fusql"
GenAIfusqlContent.fusqlStamp = "z202406251656067730081718"

dim result as PHCResult= sdk.GenAiAPI.GetGenAiAnswer(GenAIfusqlContent, 2)

SDK.Email.send(emailFrom, emailTo, "Resumo semanal de atividades dos seus vendedores", result.scalarResult.stringresult, False)

GenAIMapDefCabContent


Name Description Type
mapdefcabstamp Stamp da listagem String
filterItems Filtros da listagem List(Of FilterItem)


GenAIMainformContent


Name Description Type Required Default Value
Context De que forma queremos que a pergunta seja respondida String True         
Question Pergunta String True
aiTemperature Como queremos que a resposta feita(Objetiva/Precisa, Normal, Criativa) AiTemperatureEnum (1 – Objective, 2 – Normal, 3 – Creative) False O que tivermos definido no parâmetro: Tipo(ge_genai_type)
aiResponseSize Tamanho da resposta(Curta, normal, longa) AiResponseSizeEnum (1 – Short, 2 – Normal, 3 - Long) False O que tivermos definido no parâmetro: Tamanho(ge_genai_size)
entity Entidade que será enviada como contexto string True
recordStamp Stamp do registo que queremos utilizar como contexto string True
genAiReportType Caso tenha análise associada, indica se é do tipo FuSql ou MapDefCab GenAiReportTypeEnum (0 - NONE, 1 – FUSQL, 2 - MAPDEFCAB) False GenAiReportTypeEnum.None
fusqlConfig No caso de genAiReportType.Fusql, devemos GenAIfusqlContent, Temos de ter aqui False
aiModel Modelo do Cris AiModelEnum (1 – Simple, 2 – Versatile, 3 - Advanced) False O que tivermos definido no parâmetro: Tamanho(ge_genai_model). Se o parâmetro estiver vazio, o padrão será “Versátil”


Exemplo 1

Ao gravar a ficha de um cliente, utilizando o conhecimento da Cris, preenche a informação do endereço da empresa com o site e nas observações informação da empresa.

Dim recordStamp as String = itemVO.clstamp

Dim genAIMainformContent As New GenAiApi.GenAIMainformContent()
genAIMainformContent.context = "Dá-me resposta apenas com os dados que peço sem texto antes ou depois. Só quero o URL na resposta, sem mais texto nenhum, a resposta deve começar com o https logo direto."
genAIMainformContent.question = "Dá-me o endereço do site desta empresa: " + itemVO.nome
genAIMainformContent.aiTemperature = GenAiApi.AiTemperatureEnum.Normal '(1 – Objective, 2 – Normal, 3 – Creative)
genAIMainformContent.aiResponseSize = GenAiApi.AiResponseSizeEnum.Normal '(1 – Short, 2 – Normal, 3 - Long)
genAIMainformContent.entity = "cl"
genAIMainformContent.recordStamp = recordStamp
genAIMainformContent.genAiReportType = 0
genAIMainformContent.aiModel = GenAiApi.AiModelEnum.Simple
Dim result as PHCResult = sdk.GenAiAPI.GetGenAiAnswer(genAIMainformContent, 1) '1 - MAINFORM, 2 - FUSQLMAPDEFCAB
itemVO.url = result.scalarResult.stringresult

genAIMainformContent.context = "Dá-me a resposta o mais completa possível, mas resume até 200 caracteres."
genAIMainformContent.question = "Procura e dá-me informação sobre esta empresa: " + itemVO.nome
genAIMainformContent.aiTemperature = GenAiApi.AiTemperatureEnum.Normal
genAIMainformContent.aiResponseSize = GenAiApi.AiResponseSizeEnum.Normal
genAIMainformContent.entity = "cl"
genAIMainformContent.recordStamp = recordStamp
genAIMainformContent.genAiReportType = 0

result = sdk.GenAiAPI.GetGenAiAnswer(genAIMainformContent, 1)
itemVO.obs = result.scalarResult.stringresult


Exemplo 2

Ao gravar nos Artigos e Serviços, quero traduzir automaticamente para os idiomas Inglês, Espanhol e Francês a designação e descrição técnica do artigo.

' Cria uma nova linha nos Idiomas
Dim idiomas As New List(Of String)()
idiomas.Add("Inglês")
idiomas.Add("Espanhol")
idiomas.Add("Francês")

For Each idioma As String In idiomas
Dim existeIdioma As Boolean = False

' Verifica manualmente se o idioma já existe na lista
For Each item As SiVO In itemVO.sis
If item.operation <> OperationEnum.Deleted and item.idiom = idioma Then
existeIdioma = True
Exit For
End If
Next

If Not existeIdioma Then
Dim genAIMainformContent As New GenAiApi.GenAIMainformContent()
' Adicionei a linha de Idiomas para designação
Dim itemDescricao As SiVO = SiVO.getNewInstance(Of SiVO)()
itemDescricao.idiom = idioma

Dim recordStamp As String = itemVO.ststamp
genAIMainformContent.context = "A resposta deve ser apenas a palavra traduzida, sem mais nenhum texto antes, nem depois. Caso não consigas traduzir, deves escrever 'Não consegui traduzir'."
genAIMainformContent.question = "Quero que traduzas a seguinte palavra para " + idioma + ": " + itemVO.design
genAIMainformContent.aiTemperature = GenAiApi.AiTemperatureEnum.Normal
genAIMainformContent.aiResponseSize = GenAiApi.AiResponseSizeEnum.Normal
genAIMainformContent.entity = "st"
genAIMainformContent.recordStamp = recordStamp
genAIMainformContent.genAiReportType = 0

Dim resultDescricao As PHCResult = sdk.GenAiAPI.GetGenAiAnswer(genAIMainformContent, 1)
itemDescricao.designTranslated = resultDescricao.scalarResult.stringresult

If Not isVoid(itemVO.desctec) Then
Dim genAIMainformContent2 As New GenAiApi.GenAIMainformContent()
genAIMainformContent2.context = "Dá-me resposta apenas com os dados que peço sem texto antes ou depois. Só quero a palavra ou frase traduzida na resposta, sem mais texto nenhum, a resposta deve começar com a tradução direto."
genAIMainformContent2.question = "Preciso que traduzas a seguinte frase para o idioma " + idioma + ": " + itemVO.desctec
genAIMainformContent2.aiTemperature = GenAiApi.AiTemperatureEnum.Normal
genAIMainformContent2.aiResponseSize = GenAiApi.AiResponseSizeEnum.Normal
genAIMainformContent2.entity = "st"
genAIMainformContent2.recordStamp = recordStamp
genAIMainformContent2.genAiReportType = 0
genAIMainformContent.aiModel = GenAiApi.AiModelEnum.Simple

Dim resultDescricaoTec As PHCResult = sdk.GenAiAPI.GetGenAiAnswer(genAIMainformContent2, 1)
itemDescricao.descTecTranslated = resultDescricaoTec.scalarResult.stringresult
End If

itemVO.sis.Add(itemDescricao)
actEntity(itemVO)
End If
Next


Exemplo 3

Ao gravar no ecrã de Atividades, pretendo estruturar a informação do relatório da visita.

Dim genAIMainformContent As New PHCBusinessLayer.GenAiApi.genAIMainformContent()
Dim recordStamp as string = itemVO.crmactivitystamp
genAIMainformContent.context = "Organiza a informação de forma estruturada. Os vários pontos devem estar agrupados pelas seguintes tipologias: Formação, Marketing, Vendas, Suporte e Outros pontos abordados. Caso não exista nenhuma informação para uma das tipologias deve indicar isso mesmo. Só deve ser utilizada informação para a resposta do campo ""Notes"" e mais nenhum outro campo. O texto deve ser escrito em Português Europeu (Portugal)"
genAIMainformContent.question = "Estrutura a seguinte informação: " + itemVO.notes
genAIMainformContent.aiTemperature = GenAiApi.AiTemperatureEnum.Normal
genAIMainformContent.aiResponseSize = GenAiApi.AiResponseSizeEnum.Normal
genAIMainformContent.entity = "CRMActivity"
genAIMainformContent.recordStamp = recordStamp
genAIMainformContent.genAiReportType = 0

dim result as PHCResult= sdk.GenAiAPI.GetGenAiAnswer(genAIMainformContent, 1)
Dim text as String = result.scalarResult.stringresult
itemVO.notes=text
save(itemVO)


Parâmetro 2 - GenAiTypeEnum




  • 1 - MAINFORM
  • 2 - FUSQLMAPDEFCAB
  • 3 - MAPDEFCAB
  • 4 - DATAEXPLORER