Merge pull request #702 from LAION-AI/labeling-fix

Fix full labelling task display
This commit is contained in:
Keith Stevens
2023-01-14 18:14:33 +09:00
committed by GitHub
7 changed files with 39 additions and 27 deletions
+1 -1
View File
@@ -146,7 +146,7 @@ export const FlaggableElement = (props: FlaggableElementProps) => {
isLazy
lazyBehavior="keepMounted"
>
<Grid display="flex" alignItems="center" gap="1">
<Grid display="flex" alignItems="center" gap="2">
<PopoverAnchor>{props.children}</PopoverAnchor>
<Tooltip label="Report" bg="red.500" aria-label="A tooltip">
<div>
@@ -11,7 +11,7 @@ export function MessageTable({ messages, enableLink }: MessageTableProps) {
return (
<Stack spacing="3">
{messages.map((item) => (
<MessageTableEntry enabled={enableLink} item={item} key={item.id || item.frontend_message_id} />
<MessageTableEntry enabled={enableLink} item={item} key={item.id + item.frontend_message_id} />
))}
</Stack>
);
@@ -18,8 +18,8 @@ export function MessageTableEntry(props: MessageTableEntryProps) {
const borderColor = useColorModeValue("blackAlpha.200", "whiteAlpha.200");
return (
<FlaggableElement message={item} key={`flag_${item.id || item.frontend_message_id}`}>
<HStack>
<FlaggableElement message={item}>
<HStack w="100%" gap={2}>
<Box borderRadius="full" border="solid" borderWidth="1px" borderColor={borderColor} bg={avatarColor}>
<Avatar
size="sm"
@@ -31,7 +31,7 @@ export function MessageTableEntry(props: MessageTableEntryProps) {
<Box maxWidth="xl">
<Link href={`/messages/${item.id}`}>
<LinkBox
bg={item.is_assistant ? `${backgroundColor}` : `${backgroundColor2}`}
bg={item.is_assistant ? backgroundColor : backgroundColor2}
className={`p-4 rounded-md whitespace-pre-wrap w-full`}
>
{item.text}
@@ -39,13 +39,12 @@ export function MessageTableEntry(props: MessageTableEntryProps) {
</Link>
</Box>
) : (
<Box maxWidth="xl">
<Box
bg={item.is_assistant ? `${backgroundColor}` : `${backgroundColor2}`}
className={`p-4 rounded-md whitespace-pre-wrap w-full`}
>
{item.text}
</Box>
<Box
maxWidth="xl"
bg={item.is_assistant ? backgroundColor : backgroundColor2}
className={`p-4 rounded-md whitespace-pre-wrap w-full`}
>
{item.text}
</Box>
)}
</HStack>
@@ -1,4 +1,4 @@
import { Box, Grid, Slider, SliderFilledTrack, SliderThumb, SliderTrack, useColorMode } from "@chakra-ui/react";
import { Grid, Slider, SliderFilledTrack, SliderThumb, SliderTrack, useColorMode } from "@chakra-ui/react";
import { useId, useState } from "react";
import { colors } from "styles/Theme/colors";
@@ -13,7 +13,7 @@ export const LabelSliderGroup = ({ labelIDs, onChange, isEditable }: LabelSlider
const [sliderValues, setSliderValues] = useState<number[]>(Array.from({ length: labelIDs.length }).map(() => 0));
return (
<Grid templateColumns="auto 1fr" rowGap={1} columnGap={3}>
<Grid templateColumns="auto 1fr" rowGap={1} columnGap={4}>
{labelIDs.map((labelId, idx) => (
<CheckboxSliderItem
key={idx}
@@ -44,12 +44,14 @@ function CheckboxSliderItem(props: {
const labelTextClass = colorMode === "light" ? `text-${colors.light.text}` : `text-${colors.dark.text}`;
return (
<Box data-cy="label-group-item" data-label-type="slider">
<>
<label className="text-sm" htmlFor={id}>
{/* TODO: display real text instead of just the id */}
<span className={labelTextClass}>{props.labelId}</span>
</label>
<Slider
data-cy="label-group-item"
data-label-type="slider"
aria-roledescription="slider"
defaultValue={0}
isDisabled={!props.isEditable}
@@ -60,6 +62,6 @@ function CheckboxSliderItem(props: {
<SliderThumb />
</SliderTrack>
</Slider>
</Box>
</>
);
}
+3 -3
View File
@@ -14,13 +14,13 @@ export const LabelTask = ({
taskType,
onReplyChanged,
isEditable,
}: TaskSurveyProps<{ text: string; labels: { [k: string]: number }; message_id: string }>) => {
}: TaskSurveyProps<{ text: string; labels: Record<string, number>; message_id: string }>) => {
const valid_labels = task.valid_labels;
const [sliderValues, setSliderValues] = useState<number[]>(new Array(valid_labels.length).fill(0));
useEffect(() => {
onReplyChanged({ content: { labels: {}, text: task.reply, message_id: task.message_id }, state: "DEFAULT" });
}, [task.reply, task.message_id, onReplyChanged]);
}, [task, onReplyChanged]);
const onSliderChange = (values: number[]) => {
console.assert(valid_labels.length === sliderValues.length);
@@ -51,7 +51,7 @@ export const LabelTask = ({
<Box mt="4" p="6" borderRadius="lg" bg={cardColor}>
<MessageTable
messages={[
...(task.conversation ? task.conversation.messages : []),
...(task.conversation?.messages ?? []),
{
text: task.reply,
is_assistant: task.type === TaskType.label_assistant_reply,
@@ -13,7 +13,14 @@ import prisma from "src/lib/prismadb";
const handler = withoutRole("banned", async (req, res, token) => {
// Fetch the new task.
const { task_type } = req.query;
const task = await oasstApiClient.fetchTask(task_type as string, token);
let task;
try {
task = await oasstApiClient.fetchTask(task_type as string, token);
} catch (err) {
console.error(err);
res.status(500).json(err);
}
// Store the task and link it to the user..
const registeredTask = await prisma.registeredTask.create({
+11 -7
View File
@@ -39,13 +39,8 @@ export interface LabelAssistantReplyTask extends BaseTask {
conversation: Conversation;
reply: string;
valid_labels: string[];
}
export interface LabelInitialPromptTask extends BaseTask {
type: TaskType.label_initial_prompt;
message_id: string;
valid_labels: string[];
prompt: string;
mode: "simple" | "full";
mandatory_labels?: string[];
}
export interface LabelPrompterReplyTask extends BaseTask {
@@ -54,4 +49,13 @@ export interface LabelPrompterReplyTask extends BaseTask {
conversation: Conversation;
reply: string;
valid_labels: string[];
mode: "simple" | "full";
mandatory_labels?: string[];
}
export interface LabelInitialPromptTask extends BaseTask {
type: TaskType.label_initial_prompt;
message_id: string;
valid_labels: string[];
prompt: string;
}