skip to content
barorin&?

gpt-3.5-turboでブログ記事をまとめて要約してみました

/ 2 min read

はじめに

当ブログをAstroにリファクタリングした際に、記事のdescriptionを書き直そうと思ったのですが、 手作業でやるにはあまりに面倒なので、ChatGPTに放り投げました。

方法

前提として、content[2]がdescription行、content[8:]が本文になってます。

import glob

from openai import OpenAI

def summarize_text(
    file_path, model="gpt-3.5-turbo", temperature=0.5, max_tokens=120
):
    # ファイルを読み込む
    with open(file_path, "r", encoding="utf-8") as f:
        content = f.readlines()
        text = "".join(content[8:])  # 本文

        # OpenAI設定
        client = OpenAI(api_key="xxxxxxxxxxxxxxxxxxxxx")

        # 要約
        summarize_query = f"""以下のブログ記事の紹介文を120文字以内の簡潔な短い文章で作成してください。
        また、参照情報やURLは不要です。:
        \n\n{text}
        """
        summarized = client.chat.completions.create(
            messages=[{"role": "user", "content": summarize_query}],
            model=model,
            temperature=temperature,
            max_tokens=max_tokens,
        )
        summarized_description = summarized.choices[0].message.content
        print(f"紹介文: {summarized_description}\n---")

        # descriptionを置換
        content[2] = f'description: "{summarized_description}"\n'

        # 変更をファイルに書き戻す
        with open(file_path, "w", encoding="utf-8") as f:
            f.writelines(content)

使い方

posts = glob.glob("blog/**/*.mdx", recursive=True)
for post in posts:
    print(f"---\n処理: {post}")
    summarize_text(post)