猿でもわかるAIプログラミングシリーズ 🐵💻 「自分っぽい」文章をAIに書かせる練習



## 「自分っぽい」文章をAIに書かせる練習 ✍️🧠

---

## 1. はじめに：AIの文体、なんだか他人行儀？

ChatGPTを使ってブログやSNS投稿の草稿を作らせたことがある方は、こんなことを感じたことはないでしょうか？

> 「うーん、丁寧すぎる……」
> 「語尾がなんか“～ですね”ばっかり」
> 「もっと自分らしい表現にならないのかな？」

最近の生成AIは非常に優秀ですが、「**自分らしさ＝文体や口癖、リズム**」をコピーさせるのはまだ一筋縄ではいきません。
そこで今回は、**AIに「自分っぽい」文章を書かせる技術的アプローチ**を掘り下げてみます。

結論から言えば、ポイントは以下の2点：

* **文体のチューニングに必要なデータ構造とプロンプト設計**
* **ChatGPTの「カスタムインストラクション」や「システムプロンプト」の使い分け**

さらに、実務でも活用可能なTipsとして、

* 社内ナレッジ記事の統一化
* ブログの自動下書き
* ドキュメント生成の個人化

といった応用例もご紹介します。

---

## 2. 「文体をコピーさせる」とは何か？

まずは「自分っぽさ」を言語化してみましょう。

### ✅ 文体の要素とは？

| 要素     | 例                        |
| ------ | ------------------------ |
| 語尾     | 〜なんですよね、〜なんだと思う、〜って感じ    |
| 句読点    | 「、」を多用する／短文で区切る          |
| トーン    | カジュアル / 論文調 / フレンドリー     |
| よく使う語彙 | 例：「ガチで」「わりと」「ちなみに」「要するに」 |

こうした文体は、「文章そのもの」よりも「話し方のクセ」に近いものです。
つまり、**言語のスタイルを模倣するには、それを教える必要がある**ということです。

---

## 3. 実装：ChatGPTに「自分っぽい」文章を生成させる

### 🧠 3.1 学習素材を用意する

まずは自分の書いたブログやSNS投稿などを20件ほど集めて、以下のように整形します。

```text
【例1】
今日はDocker Composeを触ってみた。
正直、最初は「YAML多すぎ」と思ったけど、慣れると超便利。
ガチで「開発環境爆速化」って感じ。

【例2】
ちょっと試してみたら、めちゃくちゃシンプルだった。
やっぱり「まず動かす」が一番大事。
```

このような文章を10〜20個用意します。
→ この素材を「**文体のサンプル**」としてAIに覚えさせる土台にします。

---

### 🤖 3.2 システムプロンプトに埋め込む

次に、ChatGPT APIを使って「文体模倣モード」を作成します。

```python
# style_writer.py
import openai

def generate_with_style(user_prompt, style_examples):
    system_prompt = f"""
あなたはライターAIです。以下に示す文体の特徴を真似て、ユーザーの指示に従って文章を生成してください。

【文体の例】
{style_examples}

この文体の特徴をまねてください。
    """

    messages = [
        {"role": "system", "content": system_prompt},
        {"role": "user", "content": user_prompt}
    ]

    response = openai.ChatCompletion.create(
        model="gpt-4",
        messages=messages,
        temperature=0.9
    )

    return response.choices[0].message["content"]
```

---

### 📦 3.3 実行例

```python
if __name__ == "__main__":
    with open("my_writing_samples.txt", encoding="utf-8") as f:
        style_data = f.read()

    prompt = "AI時代の学び方について、500文字で書いてください。"

    result = generate_with_style(prompt, style_data)
    print(result)
```

出力例（カジュアル口調が反映される）：

```text
AI時代って、ホント変化が早すぎる。
でも逆に言えば、「今さら勉強しても遅い」ってことは全然ない。

大事なのは、完璧主義をやめて「まず試す」こと。
YouTubeとかChatGPTでサクッと調べて、手を動かす。
それだけで意外と理解できたりするんだよね。

要するに、ガチで“行動こそ最強”って話。
```

---

## 4. 実務Tipsと落とし穴

### ✅ 実務で使えるアイデア

* ✅ **社内ブログの「筆者のトーン」維持に活用**
  → マニュアル文書も「〇〇さんっぽく」書ける

* ✅ **広報・マーケ記事の自動草案に**
  → トーンをブランドガイドラインに沿わせやすい

* ✅ **Zenn/Qiita下書きの時短**
  → 口調だけ統一して中身を後で肉付けするスタイルに最適

### ⚠️ よくある落とし穴

| 問題        | 原因                                  | 解決策                        |
| --------- | ----------------------------------- | -------------------------- |
| 文体が再現されない | style\_examplesが少なすぎる or 汎用的すぎる     | 自分の文章の「口癖」を強調して集める         |
| 文章が不自然になる | system promptが過剰 or temperatureが高すぎ | `temperature=0.7`〜`0.9`で調整 |
| 途中で口調が変わる | 会話履歴の分離不足                           | 文体を毎回明示する or ユーザー指示に含める    |

---

## 5. 発展編：ファインチューニング？Embedding？それとも関数？

今回はプロンプトエンジニアリングで文体再現を行いましたが、以下のような発展手法もあります：

### 🔁 選択肢1：**OpenAI Function Callingで文体分類器を入れる**

* ユーザーの入力文体を判別 → 一致するトーンで出力

### 📚 選択肢2：**LangChainなどで過去の文をベクトル検索**

* 過去の自分の文章を検索し、それを参考文として使う（RAG的アプローチ）

### 🎯 選択肢3：**OpenAIのファインチューニング機能（有料）**

* JSONL形式で学習させるが、一定量の高品質データが必要＆コストあり

---

## 6. まとめ：プロンプトだけでも「自分らしさ」は再現できる

### ✅ メリット

* ノーコード・低コストで実装可能
* 自分の表現をテンプレート化できる
* プロンプトだけで即試せる

### ❗ デメリット

* 長文になると口調が崩れる可能性あり
* 雑な素材だと似せにくい（例文の質が命）

---

## 🚀 おわりに：「自分をコピーする」AI体験、やってみよう

「文体」はその人のキャラそのもの。
それをAIに任せるのは一見無謀に見えるかもしれませんが、**正しい設計と工夫**で驚くほど「自分っぽいAI」が出来上がります。

次回はこの技術を発展させて、\*\*「複数キャラの文体を切り替えるBot」\*\*を作ってみようと思います！