Merge pull request #258 from plastic-labs/ben/add-test-count-to-longmem

feat: add --test-count arg to longmem.py
This commit is contained in:
doria 2025-10-31 13:29:42 -04:00 committed by GitHub
commit 71a6b80594
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 22 additions and 2 deletions

View File

@ -870,7 +870,7 @@ Evaluate whether the actual response correctly answers the question based on the
return results
async def run_all_questions(
self, test_file: Path, batch_size: int = 10
self, test_file: Path, batch_size: int = 10, test_count: int | None = None
) -> tuple[list[TestResult], float]:
"""
Run all questions in a longmemeval test file.
@ -878,11 +878,20 @@ Evaluate whether the actual response correctly answers the question based on the
Args:
test_file: Path to the longmemeval JSON file
batch_size: Number of questions to run concurrently in each batch
test_count: Optional number of tests to run (runs first N tests)
Returns:
Tuple of (list of test results, total duration)
"""
questions = self.load_test_file(test_file)
# Limit to first N questions if test_count is specified
if test_count is not None and test_count > 0:
questions = questions[:test_count]
print(
f"limiting to first {len(questions)} {'question' if len(questions) == 1 else 'questions'} from {test_file}"
)
print(
f"found {len(questions)} {'question' if len(questions) == 1 else 'questions'} in {test_file}"
)
@ -1140,6 +1149,7 @@ Examples:
%(prog)s --test-file tests/bench/longmemeval_data/longmemeval_s.json # Run longmemeval tests
%(prog)s --test-file test.json --pool-size 4 # Use 4 Honcho instances
%(prog)s --test-file test.json --base-api-port 8000 --pool-size 4 # Custom base port with pool
%(prog)s --test-file test.json --test-count 50 # Run only first 50 tests
""",
)
@ -1208,6 +1218,12 @@ Examples:
help="Use get_context + judge LLM instead of dialectic .chat endpoint (default: False)",
)
parser.add_argument(
"--test-count",
type=int,
help="Number of tests to run from the test file (default: all tests)",
)
args = parser.parse_args()
# Validate arguments
@ -1223,6 +1239,10 @@ Examples:
print(f"Error: Pool size must be positive, got {args.pool_size}")
return 1
if args.test_count is not None and args.test_count <= 0:
print(f"Error: Test count must be positive, got {args.test_count}")
return 1
# Create test runner
runner = LongMemEvalRunner(
base_api_port=args.base_api_port,
@ -1237,7 +1257,7 @@ Examples:
try:
# Run all questions
results, total_elapsed = await runner.run_all_questions(
args.test_file, args.batch_size
args.test_file, args.batch_size, args.test_count
)
runner.print_summary(results, total_elapsed_seconds=total_elapsed)