Skip to content

Commit 36a117f

Browse files
committed
feat: improve model/prompt
1 parent cd8b6f9 commit 36a117f

File tree

1 file changed

+30
-15
lines changed

1 file changed

+30
-15
lines changed

src/shared/ai/open-ai-agent.service.ts

Lines changed: 30 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -35,25 +35,37 @@ export class OpenAiAgentService {
3535
) {
3636
setDefaultOpenAIKey(this.openAiClient.apiKey);
3737
this.agent = new Agent<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',
4540
instructions: `Você é um agente que ajuda o usuário a gerenciar seu cofre financeiro.
4641
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+
----
4858
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
4962
- Considere a data atual ${new Date().toISOString()} caso o usuário não forneça uma data.
5063
- Infira o tipo de transação (income ou expense) de acordo com a descrição da transação.
5164
- A categoria deve ser uma das categorias disponíveis para o usuário. Use a ferramenta getCategories para obter as categorias disponíveis.
5265
- 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.
5366
- Nunca sugira uma categoria que não está na lista de categorias disponíveis.
5467
- 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.
5769
5870
Exemplo de entrada:
5971
- "Salário de 1000 reais" (income)
@@ -65,6 +77,11 @@ export class OpenAiAgentService {
6577
- "saúde 100 reais" (expense)
6678
- "escola 100 reais" (expense)
6779
- "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.
6885
`,
6986
tools: this.getTools(),
7087
});
@@ -179,11 +196,9 @@ export class OpenAiAgentService {
179196
const getCategories = tool({
180197
name: 'getCategories',
181198
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)}.`;
199+
parameters: z.object({}),
200+
execute: (_, runContext: RunContext<AgentContext>) => {
201+
return `The categories for this user are ${JSON.stringify(this.categories)}.`;
187202
},
188203
});
189204
const addTransaction = tool({

0 commit comments

Comments
 (0)