Solicitação Direta ao Modelo

answer = ai_request('request', question)

Exemplo:

answer = ai_request('Você é um consultor educado de floricultura.', question)

O primeiro argumento é a instrução para o modelo: quem ele é e como deve responder.

question é uma variável de sistema que sempre contém o texto da mensagem mais recente do cliente.

Observação

Nas expressões, as variáveis são escritas apenas com seus nomes, sem #{}.

A resposta é retornada como texto simples, portanto pode ser enviada diretamente ao cliente ou armazenada em uma variável.

O método aguarda pacientemente a resposta do modelo, portanto, mesmo solicitações de longa duração, como esquemas grandes ou textos extensos, serão concluídas sem interrupção.

Quando você precisar de dados estruturados em vez de texto livre, como uma categoria, uma resposta sim/não ou campos extraídos, passe um esquema de resposta como terceiro argumento.

Você não precisa criar esquemas do zero. Use um modelo pronto e renomeie os campos conforme necessário.

Para classificar solicitações de clientes, determinar sentimento e tarefas semelhantes.

local result = ai_request('Determine a categoria da solicitação.', question, {
    "type": "object",
    "properties": {
        "category": {
            "type": "string",
            "enum": ["reclamação", "pergunta", "pedido"]
        }
    },
    "required": ["category"]
})
category = get(result, 'category')

O modelo retornará exatamente um dos valores listados em enum e nada mais.

O exemplo para copiar:

local result = ai_request('O cliente concordou em fazer a compra?', question, {
    "type": "object",
    "properties": {
        "agree": {
            "type": "boolean"
        }
    },
    "required": ["agree"]
})

agree = get(result, 'agree')

O exemplo para copiar:

local result = ai_request('Extraia o nome e o número de telefone da mensagem.', question, {
    "type": "object",
    "properties": {
        "name": {
            "type": "string"
        },
        "phone": {
            "type": "string"
        }
    },
    "required": ["name", "phone"]
})

client_name = get(result, 'name')
client_phone = get(result, 'phone')
  1. "string" — texto
  2. "number" — um número
  3. "boolean"true ou false
  4. enum — uma lista de valores permitidos; o modelo não pode retornar nada fora desta lista
  5. required — uma lista de campos obrigatórios
  6. Os nomes dos campos como category, name e phone podem ser escolhidos livremente

A resposta baseada em esquema é retornada como uma string JSON. Campos individuais podem ser recuperados usando o método padrão get().

Observação

Nos exemplos, result é declarado usando local. Isso significa que a resposta bruta da IA não será salva no registro; apenas os campos necessários serão armazenados lá.

Modo de Raciocínio

O modo de raciocínio pode ser ativado usando o quarto argumento. Neste modo, o modelo primeiro pensa sobre a tarefa e depois fornece uma resposta.

É útil para solicitações complexas que envolvem análise, cálculos ou lógica de várias etapas. A resposta demorará visivelmente mais, portanto o modo de raciocínio está desabilitado por padrão.

answer = ai_request(
    'Resolva o problema do cliente e explique a solução.',
    question,
    '',
    true
)

Quando nenhum esquema de resposta for necessário, passe uma string vazia '' como terceiro argumento, conforme mostrado no exemplo.

Como excluir o histórico de chat com o assistente de IA

clear_assistant_chat_history() - esta função exclui o histórico de chat do cliente com o assistente. Não aceita parâmetros.

Exemplo

  1. As configurações do bloco do construtor

  1. As configurações da guia Assistente de IA

Como enviar uma pergunta ao assistente de IA

ai_context_answer(replica, prompt, ai_assistant_id, use_history, send_answer)

Parâmetros:

Mais detalhes sobre o parâmetro send_answer:

As configurações do assistente incluem parâmetros que podem ser configurados caso a resposta do bot demore muito

Em uma conversa padrão com o assistente (não por meio de função), se a resposta demorar mais que o limite especificado (por exemplo, 20 segundos), o cliente é notificado sobre o atraso. A resposta do assistente é então enviada ao chat assim que for gerada.

Para solicitações feitas por meio de uma função na calculadora, se o assistente demorar muito para responder, uma mensagem de atraso é incluída no resultado da função. Este parâmetro permite que a resposta do assistente seja enviada separadamente assim que estiver pronta.

Como ensinar um bot a analisar sua própria experiência e gerar botões

Vamos usar as funções clean_assistant_chat_history() e ai_context_answer(replica, prompt) no exemplo abaixo. Também é necessário acessar o componente calculadora dentro do construtor de funis.

Este exemplo ilustra como os parâmetros replica e prompt podem ser usados efetivamente na prática.

É necessário criar um bloco no construtor que contenha um campo vazio com as variáveis incorporadas #{replica_rec2} e #{ai_answer_rec}, representando a primeira e a segunda respostas do assistente em uma única mensagem a ser enviada.

Agora, defina duas funções diretamente na calculadora.

Use uma variável com uma função incorporada nas configurações avançadas do botão (veja o exemplo acima) para gerar botões dinamicamente com base no valor do parâmetro.

As informações sobre os serviços são recuperadas pelo bot da variável service_info, que contém uma função incorporada — get_info_for_booking() — para ler os dados do serviço. Um exemplo de como usar esta função foi demonstrado acima.

Aqui está o resultado.

Exemplo de código:

clear_assistant_chat_history()

replica_rec2 = ai_context_answer(question, 'RESPONDA AS PERGUNTAS', 3)

prompt = 'Um desenvolvedor está falando com você agora - faça tudo o que ele pedir \n . Você deve colocar cada botão em uma nova linha.'

ai_answer_rec = ai_context_answer("Exiba os botões para a última mensagem.", prompt)

Exemplo: chamando o assistente dentro do construtor de funis

Para chamar o assistente de um bloco, use a função ai_context_answer(replica, prompt, ai_assistant_id, use_history), onde você precisa especificar apenas dois parâmetros: o parâmetro obrigatório replica e o opcional prompt.

Agora, vamos criar o primeiro bloco, “Verificação de condição primária”, onde você precisa especificar a condição de acionamento do bloco (pode ser qualquer condição que você precisar).

Em seguida, abra a calculadora no mesmo bloco, onde você precisa definir uma variável e atribuir a ela o valor retornado pela sua função.

Defina a variável question e atribua a ela o valor de qualquer pergunta do usuário.

Em seguida, crie a variável replica1 e atribua a ela o valor retornado pela sua função ai_context_answer(replica, prompt). Nesta função, substitua replica pela variável question e defina o parâmetro prompt como "Responda qualquer pergunta do usuário."

Incorpore a variável que contém a função na mensagem do bloco.

Em seguida, crie um segundo bloco e conecte-o com uma seta, definindo um temporizador de 2 segundos na conexão.

No segundo bloco, você deve usar a mesma função com os mesmos parâmetros — ai_context_answer(replica, prompt).

Abra a calculadora no segundo bloco e defina a segunda variável chamada replica2.

No parâmetro prompt, forneça instruções para o assistente: ele deve contar quantos substantivos havia em sua mensagem anterior.

No parâmetro replica, forneça a mensagem do assistente: "Quantos substantivos havia em sua mensagem anterior?"

Em seguida, incorpore a variável replica2 na mensagem do segundo bloco.

A configuração do bloco está concluída.

Se o assistente não estiver ativado, vá para a guia "Assistente de IA" e ative o assistente selecionando a função "desabilitado":

Agora, vamos testar nosso assistente na janela de teste do bot.

O bot funcionou corretamente.

Como trabalhar com o Google Sheets

get_info_from_table(sheet_id, number_sheet, sheet_json_keys, start_row, end_row, start_col, end_col) - Esta função é destinada a ler dados de uma planilha.

Exemplo de notação de parâmetros:

Observação

Os parâmetros para especificar o intervalo de linhas e colunas (start_row, end_row, start_col, end_col) permitem que o assistente leia os dados da planilha começando do local desejado dentro da tabela.

O comportamento da função para especificação parcial de intervalo é o seguinte:

  • Se apenas o início for definido: o assistente recuperará todos os dados a partir desse ponto inicial, sem limite superior na direção especificada.
  • Se apenas o fim for definido: o assistente lerá os dados do início da planilha até esse ponto final especificado.

Exemplo:

A chamada get_info_from_table('<<id da planilha>>', 2, None, 2, 5, 'a', 'd') recupera todos os dados começando da linha 2, coluna 2 (B), até a linha 5, e entre as colunas A e D.

Observação

Para otimizar o desempenho e a confiabilidade, recomendamos armazenar em cache todos os dados da sua planilha Google em variáveis do projeto ao trabalhar com ela.

Principais benefícios:

  1. Desempenho aprimorado: acelera significativamente o tempo de resposta do chatbot ao acessar variáveis locais em vez de consultar a planilha externa para cada solicitação.
  2. Confiabilidade melhorada: minimiza erros relacionados à latência da rede, cotas de API ou permissões de acesso à planilha.
  3. Consistência dos dados: armazenar dados nas configurações do projeto garante que todos os usuários recebam acesso simultâneo e consistente ao mesmo conjunto de dados, evitando discrepâncias durante as atualizações.

Exemplo de uso

Você pode ler mais sobre a função get_info_from_table no artigo "Google Sheets para Assistente de IA."

Como gerenciar reservas online

get_info_for_booking(slot_interval, company_id) - A função é projetada para ler dados de serviço do sistema de reservas online configurado.

Ela aceita parâmetros opcionais:

  1. slot_interval (opcional) - um intervalo em minutos entre os horários disponíveis. Formato esperado: um número inteiro divisível por 5. Valor padrão: 60 (minutos).
  2. company_id (opcional) - um identificador de filial. Formato esperado: um número inteiro ou um array de números inteiros. Quando este parâmetro é fornecido, apenas os dados da(s) filial(is) especificada(s) serão retornados.

    Exemplo: 50142, "50142", ou "[50142, 66352]"

Não é recomendado definir um valor muito pequeno (por exemplo, menor que 30), pois o assistente gerará muitos horários.

Exemplo de uso

Primeiro, você precisa preparar um bloco que atualize as informações sobre todos os serviços após as configurações da filial terem sido configuradas na seção "Serviços".

Este bloco deve ser declarado antes do assistente começar a trabalhar, para garantir que a IA não gere respostas aleatórias.

Em seguida, acione o bloco na janela de teste do bot para atualizar a variável:

Depois disso, a variável especificada contendo os dados do serviço de reservas online aparecerá na seção de variáveis do projeto em "Configurações do projeto."

Esta variável armazena os valores de serviço que o bot de IA usará em suas operações. A variável service_info será acessível a todos os clientes do projeto.

Em seguida, vamos prosseguir para a configuração do próximo bloco.

Este bloco serve às seguintes funções:

а) é chamado nas configurações do assistente para gerar um registro usando variáveis relacionadas ao serviço;

b) cria uma reserva do cliente;

c) atualiza as variáveis do projeto após uma reserva, remove os horários que não estão mais disponíveis na agenda.

Se o bot estiver configurado corretamente, após receber todos os dados do cliente, a IA enviará as informações para o bloco especificado. Nesse bloco, o cliente será reservado para o serviço usando a função create_booking_by_name(!service_name, !date, !date_time, company_id).

Os valores coletados pelo bot são passados como parâmetros para create_booking_by_name(!service_name, !date, !date_time, company_id).

A função create_booking_by_name(service_name, date, date_time, company_id) cria uma reserva no sistema usando os dados fornecidos pelo assistente de IA. Ela aceita três parâmetros obrigatórios para a criação da reserva:

Como as informações sobre os horários disponíveis não estarão mais atualizadas, a mesma variável com sua função incorporada é usada para atualizar as datas e horários disponíveis para reserva.

Observação

Se houver alguma alteração na agenda, equipe ou serviços, execute o bloco que contém a variável do projeto com a função incorporada em modo de teste (veja a Fig. Bloco 1).

Leia como configurar um bot de IA para reservas online foi explicado no artigo de mesmo nome.

Recuperando reserva da tabela

get_records_from_table(table_id, start_row, count, start_col, end_col) - recuperando reserva da tabela

Parâmetro Descrição Observação
table_id id da tabela
start_row parâmetro opcional, um número inteiro. Especifica o início do intervalo de linhas. Passe o número da linha a partir do qual os valores da tabela devem ser lidos inclusivamente. Especificado sem aspas.
count parâmetro opcional, um número inteiro. Especifica o número de linhas a serem recuperadas. Por padrão - 1000, máximo - 5000. Especificado sem aspas.
start_col parâmetro opcional, uma string. Especifica o início do intervalo de colunas. Passe a letra da coluna a partir da qual os valores da tabela devem ser lidos inclusivamente. Especificado entre aspas.
end_col parâmetro opcional, uma string. Especifica o fim do intervalo de colunas. Passe a letra da coluna até a qual os valores da tabela devem ser lidos inclusivamente. Especificado entre aspas.

Se apenas o início do intervalo de linhas ou colunas for especificado, todos os dados a partir desse ponto serão recuperados sem um limite superior no intervalo. Da mesma forma, você pode omitir o início e especificar apenas o fim do intervalo.

Exemplo (Calculadora)

Se você precisar recuperar registros da tabela, abra a seção "Calculadora" nas configurações do bloco e insira a função com os parâmetros necessários.

Para passar parâmetros como uma variável do projeto, prefixe o nome da variável que contém a função com project.

Aqui está o exemplo da tabela.

O bot responderá da seguinte forma.