A django middleware package that provides suggestions for unhandled errors/exceptions by using OpenAI.
Currently, the suggestions are added to the python loggers extra fields.
- Provide suggestions to resolve unhandled errors using OpenAI
- Locally cached code sage suggestions
- Easily enable or disable code sage per environment
- Customize code sage's suggestion response word length
An API key from OpenAPI, which can be found here.
- Install
code-sagewith a package manager, eg.:pip install code-sagepoetry add code-sagepipenv install code-sage
- Add the following to either django settings or environment variables:
OPEN_AI_API_KEY = "your-api-key"
CODE_SAGE_ENABLED = True- Update the django middleware to include
code-sage
MIDDLEWARE = [
# ...
"code-sage.middleware.ErrorHandlerMiddleware",
# ...
]This was tested with the code
for x in 100:
print(x)which gave the suggestion
To fix this error, you need to replace the line "for x in 100:" with "for x in range(100):". This will create an iterable object from the integer 100, allowing the loop to execute correctly.
Testing showed that it can also reference variables names when suggesting a solution. This is thanks to the
traceback.format_exc() that is provided to OpenAI when requesting a solution.
This also plays well with things like datadog, thanks to using the extra field in pythons logging.

A few things can be done to configure code sage. These can be set in either environment variables or through django settings files.
| Setting | Type | Default |
|---|---|---|
| OPEN_AI_API_KEY | String | (None) |
| CODE_SAGE_ENABLED | Boolean | False |
| CODE_SAGE_SUGGESTION_WORD_LIMIT | Integer | 120 |