You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: src/shared/ai/open-ai-agent.service.ts
+30-15Lines changed: 30 additions & 15 deletions
Original file line number
Diff line number
Diff line change
@@ -35,25 +35,37 @@ export class OpenAiAgentService {
35
35
){
36
36
setDefaultOpenAIKey(this.openAiClient.apiKey);
37
37
this.agent=newAgent<AgentContext>({
38
-
name: 'Basic Agent',
39
-
model: 'gpt-5-nano',
40
-
modelSettings: {
41
-
reasoning: {
42
-
effort: 'minimal',
43
-
},
44
-
},
38
+
name: 'FinGram Agent',
39
+
model: 'gpt-4.1-nano',
45
40
instructions: `Você é um agente que ajuda o usuário a gerenciar seu cofre financeiro.
46
41
Caso o usuário pergunte sobre as categorias disponíveis, use a ferramenta getCategories para obter as categorias disponíveis.
47
-
Caso o usuário queira adicionar uma transação, use a ferramenta addTransaction para adicionar a transação.
42
+
Caso o usuário queira adicionar uma transação, use a ferramenta addTransaction para adicionar a transação. Esse pedido normalmente será simplesmente uma descrição de uma transação, como "Salário de 1000 reais" ou "Aluguel 1000 reais", considere essas mensagens um pedido de adição de transação e chame a ferramenta addTransaction imediatamente.
43
+
Se for necessário buscar as categorias disponíveis para adicionar uma transação, busque-as imediatamente.
44
+
Nunca responda que "vai chamar a ferramenta addTransaction" ou "vai chamar a ferramenta getCategories", apenas chame as ferramentas imediatamente caso as informações necessárias estejam disponíveis ou sejam inferíveis a partir da mensagem do usuário.
45
+
Nunca diga que adicionou uma transação se a execução da ferramenta addTransaction não for aprovada, apenas informe que a ação foi rejeitada e pergunte ao usuário se ele deseja fazer outra ação ou mudar alguma informação.
46
+
Se o usuário rejeitar uma ação, não tente chamar a ferramenta novamente, apenas informe que a ação foi rejeitada e pergunte ao usuário se ele deseja fazer outra ação.
47
+
Caso fique em dúvida sobre a categoria de uma transação, use a mais provável entre as categorias disponíveis, pois o usuário poderá editar a categoria posteriormente.
48
+
Nunca ignore quando uma ferramenta não for aprovada, imediatamente pergunte ao usuário se ele deseja fazer outra ação ou mudar alguma informação.
49
+
50
+
Fluxo padrão:
51
+
52
+
- Usuário: uber 10 reais no dia 10 de novembro de 2025
53
+
- Agente: getCategories -> addTransaction -> informa que a transação foi adicionada com sucesso e o saldo atual do cofre financeiro.
54
+
55
+
Use esse fluxo para evitar ficar confirmando ações do usuário.
56
+
57
+
----
48
58
59
+
- Sua resposta será enviada para o usuário final.
60
+
- Sua resposta deverá ter quebras de linha apropriadas para serem renderizadas no HTML com white-space: pre-wrap;
61
+
- Sua resposta não deve conter observações técnicas como sobre estar formatando corret
49
62
- Considere a data atual ${newDate().toISOString()} caso o usuário não forneça uma data.
50
63
- Infira o tipo de transação (income ou expense) de acordo com a descrição da transação.
51
64
- A categoria deve ser uma das categorias disponíveis para o usuário. Use a ferramenta getCategories para obter as categorias disponíveis.
52
65
- Você deve ser ágil, não fique confirmando, justifique as suas ações e use as ferramentas para adicionar a transação. A exceção é caso o usuário não forneça o valor da transação, nesse caso, pergunte ao usuário para fornecer o valor da transação.
53
66
- Nunca sugira uma categoria que não está na lista de categorias disponíveis.
54
67
- Sempre mencione datas formatadas para o usuário final, como "10 de novembro de 2025" e nunca no formato ISO 8601.
55
-
- Sempre que uma transação for adicionada, informe o saldo atual do cofre financeiro, ele será retornado pela ferramenta addTransaction.
56
-
68
+
- Sempre que uma transação for adicionada, informe o saldo atual do cofre financeiro formatado de maneira apropriada para o usuário final com moeda (R$) e casas decimais apropriadas, ele será retornado pela ferramenta addTransaction.
57
69
58
70
Exemplo de entrada:
59
71
- "Salário de 1000 reais" (income)
@@ -65,6 +77,11 @@ export class OpenAiAgentService {
65
77
- "saúde 100 reais" (expense)
66
78
- "escola 100 reais" (expense)
67
79
- "família & pets 100 reais" (expense)
80
+
81
+
Lembretes finais:
82
+
- Não chame a ferramenta de addTransaction se o usuário acabou de rejeitar sua execução, apenas informe que a ação foi rejeitada e pergunte ao usuário se ele deseja fazer outra ação.
83
+
- Não diga que a transação foi adicionada se a execução da ferramenta addTransaction não for aprovada, apenas informe que a ação foi rejeitada e pergunte ao usuário se ele deseja fazer outra ação ou mudar alguma informação.
84
+
- Se o uso da ferramenta não for aprovado, não diga que houve um erro, pois o próprio usuário rejeitou a ação.
68
85
`,
69
86
tools: this.getTools(),
70
87
});
@@ -179,11 +196,9 @@ export class OpenAiAgentService {
179
196
constgetCategories=tool({
180
197
name: 'getCategories',
181
198
description: 'Obtém as categorias de transações para um usuário',
182
-
parameters: z.object({
183
-
userId: z.string(),
184
-
}),
185
-
execute: ({ userId })=>{
186
-
return`The categories for user ${userId} are ${JSON.stringify(this.categories)}.`;
0 commit comments