Back to Blog
2 min read

Human Feedback Loops: Improving AI with User Input

Human feedback is essential for improving AI systems. Here’s how to implement effective feedback loops.

Human Feedback Implementation

from dataclasses import dataclass
from typing import Dict, List, Optional
from datetime import datetime
from enum import Enum

class FeedbackType(Enum):
    THUMBS_UP = "positive"
    THUMBS_DOWN = "negative"
    CORRECTION = "correction"
    RATING = "rating"

@dataclass
class UserFeedback:
    interaction_id: str
    feedback_type: FeedbackType
    value: any
    comment: Optional[str] = None
    timestamp: datetime = None

class HumanFeedbackSystem:
    def __init__(self):
        self.feedback_store = FeedbackStore()
        self.aggregator = FeedbackAggregator()

    async def collect_feedback(self, feedback: UserFeedback):
        """Collect and process user feedback."""
        feedback.timestamp = datetime.now()

        # Store feedback
        await self.feedback_store.save(feedback)

        # Update aggregated metrics
        await self.aggregator.update(feedback)

        # Trigger improvement workflows if needed
        await self.check_improvement_triggers(feedback)

    async def check_improvement_triggers(self, feedback: UserFeedback):
        """Check if feedback triggers improvement actions."""
        # Get recent feedback for this query pattern
        recent = await self.feedback_store.get_similar_feedback(
            feedback.interaction_id,
            limit=10
        )

        negative_rate = sum(1 for f in recent if f.feedback_type == FeedbackType.THUMBS_DOWN) / len(recent)

        if negative_rate > 0.3:
            await self.trigger_review(feedback, recent)

    async def trigger_review(self, feedback: UserFeedback, related: List[UserFeedback]):
        """Trigger human review for problematic patterns."""
        review_task = {
            "trigger_feedback": feedback,
            "related_feedback": related,
            "priority": "high" if len(related) > 5 else "medium",
            "suggested_action": self.suggest_action(related)
        }

        await self.create_review_task(review_task)

    def suggest_action(self, feedback_list: List[UserFeedback]) -> str:
        """Suggest improvement action based on feedback patterns."""
        corrections = [f for f in feedback_list if f.feedback_type == FeedbackType.CORRECTION]

        if corrections:
            return "Update knowledge base with corrections"

        return "Review and update prompt/instructions"

    async def get_improvement_insights(self) -> Dict:
        """Generate insights for AI improvement."""
        feedback = await self.feedback_store.get_all_recent(days=30)

        return {
            "total_feedback": len(feedback),
            "positive_rate": sum(1 for f in feedback if f.feedback_type == FeedbackType.THUMBS_UP) / len(feedback),
            "common_issues": self.identify_common_issues(feedback),
            "improvement_opportunities": self.identify_opportunities(feedback),
            "user_corrections": self.extract_corrections(feedback)
        }

    def identify_common_issues(self, feedback: List[UserFeedback]) -> List[Dict]:
        """Identify common issues from negative feedback."""
        negative = [f for f in feedback if f.feedback_type == FeedbackType.THUMBS_DOWN]

        # Cluster by similarity
        clusters = self.cluster_feedback(negative)

        return [
            {
                "issue": cluster["representative"],
                "frequency": len(cluster["items"]),
                "sample_comments": [f.comment for f in cluster["items"][:3] if f.comment]
            }
            for cluster in clusters
        ]

    async def apply_corrections(self, corrections: List[Dict]):
        """Apply user corrections to improve system."""
        for correction in corrections:
            if correction["type"] == "knowledge":
                await self.update_knowledge_base(correction)
            elif correction["type"] == "behavior":
                await self.update_instructions(correction)

Systematic human feedback collection drives continuous AI improvement.

Michael John Peña

Michael John Peña

Senior Data Engineer based in Sydney. Writing about data, cloud, and technology.