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 frontend
Disponibilizar o pop-up da Cris via função sdk:
Name |
Description |
Type |
Required |
Default Value |
context |
Contexto |
String |
False |
|
question |
Pergunta |
String |
False |
|
aiTemperature |
Temperatura da resposta |
AiTemperatureEnum (1 – Objective, 2 – Normal, 3 – Creative) |
False |
O que tivermos definido no parâmetro: Tipo(ge_genai_type) |
aiResponseSize |
Tamanho da resposta |
AiResponseSizeEnum (1 – Short, 2 – Normal, 3 - Long) |
False |
O que tivermos definido no parâmetro: Tamanho(ge_genai_size) |
aiModel |
Modelo da 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” |
promptTitle |
Título do pop-up |
String |
False |
|
sticky_note_2Notas
Ao chamar esta função, o modal da Cris é aberta, permitindo fazer perguntas conforme desejado. Este pop-up abre sempre sem o contexto dos parâmetros, independentemente do valor passado no context. Para os demais parâmetros (aiTemperature, aiResponseSize, aiModel), caso não sejam preenchidos, serão aplicados os valores configurados nos parâmetros do PHC GO como padrão.
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