長いテキストを要約するのは、特に PyBazaar のようなプラットフォームでは、簡潔な要約によってユーザー エクスペリエンスが向上するため、面倒な場合があります。この投稿では、Simplemind と Gemini を使用して、Django ベースのプロジェクトでこのプロセスを自動化する方法を共有します。
最近、Python 開発者が自分のスキルを示し、求人を見つけ、開発リソースを投稿および検索できる Web サイトである PyBazaar.com を立ち上げました。その目的は、Python 開発者がサービス、製品、プロジェクトをマーケティングできる中心的な場所を用意することです。
PyBazaar では、キャリアの機会とリソースに関する長い説明が詳細ビューに表示され、短い概要がリスト ビューに表示されます。概要を使用すると、ユーザーは各詳細ビューを開くことなく、リソースの内容とキャリアの機会をすばやく把握できるようになり、PyBazaar での全体的な閲覧エクスペリエンスが向上します。編集をよりスムーズにするために、AIによる自動要約を導入しました。
requests の作者である Kenneth Reitz は、大規模言語モデル (LLM) の API を使用した開発者のエクスペリエンスを向上させる最新の作品である Simplemind を最近公開しました。彼のパッケージを PyBazaar に統合してみる良い機会だと思いました。
私は無料枠として Google Gemini を選択しましたが、Simplemind は OpenAI や Claude などのプロバイダーをサポートしているため、開発者は必要に応じてより高度な機能やより正確な結果を得るためにスケールアップできます。
最初は、Google AI Studio で API キーを取得する必要がありました。
次に、Simplemind をインストールしました:
(venv)$ pip install 'simplemind[full]'
しかし、依存関係の 1 つ (grpcio) が Mac でコンパイルされるのを待っている間に、エナジードリンクを飲む時間があり、ソーシャル メディア フィードの半分をスクロールするのに十分な時間がありました。
Simplemind は、LLM API キーが環境変数で定義されていることを期待します。私の Django プロジェクトでは、Git では無視される JSON ファイルにシークレットを保存し、作成したユーティリティ関数 get_secret() でそれらの値を読み取ります。
そこで、Django の設定に次の行を追加しました。
import os os.environ["GEMINI_API_KEY"] = get_secret("GEMINI_API_KEY") DEFAULT_LLM_PROVIDER = "gemini"
投稿された HTML コンテンツを取得し、LLM にそれを要約するよう依頼し、その要約をユーザーに返す簡単なビューを作成しました。
import json import simplemind from django.contrib.auth.decorators import login_required from django.conf import settings from django.http import JsonResponse from django.utils.html import strip_tags @login_required def summarize(request): summary = "" try: if ( request.method == "POST" and (data := json.loads(request.body)) and (content := data.get("content")) and (text := strip_tags(content).strip()) ): summary = simplemind.generate_text( prompt=f"Condense the following information in 2 sentences:\n\n{text}", llm_provider=settings.DEFAULT_LLM_PROVIDER, ).strip() except json.JSONDecodeError: pass data = {"summary": summary} return JsonResponse(data)
ご覧のとおり、Simplemind は リクエスト アプリと同じくらいエレガントです。より高度な結果やスマートなクエリが必要な場合は、OpenAI または Claude に簡単に切り替えることができます。
strip_tags() を使用してトークン数を減らし、strip() を使用して先頭と末尾の空白を削除しました。
ビューのパフォーマンスを向上させるために、ASGI またはバックグラウンド タスクを使用することもできますが、PyBazaar のユーザーが増えた場合はそれを考慮する必要があります。
要約ボタンにはテンプレートがあり、layout.HTML("""{% include "summarizer/includes/summarize_button.html" %}"""):
を使用して Django Crispy Forms レイアウトに含めました。
(venv)$ pip install 'simplemind[full]'
ユーザーが「AI による要約」ボタンをクリックすると、JavaScript はボタンを一時的に無効にし、そのテキストを「要約...」に変更し、QuillJS フィールドから HTML 値を読み取り、それを {"content として投稿します。 ": "..."} を要約ビューに追加します。概要を {"summary": "..."} として受け取った後、JavaScript は概要テキストエリアに入力し、ボタンが再度クリック可能になります。
Simplemind では、スマート デフォルトを使用して LLM の操作が容易になるため、開発者は温度や max_tokens などの複雑な設定を調整する必要がありません。
Gemini LLM は無料で使用でき、適度な数のアクティブ ユーザーがいるこのような単純な機能には十分だと思われます。
この要約機能を PyBazaar にわずか半日で実装しました。この統合を簡単に適応させて、メタディスクリプション、電子メールの下書き、またはパーソナライズされた推奨事項を生成することができました。
自分のスキルを披露したり、リソースを共有したり、機会を見つけたりしたい Python 開発者の方は、今すぐ PyBazaar.com にアクセスしてください!
カイオによるカバー写真
以上がDjango Web サイトで AI ベースの概要を作成するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。