c889a57b6b
Test Suites / Build CI Environment (push) Has been cancelled
Test Suites / Basic Tests (push) Has been cancelled
Test Suites / End-to-End Tests (push) Has been cancelled
Test Suites / CLI Tests (push) Has been cancelled
Test Suites / Slow End-to-End Tests (push) Has been cancelled
Test Suites / Graph Database Tests (push) Has been cancelled
Test Suites / Vector DB Tests (push) Has been cancelled
Test Suites / Temporal Graph Test (push) Has been cancelled
Test Suites / Search Test on Different DBs (push) Has been cancelled
Test Suites / Example Tests (push) Has been cancelled
Test Suites / Notebook Tests (push) Has been cancelled
Test Suites / OS and Python Tests Ubuntu (push) Has been cancelled
Test Suites / OS and Python Tests Extended (push) Has been cancelled
Test Suites / LLM Test Suite (push) Has been cancelled
Test Suites / S3 File Storage Test (push) Has been cancelled
Test Suites / Run Integration Tests (push) Has been cancelled
Test Suites / MCP Tests (push) Has been cancelled
Test Suites / Docker Compose Test (push) Has been cancelled
Test Suites / Docker CI test (push) Has been cancelled
Test Suites / Relational DB Migration Tests (push) Has been cancelled
Test Suites / Distributed Cognee Test (push) Has been cancelled
Test Suites / DB Examples Tests (push) Has been cancelled
Test Suites / Test Completion Status (push) Has been cancelled
Test Suites / Claude Code Review (push) Has been cancelled
Test Suites / basic checks (push) Has been cancelled
build | Build and Push Cognee MCP Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Scorecard supply-chain security / Scorecard analysis (push) Has been cancelled
build | Build and Push Docker Image to dockerhub / docker-build-and-push (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.11) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Core Functionality (3.12) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (kuzu, kuzu) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges with Different Graph Databases (neo4j, neo4j) (push) Has been cancelled
Weighted Edges Tests / Test Weighted Edges Examples (push) Has been cancelled
Weighted Edges Tests / Code Quality for Weighted Edges (push) Has been cancelled
94 lines
3.4 KiB
Python
94 lines
3.4 KiB
Python
import argparse
|
|
import asyncio
|
|
|
|
from cognee.cli.reference import SupportsCliCommand
|
|
from cognee.cli import DEFAULT_DOCS_URL
|
|
import cognee.cli.echo as fmt
|
|
from cognee.cli.exceptions import CliCommandException
|
|
|
|
|
|
class FeedbackCommand(SupportsCliCommand):
|
|
command_string = "feedback"
|
|
help_string = "Add or remove feedback on session Q&A entries"
|
|
docs_url = DEFAULT_DOCS_URL
|
|
description = """
|
|
Manage feedback on Cognee session Q&A entries.
|
|
|
|
Subcommands:
|
|
add Attach feedback (text and/or score) to a Q&A entry
|
|
delete Clear feedback from a Q&A entry
|
|
"""
|
|
|
|
def configure_parser(self, parser: argparse.ArgumentParser) -> None:
|
|
sub = parser.add_subparsers(dest="feedback_action", title="actions")
|
|
|
|
# add
|
|
p_add = sub.add_parser("add", help="Add feedback to a Q&A entry")
|
|
p_add.add_argument("session_id", help="Session ID")
|
|
p_add.add_argument("qa_id", help="Q&A entry ID")
|
|
p_add.add_argument("-t", "--text", default=None, help="Feedback text")
|
|
p_add.add_argument("-s", "--score", type=int, default=None, help="Feedback score (integer)")
|
|
|
|
# delete
|
|
p_del = sub.add_parser("delete", help="Clear feedback from a Q&A entry")
|
|
p_del.add_argument("session_id", help="Session ID")
|
|
p_del.add_argument("qa_id", help="Q&A entry ID")
|
|
|
|
def execute(self, args: argparse.Namespace) -> None:
|
|
action = getattr(args, "feedback_action", None)
|
|
if not action:
|
|
fmt.error("No action specified. Use --help to see available actions.")
|
|
raise CliCommandException("No action specified", error_code=1)
|
|
|
|
dispatch = {
|
|
"add": self._add,
|
|
"delete": self._delete,
|
|
}
|
|
dispatch[action](args)
|
|
|
|
def _add(self, args: argparse.Namespace) -> None:
|
|
if args.text is None and args.score is None:
|
|
fmt.error("Provide at least --text or --score.")
|
|
raise CliCommandException("No feedback content provided", error_code=1)
|
|
|
|
async def run():
|
|
from cognee.api.v1.session import add_feedback
|
|
from cognee.cli.user_resolution import resolve_cli_user, scoped_session_id
|
|
|
|
user = await resolve_cli_user(getattr(args, "user_id", None))
|
|
sid = scoped_session_id(user.id, args.session_id)
|
|
|
|
ok = await add_feedback(
|
|
session_id=sid,
|
|
qa_id=args.qa_id,
|
|
feedback_text=args.text,
|
|
feedback_score=args.score,
|
|
user=user,
|
|
)
|
|
if ok:
|
|
fmt.success(f"Feedback added to entry {args.qa_id} in session {sid}.")
|
|
else:
|
|
fmt.error("Failed to add feedback. Check session/qa IDs.")
|
|
|
|
asyncio.run(run())
|
|
|
|
def _delete(self, args: argparse.Namespace) -> None:
|
|
async def run():
|
|
from cognee.api.v1.session import delete_feedback
|
|
from cognee.cli.user_resolution import resolve_cli_user, scoped_session_id
|
|
|
|
user = await resolve_cli_user(getattr(args, "user_id", None))
|
|
sid = scoped_session_id(user.id, args.session_id)
|
|
|
|
ok = await delete_feedback(
|
|
session_id=sid,
|
|
qa_id=args.qa_id,
|
|
user=user,
|
|
)
|
|
if ok:
|
|
fmt.success(f"Feedback cleared from entry {args.qa_id} in session {sid}.")
|
|
else:
|
|
fmt.error("Failed to clear feedback. Check session/qa IDs.")
|
|
|
|
asyncio.run(run())
|