A Python library to get AI-powered explanations for exceptions using Hugging Face models.
Project description
Error Narrator 🤖
Error Narrator — это умная Python-библиотека, которая превращает непонятные трейсбеки ошибок в ясные, структурированные объяснения с помощью искусственного интеллекта. Забудьте о долгом гуглении ошибок — получите причину, место и готовое решение прямо в вашей консоли!
🚀 Основные возможности
- Анализ ошибок с помощью ИИ: Получайте подробный разбор любого трейсбека.
- Структурированный ответ: Объяснение всегда включает:
- 🎯 Причину ошибки: Что именно пошло не так.
- 📍 Место ошибки: Точный файл и строка с фрагментом кода.
- 🛠️ Предлагаемое исправление: Готовый для копирования код, который решает проблему.
- 🎓 Обучающий момент: Краткое объяснение концепции, чтобы избегать подобных ошибок в будущем.
- Поддержка нескольких провайдеров:
gradio(по умолчанию): Бесплатный доступ к моделям на Hugging Face Spaces. Отлично для быстрого старта.openai: Используйте мощные модели, такие как GPT-3.5 или GPT-4, для более точных и надежных ответов (требуется API-ключ).
- Синхронный и асинхронный режимы: Используйте библиотеку в любом проекте.
📦 Установка
pip install error-narrator
Для работы с OpenAI необходимо также установить соответствующую зависимость, которая включена в pyproject.toml.
⚙️ Как использовать
Шаг 1: Настройка окружения
Для провайдера openai необходимо установить ваш API-ключ в качестве переменной окружения:
export OPENAI_API_KEY='sk-...'
Для приватных gradio репозиториев может понадобиться ключ Hugging Face:
export HUGGINGFACE_API_KEY='hf_...'
Шаг 2: Использование в коде
Это очень просто. Оберните ваш код в try...except, поймайте исключение и передайте его трейсбек в ErrorNarrator.
import traceback
from error_narrator import ErrorNarrator
def some_buggy_function():
# Пример кода, который вызовет ошибку
data = {'user': 'Alice'}
print(data['age']) # KeyError
if __name__ == "__main__":
try:
some_buggy_function()
except Exception:
tb_str = traceback.format_exc()
print("\n--- 😱 Произошла ошибка! Анализирую с помощью AI... ---\n")
# --- Вариант 1: Использование бесплатного провайдера Gradio (по умолчанию) ---
narrator_free = ErrorNarrator()
narrator_free.explain_and_print(tb_str)
print("\n--- 🚀 Анализ с помощью более мощной модели OpenAI... ---\n")
# --- Вариант 2: Использование провайдера OpenAI ---
# Убедитесь, что ключ OPENAI_API_KEY установлен
try:
narrator_pro = ErrorNarrator(provider='openai', model_id='gpt-3.5-turbo')
narrator_pro.explain_and_print(tb_str)
except Exception as e:
print(f"Не удалось запустить OpenAI: {e}")
📈 Будущие улучшения
- Добавление поддержки других AI-провайдеров (Anthropic, Gemini).
🤝 Вклад
Мы будем рады вашему вкладу! Если у вас есть идеи по улучшению, пожалуйста, создавайте issue или pull request.
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.2.0.tar.gz.
File metadata
- Download URL: error_narrator-0.2.0.tar.gz
- Upload date:
- Size: 6.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
440987f10cfccbf0a3e10c8daa1fc342f21c8b1b98e323954263ba14166658d4
|
|
| MD5 |
3585bae6bfc7fdf75b94352daf6de7fe
|
|
| BLAKE2b-256 |
2b3baeef08199464d3271054d4b517ac4bbf2e7680e7c5b5d6db427bf81350d0
|
File details
Details for the file error_narrator-0.2.0-py3-none-any.whl.
File metadata
- Download URL: error_narrator-0.2.0-py3-none-any.whl
- Upload date:
- Size: 6.9 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 |
0cbf100974f08fe2b3ee515ebf058e6f6e18d6832782012a687dbf556605c976
|
|
| MD5 |
7c9decbfa836161c9bf3267d1576b42f
|
|
| BLAKE2b-256 |
5eb8056a3a20b66684e4d6d8c510725c52fd8ecaf8bc2ab02b5e8990174663fa
|