Skip to main content
A multi-turn ReAct-style financial-QA agent that answers questions about SEC 10-K financial statements by querying structured tables. Four tools are exposed via native OpenAI function calling.

Pattern

Architecture

Model Weights | Dataset

Install

Dataset

Downloads the rLLM/finqa tarball, extracts company tables to cookbooks/finqa/data/company_tables/, and registers finqa/{train, val, test} (4,030 / 522 / 558 rows). The data tree is large (~6,900 tables) — use FINQA_TABLES_ROOT env var to point at a shared mount if you have one.

Eval

The judge calls gpt-5-nano / gpt-5-mini directly via openai.OpenAI() — set your OPENAI_API_KEY first:
If OPENAI_API_KEY is missing the evaluator silently returns reward=0 rather than crashing — useful for smoke tests without the gateway.

Training

Key code

The flow is the canonical multi-turn-tool-call template:
Tools are plain Python callables paired with an OpenAI function spec — no Tool base class, no registry. The 4 tools share a process-wide SQLite store loaded once at module import:

Files

On GitHub

cookbooks/finqa

Full source, README, and runnable launch scripts