ホームページ > ウェブフロントエンド > jsチュートリアル > Django Web サイトで AI ベースの概要を作成する

Django Web サイトで AI ベースの概要を作成する

Mary-Kate Olsen
リリース: 2024-11-30 06:13:10
オリジナル
985 人が閲覧しました

長いテキストを要約するのは、特に PyBazaar のようなプラットフォームでは、簡潔な要約によってユーザー エクスペリエンスが向上するため、面倒な場合があります。この投稿では、Simplemind と Gemini を使用して、Django ベースのプロジェクトでこのプロセスを自動化する方法を共有します。

背景情報

最近、Python 開発者が自分のスキルを示し、求人を見つけ、開発リソースを投稿および検索できる Web サイトである PyBazaar.com を立ち上げました。その目的は、Python 開発者がサービス、製品、プロジェクトをマーケティングできる中心的な場所を用意することです。

PyBazaar では、キャリアの機会とリソースに関する長い説明が詳細ビューに表示され、短い概要がリスト ビューに表示されます。概要を使用すると、ユーザーは各詳細ビューを開くことなく、リソースの内容とキャリアの機会をすばやく把握できるようになり、PyBazaar での全体的な閲覧エクスペリエンスが向上します。編集をよりスムーズにするために、AIによる自動要約を導入しました。

Creating AI-based Summaries in a Django Website

LLM との通信に Simplemind を選択する

有名なパッケージ

requests の作者である Kenneth Reitz は、大規模言語モデル (LLM) の API を使用した開発者のエクスペリエンスを向上させる最新の作品である Simplemind を最近公開しました。彼のパッケージを PyBazaar に統合してみる良い機会だと思いました。

私は無料枠として Google Gemini を選択しましたが、Simplemind は OpenAI や Claude などのプロバイダーをサポートしているため、開発者は必要に応じてより高度な機能やより正確な結果を得るためにスケールアップできます。

APIキーの設定

最初は、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 サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート