{"id":23687,"library":"eval-protocol","title":"Eval Protocol Python SDK","description":"Official Python SDK for Eval Protocol (EP), an open protocol standardizing how developers author evals for LLM applications. Current version 0.3.29, under active development.","status":"active","version":"0.3.29","language":"python","source_language":"en","source_url":"https://github.com/fireworks-ai/eval-protocol","tags":["eval","LLM","protocol","SDK"],"install":[{"cmd":"pip install eval-protocol","lang":"bash","label":"Install from PyPI"}],"dependencies":[{"reason":"Used for data models (Episode, Result, etc.)","package":"pydantic","optional":false},{"reason":"HTTP client for API calls","package":"httpx","optional":false}],"imports":[{"note":"Package uses underscore in module name: eval_protocol, not evalprotocol.","wrong":"from evalprotocol import Episode","symbol":"Episode","correct":"from eval_protocol import Episode"},{"note":"","wrong":"","symbol":"EvalClient","correct":"from eval_protocol import EvalClient"},{"note":"","wrong":"","symbol":"Result","correct":"from eval_protocol import Result"}],"quickstart":{"code":"from eval_protocol import EvalClient, Episode, Result\nimport os\n\napi_key = os.environ.get('EVAL_PROTOCOL_API_KEY', '')\nclient = EvalClient(api_key=api_key)\n\neval_id = client.create_eval(name='My Quick Eval')\nepisode = Episode(input='What is 2+2?', expected='4')\nclient.log_episode(eval_id=eval_id, episode=episode)\nresult = client.run_eval(eval_id=eval_id)\nprint(result)\n","lang":"python","description":"Creates an eval, logs an episode, runs the eval, and prints the result."},"warnings":[{"fix":"Use EvalClient(api_key='your_key') instead of EvalClient('your_key').","message":"SDK version 0.3.x changed the API client initialization. Previously required positional api_key; now requires keyword argument.","severity":"breaking","affected_versions":">=0.3.0"},{"fix":"Use 'from eval_protocol import ...'.","message":"The import module is 'eval_protocol' (with underscore), not 'evalprotocol' or 'eval-protocol'. Hyphen cannot be used in Python imports.","severity":"gotcha","affected_versions":"all"},{"fix":"Always provide both 'input' and 'expected' when creating an Episode.","message":"Episode fields 'input' and 'expected' are required; omitting them causes runtime validation errors.","severity":"gotcha","affected_versions":">=0.2.0"}],"env_vars":null,"last_verified":"2026-05-01T00:00:00.000Z","next_check":"2026-07-30T00:00:00.000Z","problems":[{"fix":"Change import to: from eval_protocol import ...","cause":"Import uses 'evalprotocol' but correct module is 'eval_protocol'.","error":"ModuleNotFoundError: No module named 'evalprotocol'"},{"fix":"Use EvalClient(api_key='your_key') instead of EvalClient('your_key').","cause":"In version 0.3+, api_key must be passed as keyword argument.","error":"TypeError: EvalClient.__init__() missing 1 required positional argument: 'api_key'"},{"fix":"Always include 'input' and 'expected' when creating Episode.","cause":"Episode object created without the required 'input' field.","error":"pydantic.error_wrappers.ValidationError: 1 validation error for Episode\ninput\n  field required (type=value_error.missing)"}],"ecosystem":"pypi","meta_description":null,"install_score":null,"install_tag":null,"quickstart_score":null,"quickstart_tag":null}