Skip to content

Commit

Permalink
fix: feedback in conversations (#761)
Browse files Browse the repository at this point in the history
  • Loading branch information
hughcrt authored Feb 12, 2025
1 parent 2b99cf6 commit daa3c63
Show file tree
Hide file tree
Showing 5 changed files with 56 additions and 27 deletions.
13 changes: 11 additions & 2 deletions packages/backend/src/api/v1/runs/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ export function formatRun(run: any) {
isPublic: run.isPublic,
feedback: run.feedback,
parentFeedback: run.parentFeedback,
feedbacks: run.feedbacks,

type: run.type,
name: run.name,
Expand Down Expand Up @@ -355,8 +356,16 @@ function getRunQuery(ctx: Context, isExport = false) {
eu.last_seen as user_last_seen,
eu.props as user_props,
t.slug as template_slug,
rpfc.feedback as parent_feedback
from
rpfc.feedback as parent_feedback,
coalesce(
(
select jsonb_agg(feedback)
from run
where parent_run_id = r.id
and type = 'chat'
), '[]'::jsonb
) as feedbacks
from
public.run r
left join external_user eu on r.external_user_id = eu.id
left join run_parent_feedback_cache rpfc on r.id = rpfc.id
Expand Down
1 change: 1 addition & 0 deletions packages/backend/src/utils/errors.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ export async function errorMiddleware(ctx: Context, next: Next) {
ctx.status = 422;
ctx.body = { error: "Error", message: error.errors[0].message };
console.error("ZOD ERROR", JSON.stringify(error.errors[0]));
console.error(error);
return;
}

Expand Down
1 change: 1 addition & 0 deletions packages/e2e/logs.spec.ts
Original file line number Diff line number Diff line change
Expand Up @@ -106,6 +106,7 @@ test("test export csv", async ({ page }) => {
"isPublic",
"feedback",
"parentFeedback",
"feedbacks",
"type",
"name",
"createdAt",
Expand Down
6 changes: 3 additions & 3 deletions packages/frontend/pages/logs/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -99,15 +99,15 @@ export const defaultColumns = {
inputColumn("Prompt"),
outputColumn("Result"),
tagsColumn(),
feedbackColumn(),
feedbackColumn("llm"),
templateColumn(),
],
trace: [
timeColumn("createdAt", "Time"),
nameColumn("Agent"),
durationColumn(),
userColumn(),
feedbackColumn(false),
feedbackColumn("traces"),
tagsColumn(),
inputColumn("Input"),
outputColumn(),
Expand All @@ -118,7 +118,7 @@ export const defaultColumns = {
userColumn(),
inputColumn("Last Message"),
tagsColumn(),
feedbackColumn(false),
feedbackColumn("threads"),
],
};

Expand Down
62 changes: 40 additions & 22 deletions packages/frontend/utils/datatable.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -210,33 +210,51 @@ export function costColumn() {
});
}

export function feedbackColumn(withRelatedRuns = false) {
const cell = withRelatedRuns
? (props) => {
const run = props.row.original;
export function feedbackColumn(type: "llm" | "traces" | "threads") {
let cell;
if (type === "traces") {
cell = (props) => {
const run = props.row.original;

const { data: relatedRuns } = useProjectSWR(`/runs/${run.id}/related`);
const { data: relatedRuns } = useProjectSWR(`/runs/${run.id}/related`);

const allFeedbacks = [run, ...(relatedRuns || [])]
.filter((run) => run.feedback)
.map((run) => run.feedback);
const allFeedbacks = [run, ...(relatedRuns || [])]
.filter((run) => run.feedback)
.map((run) => run.feedback)
.filter((feedback) => {
return feedback.thumb || feedback.comment;
});

return (
<Group gap="xs">
{allFeedbacks?.map((feedback, i) => (
<Feedback data={feedback} key={i} />
))}
</Group>
);
}
: (props) => {
const run = props.row.original;
return (
<Group gap="xs" justify="flex-start">
{allFeedbacks
?.filter((feedback) => feedback)
.map((feedback, i) => <Feedback data={feedback} key={i} />)}
</Group>
);
};
} else if (type === "threads") {
cell = (props) => {
const run = props.row.original;

return (
<Group gap="xs" justify="left">
{run.feedbacks?.map((feedback, i) => (
<Feedback data={feedback} key={i} />
))}
</Group>
);
};
} else if (type === "llm") {
cell = (props) => {
const run = props.row.original;

const feedback = run.feedback || run.parentFeedback;
const isParentFeedback = !run.feedback && run.parentFeedback;
const feedback = run.feedback || run.parentFeedback;
const isParentFeedback = !run.feedback && run.parentFeedback;

return <Feedback data={feedback} isFromParent={isParentFeedback} />;
};
return <Feedback data={feedback} isFromParent={isParentFeedback} />;
};
}

return columnHelper.accessor("feedback", {
header: "Feedback",
Expand Down

0 comments on commit daa3c63

Please sign in to comment.