mirror of
https://github.com/wassname/Open-Assistant.git
synced 2026-07-14 01:00:05 +08:00
Add LabelDescription list to labeling tasks, make +1/-1 emojis exclusive (#947)
* add LabelDescription list to labeling tasks * make +1 & -1 emoji exclusive (only one of both or none) * add red_flag emoji to message when reported * fix task's valid labels * fix typo
This commit is contained in:
@@ -231,12 +231,20 @@ class LabelTaskDisposition(str, enum.Enum):
|
||||
spam = "spam"
|
||||
|
||||
|
||||
class LabelDescription(BaseModel):
|
||||
name: str
|
||||
widget: str
|
||||
display_text: str
|
||||
help_text: Optional[str]
|
||||
|
||||
|
||||
class AbstractLabelTask(Task):
|
||||
message_id: UUID
|
||||
valid_labels: list[str]
|
||||
mandatory_labels: Optional[list[str]]
|
||||
mode: Optional[LabelTaskMode]
|
||||
disposition: Optional[LabelTaskDisposition]
|
||||
labels: Optional[list[LabelDescription]]
|
||||
|
||||
|
||||
class LabelInitialPromptTask(AbstractLabelTask):
|
||||
@@ -324,39 +332,48 @@ class MessageRanking(Interaction):
|
||||
ranking: conlist(item_type=int, min_items=1)
|
||||
|
||||
|
||||
class LabelWidget(str, enum.Enum):
|
||||
yes_no = "yes_no"
|
||||
flag = "flag"
|
||||
likert = "likert"
|
||||
|
||||
|
||||
class TextLabel(str, enum.Enum):
|
||||
"""A label for a piece of text."""
|
||||
|
||||
def __new__(cls, label: str, display_text: str = "", help_text: str = None):
|
||||
def __new__(cls, label: str, widget: LabelWidget, display_text: str = "", help_text: str = None):
|
||||
obj = str.__new__(cls, label)
|
||||
obj._value_ = label
|
||||
obj.widget = widget
|
||||
obj.display_text = display_text
|
||||
obj.help_text = help_text
|
||||
return obj
|
||||
|
||||
spam = "spam", "Seems to be intentionally low-quality or irrelevant"
|
||||
fails_task = "fails_task", "Fails to follow the correct instruction / task"
|
||||
not_appropriate = "not_appropriate", "Inappropriate for customer assistant"
|
||||
violence = "violence", "Encourages or fails to discourage violence/abuse/terrorism/self-harm"
|
||||
excessive_harm = (
|
||||
"excessive_harm",
|
||||
"Content likely to cause excessive harm not justifiable in the context",
|
||||
"Harm refers to physical or mental damage or injury to someone or something. Excessive refers to a reasonable threshold of harm in the context, for instance damaging skin is not excessive in the context of surgery.",
|
||||
)
|
||||
sexual_content = "sexual_content", "Contains sexual content"
|
||||
toxicity = "toxicity", "Contains rude, abusive, profane or insulting content"
|
||||
moral_judgement = "moral_judgement", "Expresses moral judgement"
|
||||
political_content = "political_content", "Expresses political views"
|
||||
humor = "humor", "Contains humorous content including sarcasm"
|
||||
# yes/no questions
|
||||
spam = "spam", LabelWidget.yes_no, "Seems to be intentionally low-quality or irrelevant"
|
||||
fails_task = "fails_task", LabelWidget.yes_no, "Fails to follow the correct instruction / task"
|
||||
|
||||
# flags
|
||||
pii = "pii", LabelWidget.flag, "Contains personal identifiable information (PII)"
|
||||
not_appropriate = "not_appropriate", LabelWidget.flag, "Inappropriate"
|
||||
hate_speech = (
|
||||
"hate_speech",
|
||||
LabelWidget.flag,
|
||||
"Content is abusive or threatening and expresses prejudice against a protected characteristic",
|
||||
"Prejudice refers to preconceived views not based on reason. Protected characteristics include gender, ethnicity, religion, sexual orientation, and similar characteristics.",
|
||||
"Prejudice refers to preconceived views not based on reason. Protected characteristics "
|
||||
"include gender, ethnicity, religion, sexual orientation, and similar characteristics.",
|
||||
)
|
||||
threat = "threat", "Contains a threat against a person or persons"
|
||||
misleading = "misleading", "Contains text which is incorrect or misleading"
|
||||
helpful = "helpful", "Completes the task to a high standard"
|
||||
creative = "creative", "Expresses creativity in responding to the task"
|
||||
sexual_content = "sexual_content", LabelWidget.flag, "Contains sexual content"
|
||||
moral_judgement = "moral_judgement", LabelWidget.flag, "Expresses moral judgement"
|
||||
political_content = "political_content", LabelWidget.flag, "Expresses political views"
|
||||
|
||||
# likert
|
||||
quality = "quality", LabelWidget.likert, "Overall subjective quality rating of the message"
|
||||
toxicity = "toxicity", LabelWidget.likert, "Rude, abusive, profane or insulting content"
|
||||
humor = "humor", LabelWidget.likert, "Humorous content including sarcasm"
|
||||
helpfulness = "helpfulness", LabelWidget.likert, "Helpfulness of the message"
|
||||
creativity = "creativity", LabelWidget.likert, "Creativity"
|
||||
violence = "violence", LabelWidget.likert, "Violence/abuse/terrorism/self-harm"
|
||||
|
||||
|
||||
class TextLabels(Interaction):
|
||||
@@ -367,6 +384,7 @@ class TextLabels(Interaction):
|
||||
labels: dict[TextLabel, float]
|
||||
message_id: UUID
|
||||
task_id: Optional[UUID]
|
||||
is_report: Optional[bool]
|
||||
|
||||
@property
|
||||
def has_message_id(self) -> bool:
|
||||
|
||||
Reference in New Issue
Block a user