Files
lucidia-main/human_machine/trust_model.py
blackboxprogramming b937c6b1fb Update trust_model.py
2025-08-08 14:29:17 -07:00

62 lines
1.6 KiB
Python

from __future__ import annotations
from dataclasses import dataclass
from typing import Dict
@dataclass
class TrustModel:
"""
Represents a trust score for a user.
Attributes
----------
user_id : str
Identifier for the user.
score : float
The accumulated trust score.
"""
user_id: str
score: float = 0.0
class TrustEvaluator:
"""
Maintains and updates trust scores for users based on interactions.
"""
def __init__(self) -> None:
self._models: Dict[str, TrustModel] = {}
def update(self, user_id: str, delta: float) -> TrustModel:
"""
Update the trust score for a user.
Parameters
----------
user_id : str
Identifier for the user.
delta : float
Amount to adjust the trust score (positive or negative).
Returns
-------
TrustModel
The updated trust model for the user.
"""
model = self._models.get(user_id)
if model is None:
model = TrustModel(user_id=user_id)
self._models[user_id] = model
model.score += delta
return model
def get_score(self, user_id: str) -> float:
"""Return the current trust score for the given user."""
return self._models.get(user_id, TrustModel(user_id)).score
if __name__ == "__main__":
evaluator = TrustEvaluator()
evaluator.update("alice", 0.5)
evaluator.update("bob", -0.3)
evaluator.update("alice", 0.2)
print(evaluator.get_score("alice"))
print(evaluator.get_score("bob"))