arcade-mcp/arcade
Eric Gustin be2539602f
Evals New Features (#208)
# PR Description
This PR adds ~~four~~ three improvements to evals.

~~## 1. Add parameterized eval cases~~
~~Adds a new method named `add_parameterized_case`. Just like pytest’s
parameterized tests, eval cases can be parameterized with multiple user
messages. Adds a case to the `EvalSuite` for each user message. All
cases have the same expected tool call(s), params, additional_messages.
This reduces duplicate code and makes it easy to observe how a model
performs based on increasingly more difficult prompts.~~
```python
""" NO LONGER IN THIS PR
user_messages = [
    "Call the delete tweet by id tool with the tweet ID '148975632'.",
    "Delete the tweet with ID '148975632'.",
    "I don't want to have this tweet (148975632) on my account anymore.",
    "do the opposite of post for https://x.com/x/status/148975632",
]

suite.add_parameterized_case(
    name="Delete a tweet by ID",
    user_messages=user_messages,
    expected_tool_calls=[
        ExpectedToolCall(
            func=delete_tweet_by_id,
            args={"tweet_id": "148975632"},
        )
    ],
    critics=[
        BinaryCritic(
            critic_field="tweet_id",
            weight=1.0,
        ),
    ],
)
"""
```

~~PASSED Delete a tweet by ID (user_message 1 of 4) -- Score: 100.00%~~
~~PASSED Delete a tweet by ID (user_message 2 of 4) -- Score: 100.00%~~
~~PASSED Delete a tweet by ID (user_message 3 of 4) -- Score: 100.00%~~
~~FAILED Delete a tweet by ID (user_message 4 of 4) -- Score: 0.00%~~
~~Summary -- Total: 4 -- Passed: 3 -- Failed: 1~~

## 2. Parameters that are not explicitly criticized are assigned a
`NoneCritic`.
A NoneCritic has no effect on the evaluation results and does not
actually evaluate. Parameters that have a NoneCritic will be displayed
as ‘un-criticized’ in the evaluation summary (if `-d` flag is used).

![image](https://github.com/user-attachments/assets/300756ec-9b53-436a-9cf9-fc61d0b00c01)


## 3. Add a hardcoded `seed` parameter for evals.
The seed parameter aides in receiving (mostly) consistent outputs -
aiding in reproducibility for evaluations.

## 4. Disallow more than one critic for the same field.
Raises a `ValueError` if more than one critic is assigned to a field.

---------

Co-authored-by: Eric Gustin <eric@arcade-ai.com>
2025-02-05 15:22:08 -08:00
..
arcade Evals New Features (#208) 2025-02-05 15:22:08 -08:00
tests Evals New Features (#208) 2025-02-05 15:22:08 -08:00
codecov.yaml Add `GET /v1/tools/list` (#100) 2024-10-09 21:02:23 -07:00
poetry.toml Dockerfiles for Actor container (#18) 2024-08-22 16:28:42 -07:00
pyproject.toml Update Examples & Various Renames (#233) 2025-01-28 17:17:29 -08:00
README.md Update Examples & Various Renames (#233) 2025-01-28 17:17:29 -08:00
run_cli.py Add New Gmail Tools To The Google Toolkit (#41) 2024-09-19 10:18:49 -07:00
tox.ini Fix extras in pyproject.toml (#58) 2024-09-24 18:02:56 -07:00

Arcade Python SDK and CLI

Arcade provides developer-focused tooling and APIs designed to improve the capabilities of LLM applications and agents.

By removing the complexity of connecting agentic applications with your users' data and services, Arcade enables developers to focus on building their agentic applications.

To learn more, check out our