chore: Remove PR template files from version control
PR templates should not be committed to the repository 🤖 Generated with [Claude Code](https://claude.ai/code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -1,99 +0,0 @@
|
||||
## PR Title Format
|
||||
|
||||
**fix: Fix o3-pro empty response issue by using output_text field**
|
||||
|
||||
## Description
|
||||
|
||||
This PR fixes a critical bug where o3-pro API calls were returning empty responses. The root cause was incorrect response parsing - the code was trying to manually parse `response.output.content[]` array structure, but o3-pro provides a simpler `output_text` convenience field directly on the response object. This PR also introduces a secure HTTP recording system for testing expensive o3-pro calls.
|
||||
|
||||
## Changes Made
|
||||
|
||||
- [x] Fixed o3-pro response parsing by using the `output_text` convenience field instead of manual parsing
|
||||
- [x] Added `_safe_extract_output_text` method with proper validation to handle o3-pro's response format
|
||||
- [x] Implemented custom HTTP transport recorder to replace respx for more reliable test recordings
|
||||
- [x] Added comprehensive PII sanitization to prevent accidental API key exposure in test cassettes
|
||||
- [x] Sanitized all existing test cassettes to remove any exposed secrets
|
||||
- [x] Updated documentation for the new testing infrastructure
|
||||
- [x] Added test suite to validate the fix and ensure PII sanitization works correctly
|
||||
|
||||
**No breaking changes** - The fix only affects o3-pro model parsing internally.
|
||||
|
||||
**Dependencies added:**
|
||||
- None (uses existing httpx and standard library modules)
|
||||
|
||||
## Testing
|
||||
|
||||
### Run all linting and tests (required):
|
||||
```bash
|
||||
# Activate virtual environment first
|
||||
source venv/bin/activate
|
||||
|
||||
# Run comprehensive code quality checks (recommended)
|
||||
./code_quality_checks.sh
|
||||
|
||||
# If you made tool changes, also run simulator tests
|
||||
python communication_simulator_test.py
|
||||
```
|
||||
|
||||
- [x] All linting passes (ruff, black, isort)
|
||||
- [x] All unit tests pass
|
||||
- [x] **For bug fixes**: Tests added to prevent regression
|
||||
- `test_o3_pro_output_text_fix.py` - Validates o3-pro response parsing works correctly
|
||||
- `test_o3_pro_http_recording.py` - Tests HTTP recording functionality
|
||||
- `test_pii_sanitizer.py` - Ensures PII sanitization works properly
|
||||
- [x] Manual testing completed with realistic scenarios
|
||||
- Verified o3-pro calls return actual content instead of empty responses
|
||||
- Validated that recorded cassettes contain no exposed API keys
|
||||
|
||||
## Related Issues
|
||||
|
||||
Fixes o3-pro API calls returning empty responses on master branch.
|
||||
|
||||
## Checklist
|
||||
|
||||
- [x] PR title follows the format guidelines above
|
||||
- [x] **Activated venv and ran code quality checks: `source venv/bin/activate && ./code_quality_checks.sh`**
|
||||
- [x] Self-review completed
|
||||
- [x] **Tests added for ALL changes** (see Testing section above)
|
||||
- [x] Documentation updated as needed
|
||||
- Updated `docs/testing.md` with new testing approach
|
||||
- Added `docs/vcr-testing.md` for HTTP recording documentation
|
||||
- [x] All unit tests passing
|
||||
- [x] Ready for review
|
||||
|
||||
## Additional Notes
|
||||
|
||||
### The Bug:
|
||||
On master branch, o3-pro API calls were returning empty responses because the code was trying to parse the response incorrectly:
|
||||
```python
|
||||
# Master branch - incorrect parsing
|
||||
if hasattr(response.output, "content") and response.output.content:
|
||||
for content_item in response.output.content:
|
||||
if hasattr(content_item, "type") and content_item.type == "output_text":
|
||||
content = content_item.text
|
||||
break
|
||||
```
|
||||
|
||||
The o3-pro response object actually provides an `output_text` convenience field directly:
|
||||
```python
|
||||
# Fixed version - correct parsing
|
||||
content = response.output_text
|
||||
```
|
||||
|
||||
### The Fix:
|
||||
1. Added `_safe_extract_output_text` method that properly validates and extracts the `output_text` field
|
||||
2. Updated the response parsing logic in `_generate_with_responses_endpoint` to use this new method
|
||||
3. Added proper error handling and validation to catch future response format issues
|
||||
|
||||
### Additional Improvements:
|
||||
- **Testing Infrastructure**: Implemented HTTP transport recorder to enable testing without repeated expensive API calls
|
||||
- **Security**: Added automatic PII sanitization to prevent API keys from being accidentally committed in test recordings
|
||||
|
||||
### Development Notes:
|
||||
- During development, we encountered timeout issues with the initial respx-based approach which led to implementing the custom HTTP transport recorder
|
||||
- The transport recorder solution properly handles streaming responses and gzip compression
|
||||
|
||||
### For Reviewers:
|
||||
- The core fix is in `providers/openai_compatible.py` lines 307-335 and line 396
|
||||
- The HTTP transport recorder is test infrastructure only and doesn't affect production code
|
||||
- All test cassettes have been sanitized and verified to contain no secrets
|
||||
Reference in New Issue
Block a user