bfcl-eval
Berkeley Function Calling Leaderboard (BFCL)
What it is and what it does
BFCL is a comprehensive evaluation framework for assessing how well large language models can invoke functions correctly. It goes beyond simple function-calling tests to include parallel calls, multi-turn interactions, agentic scenarios with web search, and memory management. The package provides both a command-line interface and programmatic API to generate model responses and evaluate their correctness against executable test cases.
The framework integrates with major LLM providers (OpenAI, Anthropic, Mistral, Cohere, Google, Qwen) and supports locally-hosted models via vllm or sglang backends. It uses tree-sitter for code parsing, faiss-cpu for semantic retrieval, and sentence-transformers for embeddings. Results are stored in configurable directories and can be logged to Weights & Biases. The package requires substantial setup—environment variables, API keys, and a project root directory—but is designed for researchers and practitioners benchmarking model capabilities at scale.
Use it for:
- Benchmark a new LLM variant's function-calling accuracy against the Berkeley leaderboard test suite
- Evaluate locally-hosted open-source models using vllm or sglang backends to compare with proprietary APIs
- Test multi-turn agentic workflows where models must chain function calls with web search and memory
- Generate and evaluate function-calling responses for a custom subset of test cases using --run-ids
- Integrate function-calling evaluation into a CI/CD pipeline to track model performance regressions
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
Evaluates and benchmarks large language models' ability to invoke functions correctly across diverse scenarios, from simple calls to multi-turn agentic interactions with web search and memory management.
Yes, if you are benchmarking or comparing LLM function-calling capabilities. The package is actively maintained, well-integrated with major LLM providers, and covers realistic multi-turn and agentic scenarios beyond simple function calls. Install friction is low and no security vulnerabilities are known. Caveat: setup requires careful environment configuration (BFCL_PROJECT_ROOT, .env, API keys) and the 32 dependencies are substantial; use only if you actually need comprehensive function-calling evaluation.
Install
bfcl-eval on PyPI
pip
pip install bfcl-evaluv
uv add bfcl-evalpoetry
poetry add bfcl-evalInstalling bfcl-eval
Before you install
Low friction installation as a wheel; active maintenance with recent commits and strong repository engagement (12994 stars). Requires Python 3.10+. The 32 runtime dependencies are substantial but standard for ML evaluation work (requests, pandas, huggingface_hub, multiple LLM provider SDKs, tree-sitter for code parsing, faiss-cpu for retrieval).
License in practice
Apache 2.0 is permissive; you can use, modify, and distribute this package with minimal restrictions, provided you include the license notice.
Quickstart
pip install bfcl-eval
export BFCL_PROJECT_ROOT=/path/to/project
cp $(python -c "import bfcl_eval; print(bfcl_eval.__path__[0])")/.env.example $BFCL_PROJECT_ROOT/.env
bfcl generate --model gpt-4o-2024-11-20-FC --test-category simple_python
Python 3.10+ required; BFCL_PROJECT_ROOT environment variable must be set for PyPI installations to locate result and score directories; API keys for proprietary models (OpenAI, Anthropic, Mistral, etc.) must be configured in .env file.
Verify before relying
- Whether the package supports evaluation of models beyond those listed in SUPPORTED_MODELS.md
- Performance characteristics and typical runtime for full evaluation suites
- Whether locally-hosted model evaluation (vllm/sglang backends) is production-ready or experimental
Package facts
| License | Apache 2.0 (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 32 — requests, tqdm, numpy, pandas, huggingface_hub, pydantic, python-dotenv, tree_sitter, tree-sitter-java, tree-sitter-javascript, openai, mistralai, anthropic, cohere, typer, tabulate, datamodel-code-generator, google-genai, qwen-agent, mpmath, tenacity, writer-sdk, overrides, boto3, beautifulsoup4, html2text, rank_bm25, google-search-results, sentence-transformers, faiss-cpu |
| Maintenance | actively maintained — 144 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 580,493/month — #5,911 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: bfcl_eval-2026.3.23-py3-none-any.whl
Tags
More Artificial Intelligence packages
LiteLLM provides a unified Python interface to…
permissive · top 100 on PyPI
huggingface-hubClient library and CLI tool for downloading,…
permissive · top 100 on PyPI
langchainLangChain provides a framework for building…
permissive · top 1,000 on PyPI
hf-xethf-xet provides chunk-based deduplication and…
permissive · top 1,000 on PyPI
tokenizersTokenizers converts raw text into token…
permissive · top 1,000 on PyPI
transformersTransformers provides a unified framework for…
permissive · top 1,000 on PyPI
lm-evalUnified framework for evaluating generative…
permissive · top 5,000 on PyPI
TextArenaTextArena provides a framework of 100+…
permissive · top 15,000 on PyPI
evalplusEvalPlus provides a rigorous evaluation…
permissive · top 15,000 on PyPI
deepevalDeepEval is an LLM evaluation framework that…
permissive · top 5,000 on PyPI
strands-agents-evalsStrands Evals SDK provides a comprehensive…
permissive · top 15,000 on PyPI
terminal-benchTerminal-Bench provides a benchmark suite and…
unclear · top 15,000 on PyPI
unitxtUnitxt provides a unified framework for…
permissive · top 15,000 on PyPI
mtebMTEB evaluates text and multimodal embeddings…
permissive · top 5,000 on PyPI
sgl-kernelsgl-kernel provides optimized CUDA compute…
permissive · top 15,000 on PyPI
autoevalsAutoevals provides automatic evaluation methods…
unclear · top 5,000 on PyPI