A Python library to get AI-powered explanations for exceptions using Hugging Face models.
Project description
Error Narrator
Простая Python-библиотека для получения "человеческих" объяснений ошибок и исключений с помощью моделей ИИ от Hugging Face.
Вместо того чтобы просто видеть traceback, вы можете получить структурированный анализ, который поможет быстрее понять и исправить проблему.
Основные возможности
- Превращает непонятные
traceback'и в понятные объяснения. - Асинхронная работа "из коробки" (
asyncio). - Гибкая настройка: можно передать свой API-ключ Hugging Face и выбрать любую модель.
- Безопасное управление API-ключом через переменные окружения.
Установка
pip install error-narrator
Как пользоваться
1. Настройка API-ключа
Библиотека требует API-ключ от Hugging Face. Есть два способа его задать:
Способ А (рекомендуемый): Переменная окружения
Установите переменную окружения HUGGINGFACE_API_KEY. Библиотека автоматически ее найдет.
# Для Linux/macOS
export HUGGINGFACE_API_KEY='hf_xxxxxxxxxxxxxxxxxxxx'
# Для Windows (PowerShell)
$env:HUGGINGFACE_API_KEY='hf_xxxxxxxxxxxxxxxxxxxx'
Способ Б: Передача в конструктор
Вы можете передать ключ напрямую при создании объекта ErrorNarrator.
narrator = ErrorNarrator(api_key="hf_xxxxxxxxxxxxxxxxxxxx")
2. Пример кода
Вот простой пример, как перехватить исключение и получить для него объяснение.
import asyncio
import traceback
from error_narrator import ErrorNarrator
# Инициализируем класс.
# Ключ будет взят из переменной окружения HUGGINGFACE_API_KEY.
narrator = ErrorNarrator()
# Или можно указать модель
# narrator = ErrorNarrator(model_id="mistralai/Mistral-7B-Instruct-v0.2")
async def main():
try:
# Симулируем ошибку
result = 1 / 0
except Exception:
# Получаем полный traceback ошибки
error_traceback = traceback.format_exc()
# Получаем объяснение от AI
explanation = await narrator.explain_error(error_traceback)
print("--- ОБЫЧНАЯ ОШИБКА ---")
print(error_traceback)
print("\n--- ОБЪЯСНЕНИЕ ОТ AI ---")
print(explanation)
if __name__ == "__main__":
asyncio.run(main())
Результат выполнения
--- ОБЫЧНАЯ ОШИБКА ---
Traceback (most recent call last):
File "example.py", line 19, in main
result = 1 / 0
ZeroDivisionError: division by zero
--- ОБЪЯСНЕНИЕ ОТ AI ---
**1. Причина ошибки:**
Произошла ошибка `ZeroDivisionError`. Это стандартное исключение в Python, которое возникает при попытке деления любого числа на ноль.
**2. Местоположение:**
Ошибка произошла в файле `example.py` в строке 19, внутри функции `main`: `result = 1 / 0`.
**3. Рекомендация по исправлению:**
Перед выполнением операции деления необходимо добавить проверку, чтобы убедиться, что делитель не равен нулю.
Пример исправления:
```python
divisor = 0
if divisor != 0:
result = 1 / divisor
else:
# Обработать случай, когда делитель равен нулю
print("Ошибка: Деление на ноль невозможно.")
result = None
Эта проверка предотвратит падение программы и позволит корректно обработать ситуацию.
## Лицензия
Этот проект распространяется под лицензией MIT.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file error_narrator-0.1.2.tar.gz.
File metadata
- Download URL: error_narrator-0.1.2.tar.gz
- Upload date:
- Size: 5.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f34e26b2ae4f23aa58f143e0f871ceae7d9c376d4cff9b75256ce4f307cf4671
|
|
| MD5 |
713af2dc2094a7f512fb2431eaf955f2
|
|
| BLAKE2b-256 |
c032bbd96f7d0ed13afe02d11dd209052f458b97e032216cc47fa397312f8eba
|
File details
Details for the file error_narrator-0.1.2-py3-none-any.whl.
File metadata
- Download URL: error_narrator-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b7532f83110b75236153d683ba83e7f8aba6253159e9620bf30b588ee1da009c
|
|
| MD5 |
94d348da32b7c789f8cef8bb9ecda037
|
|
| BLAKE2b-256 |
93476c8a12bb4f7dc213b9ee86ce290f3d84ab2ebe570f8788c040b4bf3a3cae
|