3.2 KiB
3.2 KiB
Motor de Recomendações e IA
Estado atual
O DayMaker usa uma abordagem baseada em IA de linguagem com contexto do inventário.
Não existe atualmente um motor de regras local como fonte principal das recomendações. A recomendação é gerada pelo serviço AiRecommendationService, que chama uma API Ollama remota.
Serviço principal
Ficheiro:
lib/services/ai_recommendation_service.dart
Responsabilidades:
- Buscar itens do utilizador no Supabase.
- Construir contexto textual do inventário.
- Enviar mensagens para a API Ollama.
- Manter histórico simples de conversa.
- Suportar
silent: truepara sugestões estruturadas. - Buscar itens com imagens para a home.
Endpoint e modelo
| Campo | Valor |
|---|---|
| Endpoint | https://apichat.epvc.pt/api/chat |
| Modelo | llama3.2:3b |
| Stream | false |
| Formato | Ollama /api/chat |
Payload base:
{
"model": "llama3.2:3b",
"messages": [
{"role": "system", "content": "..."},
{"role": "user", "content": "..."}
],
"stream": false
}
Prompt de sistema
A IA é instruída a:
- Ajudar a montar outfits e escolher o que levar.
- Usar linguagem simples e curta.
- Não usar emojis.
- Basear-se nas tags e notas dos itens.
- Responder sempre em português.
Contexto enviado à IA
O contexto inclui os itens do utilizador:
Itens disponiveis no inventario do utilizador:
- Bota verde (categoria: Roupa) [tags: casual, outdoor]
- Switch (categoria: Eletrónica) [tags: gaming, casual]
Esse contexto é anexado à mensagem de sistema.
Chat IA
No ecrã AiChatScreen:
- O utilizador escreve livremente.
- Existem sugestões rápidas no topo.
- A resposta é apresentada como conversa.
- O histórico fica em memória no serviço enquanto a instância existir.
Sugestão IA na Home
Fluxo:
- Utilizador toca em
Pedir sugestão à IA. - App abre um diálogo e pede a ocasião.
- O utilizador pode escrever algo como
piquenique no parqueou escolher chip rápido. - A app envia a ocasião em modo
silent. - A IA deve devolver apenas nomes exatos dos itens, um por linha.
- A app cruza esses nomes com os itens reais do Supabase.
- A app mostra cards com imagem, nome e categoria.
- O utilizador pode exportar os itens para um dia da semana.
Modo silencioso
Quando silent: true, a instrução acrescentada ao pedido é:
responde APENAS com os nomes exatos dos itens do meu inventario que sugeres, um por linha, sem numeracao, sem explicacao, sem comentarios.
Isto permite transformar a resposta da IA numa lista de itens reais.
Limitações conhecidas
- A correspondência depende da IA devolver nomes próximos aos nomes reais.
- Se a IA devolver texto extra, a app tenta limpar linhas, mas pode falhar correspondência.
- A IA não vê imagens, apenas nomes, categorias, tags e notas.
- Não há ranking local por clima, cor ou histórico de uso.
Melhorias futuras
- Resposta em JSON em vez de texto simples.
- Validação local mais robusta por ID de item.
- Sugestões com clima e duração.
- Preferências aprendidas por histórico.
- Integração com calendário.