diff --git a/toolkits/gmail/evals/eval_gmail_tools.py b/toolkits/gmail/evals/eval_gmail_tools.py deleted file mode 100644 index 6e79c738..00000000 --- a/toolkits/gmail/evals/eval_gmail_tools.py +++ /dev/null @@ -1,133 +0,0 @@ -from arcade_gmail.tools.gmail import ( - DateRange, - get_emails, - search_emails_by_header, - write_draft, -) - -from arcade.sdk.eval import ( - BinaryCritic, - EvalRubric, - EvalSuite, - ExpectedToolCall, - NumericCritic, - SimilarityCritic, - tool_eval, -) - -# Evaluation rubric -rubric = EvalRubric( - fail_threshold=0.7, - warn_threshold=0.9, -) - - -@tool_eval("gpt-3.5-turbo") -def gmail_eval_suite(): - suite = EvalSuite( - name="Gmail Tools Evaluation", - system="You are an AI assistant with access to Gmail tools. Use them to help the user with their email-related tasks.", - ) - - # Register the Gmail tools - suite.register_tool(write_draft) - suite.register_tool(search_emails_by_header) - suite.register_tool(get_emails) - - # Write Draft Scenarios - suite.add_case( - name="Write Draft with specified recipient, subject, and body", - user_message="Draft and email to john@example.com asking if we can meet tomorrow at 2 PM", - expected_tool_calls=[ - ExpectedToolCall( - name="WriteDraft", - args={ - "recipient": "john@example.com", - "subject": "Meeting Tomorrow", - "body": "Hi John, Can we meet tomorrow at 2 PM? Thanks, Alice", - }, - ) - ], - rubric=rubric, - critics=[ - BinaryCritic(critic_field="recipient", weight=0.5), - SimilarityCritic(critic_field="subject", weight=0.2), - SimilarityCritic(critic_field="body", weight=0.3), - ], - ) - - # Search Emails by Header Scenarios - suite.add_case( - name="Search for emails from a specific sender and time period", - user_message="Find emails from alice@example.com sent last week", - expected_tool_calls=[ - ExpectedToolCall( - name="SearchEmailsByHeader", - args={ - "sender": "alice@example.com", - "date_range": DateRange.LAST_7_DAYS.value, - "limit": 25, - }, - ) - ], - rubric=rubric, - critics=[ - BinaryCritic(critic_field="sender", weight=0.5), - BinaryCritic(critic_field="date_range", weight=0.4), - NumericCritic(critic_field="limit", weight=0.1, value_range=(1, 100)), - ], - ) - - suite.add_case( - name="Search by subject and date range", - user_message="Search for emails with 'Urgent' in the subject from the last 30 days", - expected_tool_calls=[ - ExpectedToolCall( - name="SearchEmailsByHeader", - args={ - "subject": "Urgent", - "date_range": DateRange.LAST_30_DAYS.value, - "limit": 25, - }, - ) - ], - rubric=rubric, - critics=[ - SimilarityCritic(critic_field="subject", weight=0.4), - BinaryCritic(critic_field="date_range", weight=0.4), - NumericCritic(critic_field="limit", weight=0.2, value_range=(1, 100)), - ], - ) - - suite.extend_case( - name="Followup search by subject and date range", - user_message="show me more of those", - expected_tool_calls=[ - ExpectedToolCall( - name="SearchEmailsByHeader", - args={ - "subject": "Urgent", - "date_range": DateRange.LAST_30_DAYS.value, - "limit": 50, - }, - ) - ], - ) - - suite.add_case( - name="Retrieve specific number of emails", - user_message="Retrieve the last 10 emails in my inbox", - expected_tool_calls=[ - ExpectedToolCall( - name="GetEmails", - args={"n_emails": 10}, - ) - ], - rubric=rubric, - critics=[ - BinaryCritic(critic_field="n_emails", weight=0.8), - NumericCritic(critic_field="n_emails", weight=0.2, value_range=(1, 20)), - ], - ) - - return suite