tiny_factory / deeppersona /variant_optimizer.py
AUXteam's picture
Upload folder using huggingface_hub
6f8e146 verified
from typing import List, Dict, Any
import numpy as np
from deeppersona.content_generation import ContentVariant
from deeppersona.agent.social_types import Content
from deeppersona.agent import DeepPersona
from deeppersona.social_network import NetworkTopology
from deeppersona.ml_models import EngagementPredictor
class RankedVariant:
def __init__(self, variant: ContentVariant, score: float):
self.variant = variant
self.score = score
class VariantOptimizer:
"""Optimize and rank content variants"""
def __init__(self, predictor: EngagementPredictor):
self.predictor = predictor
def rank_variants_for_audience(self, variants: List[ContentVariant],
target_personas: List[DeepPersona],
network: NetworkTopology) -> List[RankedVariant]:
"""Rank variants by predicted performance"""
ranked = []
for variant in variants:
# Predict engagement for each persona
scores = []
for persona in target_personas:
prob = self.predictor.predict(persona, Content(text=variant.text), network)
scores.append(prob)
avg_score = np.mean(scores) if scores else 0.0
ranked.append(RankedVariant(variant, avg_score))
ranked.sort(key=lambda x: x.score, reverse=True)
return ranked