langextract icon indicating copy to clipboard operation
langextract copied to clipboard

fix: preserve reasoning_effort parameter for GPT-5 models

Open ishanrajsingh opened this issue 3 months ago • 9 comments

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 preserve reasoning_effort as a top-level parameter
  • Added model detection: Implemented case-insensitive detection for gpt-5, gpt-5-mini, gpt-5-nano variants
  • Enhanced parameter support: Added verbosity parameter 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 through reasoning_effort and verbosity
  • 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]

ishanrajsingh avatar Sep 14 '25 12:09 ishanrajsingh

@aksg87 I have worked on resolving the issue, you can check it out.

ishanrajsingh avatar Sep 14 '25 13:09 ishanrajsingh

⚠️ 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.

github-actions[bot] avatar Sep 16 '25 04:09 github-actions[bot]

⚠️ 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.

github-actions[bot] avatar Sep 24 '25 02:09 github-actions[bot]

⚠️ 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.

github-actions[bot] avatar Oct 04 '25 23:10 github-actions[bot]

⚠️ 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.

github-actions[bot] avatar Oct 30 '25 06:10 github-actions[bot]

⚠️ 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.

github-actions[bot] avatar Nov 07 '25 02:11 github-actions[bot]

⚠️ 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.

github-actions[bot] avatar Nov 14 '25 22:11 github-actions[bot]

⚠️ 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.

github-actions[bot] avatar Nov 22 '25 02:11 github-actions[bot]

⚠️ 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.

github-actions[bot] avatar Nov 29 '25 02:11 github-actions[bot]