-
Notifications
You must be signed in to change notification settings - Fork 0
/
gpt_functions.go
80 lines (77 loc) · 3.8 KB
/
gpt_functions.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package main
import (
"time"
openai "github.com/sashabaranov/go-openai"
"github.com/sashabaranov/go-openai/jsonschema"
)
var getProductsAndDate = openai.FunctionDefinition{
Name: "getProductsAndDate",
Description: "Get products from user based on his queries and date of delivery",
Parameters: jsonschema.Definition{
Type: "object",
Properties: map[string]jsonschema.Definition{
"products": {
Type: "array",
Description: `O usuário informará os vapes, pods, coils e juices que ele quer comprar.
Ele pode informar a marca ou modelo destes.
Exemplos: "SMOK Nord 2, SWAG Kit, SWAG PX80" no caso de PODs, "Freebase" no caso de Juices para Vapes, etc.
Para cada item informado, retorne o item, o sabor, a quantidade e o volume.
Se algum desses campos não for informado, retorne valor vazio.
Exemplo: "Quero um juice de morango de 30ml". Resposta: "juice", "morango", "1", "30".
Outro exemplo: "Quero um vape". Resposta: "vape", "", "1", "0".`,
Items: &jsonschema.Definition{
Type: "object",
Properties: map[string]jsonschema.Definition{
"item": {
Type: "string",
Description: `O usuário informará os vapes, pods, coils e juices que ele quer comprar.
Ele pode informar a marca ou modelo destes.
Exemplos: "SMOK Nord 2, SWAG Kit, SWAG PX80" no caso de PODs, "Freebase" no caso de Juices para Vapes, etc.
Outro exemplo: "Vou querer um pod SWAG Kit de morango." Retorne: "SWAG Kit"`,
},
"flavor": {
Type: "string",
Description: `Se o usuário informar que quer comprar um Juice como produto, ele poderá informar os sabores.
Aqui os sabores podem ser tanto de juices quanto de nicsalts.
Juice é para Vape e Nicsalt é para POD.
Exemplo: "Freebase de morango", "Nicsalt de uva". Salve apenas os sabores.
Exemplo: "Vou querer um pode SWAG Kit de morango." Retorne: "morango"
Se o usuário não informar item "juice" ou "nicsalt", retorne valor vazio.
Exemplo: "Vou querer um vape e um pod". Resposta: ""
Exemplo: "Amanhã não é um bom dia pra mim, mas vou buscar próxima segunda-feira as 14h00". Resposta: ""`,
},
"quantity": {
Type: "integer",
Description: `O usuário informará a quantidade de itens que ele quer comprar.
Ele pode informar diferentes quantidades, para cada item diferente.
Exemplos: "2 Freebase de morango", "3 vapes de menta". Retorne apenas a quantidade.
Exemplo: "Vou querer um juice de morango". Resposta: "1"`,
},
"volume": {
Type: "string",
Description: `Retorne a quantidade de ml do produto em numeral.
"Exemplo: "Vou querer um juice de morango de 30ml". Resposta: "30".
"Retorne "0" se o usuário não informar o volume. Exemplo: "Vou querer um juice de morango". Resposta: "0"`,
Enum: []string{"0", "15", "30", "60", "100"},
},
},
Required: []string{"product", "flavor", "quantity", "volume"},
},
},
"date": {
Type: "string",
Description: `Hoje é ` + date + `. Então amanhã é ` + time.Now().AddDate(0, 0, 1).Format("2006-01-02") + `. Depois de amanhã é ` + time.Now().AddDate(0, 0, 2).Format("2006-01-02") + `. E assim por diante.
Se o usuário não informar data, retorne a data de hoje. Exemplo: "Vou querer um juice de morango e um vape". Resposta: "` + date + `"`,
},
"time": {
Type: "string",
Description: `Retorne a hora informada pelo usuário no formato hh:mm.
Use ":" para separar hora de minutos.
Exemplo: "Vou buscar aí amanhã as 14h30", retorne: "14:30".
Exemplo: "Vou buscar aí amanhã as 13h10", retorne: "13:10".
Retorne a hora nesse formato: "hh:mm" Se o usuário não infomar hora, retorne "".
Exemplo: "Vou querer um juice de morango e um vape". Resposta: ""`,
},
},
},
}