fix: preserve reasoning_effort parameter for GPT-5 models
Description
Fixes #237 - GPT-5-mini reasoning_effort Parameter Issue
Problem
When using reasoning_effort parameter with GPT-5 models, the following error occurred:
Exception: OpenAI API error: Completions.create() got an unexpected keyword argument 'reasoning'
This prevented users from utilizing GPT-5's reasoning capabilities through LangExtract, making the library incompatible with OpenAI's latest models.
Root Cause
The _normalize_reasoning_params() method in src/langextract/providers/openai.py incorrectly transformed the parameter from:
{"reasoning_effort": "minimal"} # ✅ Expected by OpenAI API
Into:
{"reasoning": {"effort": "minimal"}} # ❌ Invalid nested structure
This transformation caused OpenAI's API to reject the request with an "unexpected keyword argument" error.
Solution
- Fixed parameter preservation: Modified
_normalize_reasoning_params()to detect GPT-5 models and preservereasoning_effortas a top-level parameter - Added model detection: Implemented case-insensitive detection for
gpt-5,gpt-5-mini,gpt-5-nanovariants - Enhanced parameter support: Added
verbosityparameter support for GPT-5 models - Maintained backward compatibility: Non-GPT-5 models continue working with existing logic
Technical Changes
File: src/langextract/providers/openai.py
- Updated
_normalize_reasoning_params()method with GPT-5 model detection - Modified parameter handling in
_process_single_prompt()to pass throughreasoning_effortandverbosity - Updated
infer()method to collect GPT-5-specific parameters
File: tests/test_gpt5_reasoning_fix.py (new)
- Added comprehensive test coverage for parameter handling
- Tests for GPT-5 model variants support
- Backward compatibility verification
- Mock API call validation
Impact
- ✅ Fixes critical bug: GPT-5 models now work with reasoning parameters
- ✅ Zero breaking changes: Existing code continues working unchanged
- ✅ Enhanced functionality: Users can now access GPT-5's advanced reasoning features
- ✅ Future-proof: Supports all current and future GPT-5 variants
How Has This Been Tested?
Unit Testing
`$ python -m pytest tests/test_gpt5_reasoning_fix.py -v platform win32 -- Python 3.12.10, pytest-8.4.2, pluggy-1.6.0 collected 4 items
tests/test_gpt5_reasoning_fix.py::TestGPT5ReasoningEffort::test_gpt5_reasoning_effort_preserved PASSED [ 25%] tests/test_gpt5_reasoning_fix.py::TestGPT5ReasoningEffort::test_gpt4_reasoning_effort_removed PASSED [ 50%] tests/test_gpt5_reasoning_fix.py::TestGPT5ReasoningEffort::test_gpt5_variants_supported PASSED [ 75%] tests/test_gpt5_reasoning_fix.py::TestGPT5ReasoningEffort::test_api_call_with_reasoning_effort PASSED [100%]
========== 4 passed in 6.89s ==========`
Checklist
Integration Testing
Before Fix:
Exception: OpenAI API error: Completions.create() got an unexpected keyword argument 'reasoning'
After Fix:
$ python test_integration_fix.py LangExtract: model=gpt-5-mini [00:04]
@aksg87 I have worked on resolving the issue, you can check it out.
⚠️ Branch Update Required
Your branch is 1 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.
⚠️ Branch Update Required
Your branch is 2 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.
⚠️ Branch Update Required
Your branch is 1 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.
⚠️ Branch Update Required
Your branch is 1 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.
⚠️ Branch Update Required
Your branch is 3 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.
⚠️ Branch Update Required
Your branch is 4 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.
⚠️ Branch Update Required
Your branch is 8 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.
⚠️ Branch Update Required
Your branch is 10 commits behind main. Please update your branch to ensure CI checks run with the latest code:
git fetch origin main
git merge origin/main
git push
Note: Enable "Allow edits by maintainers" to allow automatic updates.