Repository navigation
feat(feedback): thumbs up/down in the chat widget and nightly triage - #268
Merged
google-oss-prow[bot] merged 5 commits intoOct 16, 2026
Merged
Conversation
google-oss-prow
Bot
requested review from
franciscojavierarceo and
tarekabouzeid
October 13, 2026 20:29
kmr-rohit
force-pushed
the
feat/chat-feedback
branch
5 times, most recently
from
October 15, 2026 18:45
dbcafbf to
f662014
Compare
Widget: a "Helpful?" bar under each finished answer (and answers restored from history). A thumbs-down offers an optional comment. The vote is saved with the chat so it survives reloads; the bar removes itself if the gateway has no feedback route. gateway-guardrails 0.3.0: optional feedback service (feedback.enabled). POST /api/feedback takes the chat's contextId (the Langfuse session id), the 0-based turn and up/down. It finds that turn's trace and writes a BOOLEAN score user_feedback with a deterministic id, so a changed vote overwrites the first. If the trace is not ingested yet the vote goes on the session. The path requires a session JWT and shares the chat rate limits. Standard library only, run from a ConfigMap on a stock python image (no image to build). Enabled in deploy/envs/prod. Tested on the demo cluster: invalid contextId -> 400; a vote on a fresh production answer linked to its trace and was read back via /v3/scores. Signed-off-by: Rohit Kumar <rr7433446@gmail.com>
tests/feedback/triage.py, standard library only: - new "feedback" mode reads user_feedback=false scores (/v3/scores) from the last N hours, including votes stored on a session before its trace arrived; - the MCP probe talks streamable HTTP directly (no fastmcp); - --report prints a Markdown summary grouped by owner: pipeline layers to kubeflow/docs-agent, content gaps to the component's repo, with the user's comment. Nothing is filed automatically. docs-agent chart 0.4.0: optional CronJob (triage.enabled, 03:00 daily) that fetches the script at triage.ref and runs it with --write, judged by flo-judge. Enabled in deploy/envs/prod. Tested in-cluster: the smoke-test thumbs-down was found, probed and classified content_gap_hallucination -> kubeflow/manifests. Signed-off-by: Rohit Kumar <rr7433446@gmail.com>
Signed-off-by: Rohit Kumar <rr7433446@gmail.com>
kmr-rohit
force-pushed
the
feat/chat-feedback
branch
from
October 16, 2026 18:35
f662014 to
23c88f3
Compare
One sentence in the existing disclaimer under the input box, asking users not to share personal information. Signed-off-by: Rohit Kumar <rr7433446@gmail.com>
Token-based stylesheet (light and dark differ only in colour roles), a branded header, answers as open text beside the avatar with tonal user bubbles, starter questions under the welcome message, a pill composer, restyled sources and feedback, and a full-screen sheet on phones. Fixes answers overflowing the right edge. The disclaimer is shorter and keeps the data-collection notice. Signed-off-by: Rohit Kumar <rr7433446@gmail.com>
kmr-rohit
marked this pull request as ready for review
October 16, 2026 19:33
Member
|
/lgtm |
|
[APPROVALNOTIFIER] This PR is APPROVED This pull-request has been approved by: tarekabouzeid The full list of commands accepted by this bot can be found here. The pull request process is described here DetailsNeeds approval from an approver in each of these files:
Approvers can indicate their approval by writing |
kmr-rohit
added a commit
to kmr-rohit/docs-agent
that referenced
this pull request
Oct 17, 2026
Promote the commit that added chat feedback and nightly triage (kubeflow#268). CI on main built both images for it (mcp-kubeflow-docs and kubeflow-session-issuer). Signed-off-by: Rohit Kumar <rr7433446@gmail.com>
This was referenced Oct 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Stacked on #267 (and #266). This PR's own changes are the last two commits.
What
frontend/docs_scripts/chatbot.js,chatbot.css): a "Helpful?" bar with thumbs up/down under every finished answer, also on answers restored from history. Thumbs-down offers an optional comment. The vote is stored with the chat; the bar removes itself when the gateway has no feedback route. Light and dark theme.gateway-guardrails0.3.0,feedback.enabled):POST /api/feedbackwith the chat'scontextId(the Langfuse session id), the 0-basedturnandup/down. It finds that turn's trace and writes a BOOLEAN scoreuser_feedbackwith a deterministic id (a changed vote overwrites the first). If the trace is not ingested yet, the vote goes on the session. The route requires a session JWT and shares the chat rate limits. Standard library only, run from a ConfigMap on a stock python image: no image to build.docs-agentchart 0.4.0,triage.enabled, 03:00):tests/feedback/triage.py feedbackreads the last day's thumbs-down, re-searches the index over MCP, and has the judge (flo-judge, Qwen) classify the failing layer:generation,retrieval,tool_routing,agent_skipped_retrieval(owner: docs-agent), orcontent_gap_handled/content_gap_hallucination(owner: the component's working group). Results are stored astriage_layer/triage_componentscores; the Job log has a Markdown summary grouped by owner. Nothing is filed automatically.Both are enabled in
deploy/envs/prod/.Tested on the demo cluster
contextId→ 400; a thumbs-down on a fresh production answer linked to its trace (linked: true) and was read back from/v3/scores.content_gap_hallucination→kubeflow/manifests, with the user's comment.tests/test_feedback.py(validation, turn → trace, score ids),tests/test_triage.py(component guess, owner routing, report). 22 passed.helm lintand server-side dry runs for the new templates.Not done yet
/api/feedback) is not live untilgateway-guardrailsis synced frommain.