Expliquez vos exceptions Python avec OpenAI

Jan 27 2023
Comment créer un assistant IA pour vous aider à dépanner vos applications Python
La collection prefect-openai simplifie l'intégration d'OpenAI dans votre flux de travail, en combinant la journalisation de Prefect avec les capacités d'interprétation d'OpenAI. Application Lorsque votre code plante, ce serait bien d'avoir une aide au dépannage, comme celle d'OpenAI ! Si vous n'êtes pas familier avec les codes d'état HTTP, OpenAI peut vous aider à fournir un contexte supplémentaire.
Lisez la suite pour découvrir comment vous pouvez générer des images comme celle-ci en utilisant prefect-openai !

La prefect-openaicollection simplifie l'intégration d'OpenAI dans votre flux de travail, en combinant la journalisation de Prefect avec les capacités d'interprétation d'OpenAI.

Application

Lorsque votre code plante, ce serait bien d'avoir une aide au dépannage, comme celle d'OpenAI !

Si vous n'êtes pas familier avec les codes d'état HTTP, OpenAI peut vous aider à fournir un contexte supplémentaire. Cela pourrait vous aider à mieux comprendre le problème et à trouver une solution plus rapidement !

Par exemple, avec l'exception suivante comme entrée :

HTTPStatusError : erreur client '403 FORBIDDEN' pour l'url 'https://httpbin.org/status/403' Pour plus d'informations, vérifiez :https://httpstatuses.com/403

OpenAI a renvoyé l'interprétation suivante :

L'erreur interdite 403 signifie que l'utilisateur essayant de visiter l'URL n'est pas autorisé à le faire. Cela peut signifier que l'utilisateur n'est pas connecté ou que le contenu demandé n'est pas disponible. Vérifier l'URL pour plus d'informations peut aider à résoudre le problème.

Ça a l'air bien plus digeste !

Usage

Pour obtenir cette fonctionnalité, vous pouvez ajouter les deux lignes suivantes à votre code existant :

  1. from prefect_openai.completion import interpret_exception
  2. @interpret_exception("COMPLETION_MODEL_BLOCK_NAME")
  3. import httpx
    from prefect import flow
    from prefect_openai.completion import interpret_exception
    
    @flow
    @interpret_exception("curie")
    def example_func():
        resp = httpx.get("https://httpbin.org/status/403")
        resp.raise_for_status()
    
    example_func()
    

Journaux de l'interface utilisateur Prefect Cloud de l'exécution du flux

Installation

Avant de pouvoir utiliser interpret_exceptionle décorateur, les blocs OpenAICredentialset CompletionModeldoivent d'abord être créés.

Mais ne vous inquiétez pas, c'est simple.

Tout d'abord, créez votre clé API OpenAI à partir de la page de votre compte OpenAI .

Ensuite, copiez, collez et remplacez les espaces réservés ci-dessous.

from prefect_openai import OpenAICredentials, CompletionModel
openai_credentials = OpenAICredentials(api_key="API_KEY_PLACEHOLDER")
completion_model = CompletionModel(
    openai_credentials=openai_credentials,
    model="text-curie-001",
    max_tokens=1000,
    temperature=0.5
)
openai_credentials.save("CREDENTIALS_BLOCK_NAME_PLACEHOLDER")
completion_model.save("COMPLETION_MODEL_BLOCK_NAME_PLACEHOLDER")

Vous pouvez également créer les blocs directement à partir de l'interface utilisateur de Prefect :

Préfet UI créant le bloc CompletionModel

Personnalisation

Ajuster la sortie du modèle est à la fois un art et une science.

Si vous souhaitez utiliser un préfixe différent pour l'invite ou inclure une partie de la trace pour ajouter du contexte au modèle, vous pouvez utiliser les arguments de mots clés suivants :

  • prompt_prefix: le préfixe à inclure dans l'invite avant le message de trace et d'exception.
  • traceback_tail: le nombre de lignes du traceback d'origine à inclure dans l'invite à OpenAI, en commençant par la queue. Si 0, n'incluez que le message d'exception dans l'invite. Notez que cette configuration peut être coûteuse en termes de jetons, alors assurez-vous de définir ceci et le max_tokensde CompletionModelmanière appropriée.
  • @interpret_exception(
        "COMPLETION_MODEL_BLOCK_NAME_PLACEHOLDER",
        prompt_prefix="Offer a solution:",
        traceback_tail=1,
    )
    

  • capture le message d'exception
  • ajoute un préfixe, "Explain:"
  • le soumet en tant qu'invite à un modèle de complétion de texte
  • relance l'exception avec la réponse

Ressources

Outre l'interprétation des exceptions, prefect-openaiprend en charge la complétion de texte arbitraire, ainsi que la génération d'images - c'est ainsi que l'image de couverture a été générée !

Si vous avez trouvé ces cas d'utilisation intéressants, assurez-vous de consulter la prefect-openai documentation et de mettre en vedette le référentiel de collection sur GitHub !