Skip to main content

Uma biblioteca para depuração usando modelos de linguagem

Project description

SmartDebugger

SmartDebugger é uma biblioteca Python que facilita a depuração de código utilizando modelos de linguagem avançados (LLMs). Ao aplicar o SmartDebugger como um decorador em funções, ele captura exceções, analisa erros com o auxílio de LLMs e fornece sugestões inteligentes para correção, tornando o processo de depuração mais eficiente e informativo.

Recursos

  • Depuração Inteligente com Decoradores: Aplique o SmartDebugger como um decorador para capturar e analisar erros automaticamente.
  • Integração com Diversos LLMs: por padrão a biblioteca está configurada para modelo groq, mas não está limitada apenas a groq, ela suporta integração personalizada com outros LLMs como OpenAI.
  • Mensagens Coloridas: Utiliza colorama para destacar erros e sugestões no terminal, melhorando a legibilidade.
  • Logging Avançado: Registra detalhes dos erros e análises em arquivos de log para referência futura.

Instalação

Instale o smartdebugger diretamente do PyPI utilizando o pip:

pip install smartdebugger

Ou instale a partir do repositório:

pip install git+https://github.com/seuusuario/smartdebugger.git

Requisitos

Este projeto depende das seguintes bibliotecas:

  • google-generativeai
  • Pillow
  • langchain-core
  • langchain-groq
  • openai
  • colorama

As dependências são automaticamente instaladas com o pip install smartdebugger, mas você também pode instalar manualmente usando:

pip install google-generativeai Pillow langchain-core langchain-groq openai colorama

Como Usar

Inicialização Básica

Aqui está um exemplo de como utilizar o SmartDebugger como um decorador para capturar e analisar erros em uma função:

from smartdebugger import SmartDebugger

# Inicializa o depurador
debugger = SmartDebugger(
    lang="pt",
    raises=False,
    llm_api_key="SUA_CHAVE_API",
    model_name="llama-3.1-70b-versatile",
    llm_type="groqchat",  # Tipos suportados: 'groqchat',
)

# Aplica o depurador como um decorador
@debugger
def divide(a: int, b: int) -> float:
    return a / b

# Teste da função decorada
try:
    resultado = divide(10, 0)
except:
    pass

Uso com um LLM Personalizado

Você pode definir e utilizar um LLM personalizado, como o OpenAI, substituindo o llm_type padrão:

import openai
from smartdebugger import SmartDebugger

def custom_openai_llm():
    openai.api_key = "SUA_API_KEY"
    
    class OpenAIWrapper:
        def generate_response(self, question):
            response = openai.ChatCompletion.create(
                model="gpt-4",
                messages=[{"role": "user", "content": question}]
            )
            return response.choices[0].message['content']
    
    return OpenAIWrapper()

# Inicializa o depurador com o LLM personalizado
debugger = SmartDebugger(
    lang="pt",
    raises=False,
    llm_api_key="SUA_CHAVE_API",
    model_name="gpt-4",
    llm_type="openai",  # Tipo ajustado para usar OpenAI
    custom_llm_fn=custom_openai_llm
)

@debugger
def divide(a: int, b: int) -> float:
    return a / b

try:
    resultado = divide(10, 0)
except:
    pass

Explicação dos Parâmetros

  • lang: Define o idioma das mensagens de depuração ("pt" para português ou "en" para inglês).
  • raises: Se True, re-lança a exceção original após a depuração.
  • llm_api_key: Chave de API para autenticação no serviço de LLM.
  • model_name: Nome do modelo de linguagem a ser utilizado.
  • llm_type: Tipo de LLM a ser usado ("groqchat", "gemini", "openai" etc.).
  • custom_llm_fn: Função opcional para inicializar um cliente LLM personalizado.

Exemplo Completo

import openai
from smartdebugger import SmartDebugger

def custom_openai_llm():
    openai.api_key = "SUA_API_KEY"
    
    class OpenAIWrapper:
        def generate_response(self, question):
            response = openai.ChatCompletion.create(
                model="gpt-4",
                messages=[{"role": "user", "content": question}]
            )
            return response.choices[0].message['content']
    
    return OpenAIWrapper()

debugger = SmartDebugger(
    lang="pt",
    raises=False,
    llm_api_key="SUA_CHAVE_API",
    model_name="gpt-4",
    llm_type="openai",
    custom_llm_fn=custom_openai_llm
)

@debugger
def divide(a: int, b: int) -> float:
    return a / b

try:
    resultado = divide(10, 0)
except:
    pass

Estrutura do Projeto

A seguir, a estrutura recomendada para o projeto:

smartdebugger/
├── smartdebugger/
│   ├── __init__.py           # Inicializa o pacote
│   ├── llms.py               # Integração com modelos de linguagem
│   ├── the_debugger.py       # Código principal do depurador
├── tests/
│   ├── __init__.py
│   ├── test_llms.py
│   └── test_the_debugger.py
├── docs/
│   └── index.md              # Documentação adicional
├── README.md                 # Este arquivo
├── LICENSE                   # Arquivo de licença
├── pyproject.toml            # Configuração para build
├── setup.py                  # Script de instalação
├── setup.cfg                 # Configurações adicionais (opcional)
└── .gitignore                # Especifica arquivos a serem ignorados pelo Git

Contribuição

Contribuições são bem-vindas! Siga os passos abaixo para contribuir:

  1. Faça um fork do repositório.
  2. Crie uma branch para sua feature ou correção:
    git checkout -b minha-feature
    
  3. Faça o commit das suas mudanças:
    git commit -m "Adicionei minha feature"
    
  4. Envie para a branch original:
    git push origin minha-feature
    
  5. Abra um pull request no GitHub.

Licença

Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.

Contato

Desenvolvido por Saide Omar Saide - saideomarsaid@gmail.com


Notas Adicionais

  • Chave de API: Certifique-se de manter suas chaves de API seguras e não compartilhá-las publicamente.
  • Customização: O SmartDebugger foi projetado para ser flexível e pode ser adaptado para diferentes necessidades de depuração com diferentes LLMs.

 

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

smartdebugger-0.1.0.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

smartdebugger-0.1.0-py3-none-any.whl (3.5 kB view details)

Uploaded Python 3

File details

Details for the file smartdebugger-0.1.0.tar.gz.

File metadata

  • Download URL: smartdebugger-0.1.0.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for smartdebugger-0.1.0.tar.gz
Algorithm Hash digest
SHA256 0b25347b2d1254a7730c82b56854ee8d39bb3466ecb82866804cc8053b024934
MD5 112a20e7dd7f7d7960853d88d9acf4fd
BLAKE2b-256 4fd40f82727cb88664b662ea5b8468705cd24903a69df7e520773404bae88e22

See more details on using hashes here.

File details

Details for the file smartdebugger-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: smartdebugger-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.5 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.12.3

File hashes

Hashes for smartdebugger-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 928b9276d685fdd20a57ab8ea1e7400719129bd6ced75f1df8573f4708dd5431
MD5 f50b2e9b0f742be6d74d00252ae6c069
BLAKE2b-256 ddf3c64b5d5aa0b7960a25e4b19457e31638304f58c25b133cf6c1d4d19793ca

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page