Deepvest/ProfilingAI
0
1import pandas as pd2import numpy as np3from transformers import AutoTokenizer, AutoModelForCausalLM4 5class ProfileGenerator:6 def __init__(self):7 # Charger Open R1 pour la partie profiling8 self.tokenizer = AutoTokenizer.from_pretrained("open-r1")9 self.model = AutoModelForCausalLM.from_pretrained("open-r1")10 11 # Configuration des profils12 self.risk_levels = ["Prudent", "Modéré", "Dynamique"] 13 self.goals = ["Retraite", "Immobilier", "Études", "Épargne"]14 15 def generate_profile_data(self, num_samples=1000):16 data = []17 for _ in range(num_samples):18 # Générer profil de base19 profile = {20 "age": np.random.randint(18, 70),21 "income": np.random.randint(2000, 20000),22 "savings": np.random.randint(500, 5000),23 "goals": np.random.choice(self.goals, size=2, replace=False),24 "risk_tolerance": np.random.choice(self.risk_levels)25 }26 27 # Générer description avec Open R128 profile["description"] = self._generate_profile_description(profile)29 30 data.append(profile)31 32 return pd.DataFrame(data)33 34 def _generate_profile_description(self, profile):35 # Préparation du prompt pour Open R136 prompt = f"""37 Profil investisseur :38 - Age: {profile['age']} ans39 - Revenu: {profile['income']}€/mois 40 - Épargne: {profile['savings']}€/mois41 - Objectifs: {', '.join(profile['goals'])}42 - Tolérance au risque: {profile['risk_tolerance']}43 44 Décrivez ce profil d'investisseur et suggérez une approche personnalisée.45 """46 47 # Générer la description avec Open R148 inputs = self.tokenizer(prompt, return_tensors="pt")49 outputs = self.model.generate(**inputs, max_length=200)50 return self.tokenizer.decode(outputs[0])51 52def main():53 # Générer données54 generator = ProfileGenerator()55 df = generator.generate_profile_data()56 57 # Sauvegarder58 df.to_csv("src/data/investment_profiles.csv", index=False)59 print("Données générées et sauvegardées")60 61if __name__ == "__main__":62 main()