OpenAI を使用して Python 例外を説明する

Jan 27 2023
Python アプリケーションのトラブルシューティングを支援する AI アシスタントを構築する方法
prefect-openaicollection は、Prefect のロギングと OpenAI の解釈機能を組み合わせて、OpenAI のワークフローへの統合を簡素化します。アプリケーション コードがクラッシュした場合、OpenAI などからトラブルシューティングのヘルプが得られると便利です。HTTP ステータス コードに慣れていない場合は、OpenAI が追加のコンテキストを提供するのに役立ちます。
prefect-openai を使用してこのような画像を生成する方法を学び続けてください。

このprefect-openaiコレクションは、Prefect のロギングと OpenAI の解釈機能を組み合わせて、OpenAI のワークフローへの統合を簡素化します。

応用

コードがクラッシュした場合、OpenAI などからトラブルシューティングのサポートが得られると便利です。

HTTP ステータス コードに慣れていない場合は、OpenAI が追加のコンテキストを提供するのに役立ちます。これにより、問題をより深く理解し、解決策をより早く見つけることができる可能性があります。

たとえば、入力として次の例外を使用します。

HTTPStatusError: URL 'https://httpbin.org/status/403' のクライアント エラー '403 FORBIDDEN' 詳細については、以下を確認してください。https://httpstatuses.com/403

OpenAI は次の解釈を返しました。

403 禁止エラーは、URL にアクセスしようとしているユーザーにその URL へのアクセスが許可されていないことを意味します。これは、ユーザーがログインしていないか、要求されたコンテンツが利用できないことを意味する可能性があります。詳細については URL を確認すると、問題の解決に役立つ可能性があります。

そのほうが消化しやすいようですよ!

使用法

この機能を実現するには、既存のコードに次の 2 行を追加します。

  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()
    

フロー実行の Prefect Cloud UI ログ

設定

デコレーターを使用できるようにするにはinterpret_exception、まずOpenAICredentialsとブロックを作成する必要があります。CompletionModel

しかし、心配しないでください。それは簡単です。

まず、 OpenAI アカウント ページから OpenAI API キーを作成します。

次に、以下のプレースホルダーをコピーして貼り付け、置き換えます。

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")

あるいは、Prefect UI から直接ブロックを作成することもできます。

CompletionModel ブロッ​​クを作成する Prefect UI

カスタマイズ

モデルの出力を調整することは、芸術でもあり、科学でもあります。

プロンプトに別のプレフィックスを使用するか、モデルに追加のコンテキストとしてトレースバックの一部を含めることに興味がある場合は、次のキーワード引数を使用できます。

  • prompt_prefix: トレースバックおよび例外メッセージの前のプロンプトに含めるプレフィックス。
  • traceback_tail: OpenAI へのプロンプトに含める元のトレースバックの末尾からの行数。0 の場合、プロンプトには例外メッセージのみが含まれます。この構成はトークンのコストが高くなる可能性があるため、これと をmax_tokens適切に設定するようにしてくださいCompletionModel。
  • @interpret_exception(
        "COMPLETION_MODEL_BLOCK_NAME_PLACEHOLDER",
        prompt_prefix="Offer a solution:",
        traceback_tail=1,
    )
    

  • 例外メッセージをキャプチャします
  • 「説明:」という接頭辞を追加します。
  • それをプロンプトとしてテキスト補完モデルに送信します
  • 応答で例外を再発生させます

資力

例外の解釈に加えて、prefect-openai任意のテキスト補完や画像生成もサポートしています。これがカバー画像の生成方法です。

prefect-openai これらのユースケースが興味深いと思われた場合は、必ずドキュメントをチェックし、 GitHub上のコレクション リポジトリにスターを付けてください。