Aquest projecte permet extreure automàticament tota la informació de la web d’en Martí, guardar-la en un fitxer JSON i utilitzar la intel·ligència artificial (Gemini) per respondre preguntes basant-se en aquestes dades.
1. Instal·lació de Llibreries
Primer, preparem l’entorn amb les eines necessàries: flask per al servidor, beautifulsoup4 per llegir el web, i google-genai per connectar amb la IA.
Python:
!pip install -q -U google-genai flask-cors pyngrok beautifulsoup4 requests
!pip install requests==2.32.4
2. Configuració de Seguretat (Secrets)
Connectem amb l’API de Google Gemini i el token de Ngrok mitjançant les claus guardades al Google Colab.
Python:
try:
client = genai.Client(api_key=userdata.get('Api_gemini'))
ngrok.set_auth_token(userdata.get('Token'))
print("✅ API i ngrok connectats.")
except Exception as e:
print(f"❌ ERROR SECRETS: {e}")
3. L’Extractor Total (Web Scraper)
Aquesta funció és el “robot” que navega per la web d’en Martí.
Funció: Visita fins a 200 pàgines del domini.
Filtre: Ignora imatges, PDFs i la part interna de WordPress.
Dades: Guarda el títol i el text de cada apartat en una llista anomenada
dades_marti.
4. Cercador Intel·ligent i Lògica IA
Abans d’enviar la pregunta a la IA, el programa busca quines pàgines del web tenen paraules clau relacionades amb la pregunta de l’usuari.
Cercador: Compara la pregunta amb el contingut guardat i tria les 3 millors pàgines.
IA (Gemini): Li donem un rol a la IA: “Ets l’assistent del portafolis d’en Martí” i li passem només la informació real del web per evitar que inventi coses.
Python:
def demanar_a_ia(pregunta):
# Seleccionem la informació més rellevant
pagines_filtrades = trobar_pagines_rellevants(pregunta, maxim=3)
# Creem el context per a la IA
context = "Respon en català basant-te NOMÉS en aquesta informació real d'en Martí..."
# Generem la resposta
response = client.models.generate_content(model="gemini-2.5-flash-lite", contents=f"{context}\n\nPregunta: {pregunta}")
return response.text
5. Servidor Flask i Ngrok
Finalment, aixequem un servidor que escolta les preguntes que arriben des del codi JavaScript (el teu front-end).
Ruta
/ask: Rep la pregunta, la processa i torna la resposta en format JSON.Ngrok: Crea una URL pública (ex:
https://abcd-123.ngrok-free.app) perquè el web pugui parlar amb el Python.