試行錯誤ですが何か

定年親父がとりとめもなく、自己満足で日々やった事や感じた事、思ったことを書いています。ムンクが好きです。

【ローカルAI入門】ローカルAIを使って大喜利?をさせてみた(LM StudioでAPIを使う編)

AIを使って大喜利?をやったら面白いのではと思い、実際に試してみました。

 

今回使用するのは「LM Studio」です。

 前回のブログで「LM Studio Bionic」をインストールしましたが、同様の導入手順で、すでにダウンロード済みのAIモデルをそのまま流用できます。

今回の試みは、LM Studio上でローカルAIを動かし、Pythonのコードを実行してAPI経由で「先生役」と「生徒役」の2役に役割分担させて、こちらが指定したお題に沿って掛け合い(会話)をさせるというものです。

 

 

<導入手順>

 

A.LM Studioのダウンロードとインストール

 

 1.LM Studioのサイトから LM Studio をダウンロード

 

lmstudio.ai


「LM Studio Bionic」と同じURLですが、一番下までスクロールして、Down load appをクリックするとDown loadが出来る画面が出ます。

 

 

下記画面の Download LM Studio for Windows をクリック(Windowsの場合)

 *2026/9/28 現在 LM-Studio-0.4.25-1-x64.exe

  一応、自分のPCに適合するものかどうか確認してください。

 

 

2.ダウンロードしたLM-Studio-0.4.25-1-x64.exeをクリックしてインストール

  *手順についてはBionicと同じ様なものなので省略させていただきます。

 

 

インストールが完了したら、New chat をクリックして導入したAIモデルを読みこんで使えるかどうか試してください。

 

 

 

 

こんな感じで使えればOK!

 

 

 

B.ローカルAIのAPIサーバーを有効にする

 

ローカルAIが導入されている状態で、「Ctrl」+「2」のキー入力をするか、画面左のDeveloperボタンをクリックしてDeveloperの画面を出します。

そして、 Status: Runningの状態にしておきます。(下記画面)

 

 

 

 

C.Pythonコードの実行

 

下記コードをファイル名:AI_Ogiri.py として実行します。

注:このコードを実行するためには外部ライブラリopenai が必要です。

(pip install openai)

 

 

import sys
import time
import traceback
from openai import OpenAI

def main():
    # 1. ローカルAI用のクライアント設定
    local_client = OpenAI(
        base_url="http://localhost:1234/v1",
        api_key="local-ai-key",
    )

    TEACHER_MODEL = "qwen2.5-coder-14b-instruct-uncensored"
    STUDENT_MODEL = "qwen2.5-coder-14b-instruct-uncensored"

    # 2. システムプロンプト定義(短文・テンポ重視、具体例を注入)
    TEACHER_SYSTEM_PROMPT = """
# 役割
あなたは上方漫才のキレ味鋭い「ツッコミ役」の先生です。
生徒の突拍子もないボケに対して、的確に呆れ、鋭く短くツッコミを入れてから、一言だけ正しい知識を添えてください。

# ルール
1. **文字数制限**: 必ず「120文字以内」、2?3文程度で短く言い切ること。長文解説は厳禁。
2. **ツッコミ構文**:
   - まず第一声で勢いよく否定する(「何の話しとんねん!」「なんでやねん!」「はあ!」など)。
   - その後、呆れながら1行で正しい事実を教える。
3. **関西風のノリ**: 勢いとリズム感を最重要視してください。
"""

    STUDENT_SYSTEM_PROMPT = """
# 役割
あなたは漫才の「ド天然・暴走系ボケ役」の生徒です。
先生の話をまともに聞かず、言葉の響きや漢字の勘違い、極端な日常の例えに話を脱線させてください。

# ルール
1. **文字数制限**: 必ず「100?130文字以内」、2?3文程度で短くまとめること。
2. **ボケの型**:
   - 言葉の聞き間違い・同音異義語(例: 関税→完全試合、大統領→棟梁の大工、サステナブル→刺身のタブル)
   - 極端なスケールダウン(国家規模の話を近所の八百屋や友達のタケシの話にする)
3. **態度**: 本人は至って大真面目に大発見をしたテンションで喋ること。
"""

    # ストリーミング表示用関数
    def stream_chat(client, model, messages, temp, presence_pen=0.0):
        stream = client.chat.completions.create(
            model=model,
            messages=messages,
            temperature=temp,
            presence_penalty=presence_pen,
            max_tokens=300,
            stream=True,
        )
        full_text = ""
        for chunk in stream:
            content = chunk.choices[0].delta.content or ""
            print(content, end="", flush=True)
            full_text += content
        print("\n")
        return full_text.strip()

    # 3. 初期設定
    input_topic = input("漫才のお題を入力してください(未入力なら『円安』): ").strip()
    topic = input_topic if input_topic else "円安"
    max_turns = 4  # 往復回数

    teacher_history = [{"role": "system", "content": TEACHER_SYSTEM_PROMPT}]
    student_history = [{"role": "system", "content": STUDENT_SYSTEM_PROMPT}]

    print("=" * 50)
    print(f"       爆笑AI漫才コンビ「お題:{topic}」")
    print("=" * 50 + "\n")

    # 生徒AIにお題に応じた最初の勘違いボケを動的に生成させる
    student_first_prompt = (
        f"お題は「{topic}」です。この言葉の響き・漢字・字面を完全に勘違いした、"
        f"突拍子もないトンチンカンな質問・ボケを100?130文字程度で先生に勢いよく投げかけてください。"
    )

    print("【生徒】:")
    initial_question = stream_chat(
        client=local_client,
        model=STUDENT_MODEL,
        messages=student_history + [{"role": "user", "content": student_first_prompt}],
        temp=0.95,
        presence_pen=0.6,
    )

    # 生成されたボケを対話履歴に追加
    teacher_history.append({"role": "user", "content": initial_question})
    student_history.append({"role": "assistant", "content": initial_question})

    # 4. 対話ループ
    for turn in range(1, max_turns + 1):
        print(f"--- [ターン {turn} / {max_turns}] ---")
        is_final_turn = (turn == max_turns)

        # 先生のターン(QwenのJinjaテンプレート制約を回避するため、直前のuserメッセージ末尾に指示を追記)
        print("【先生】:")
        current_teacher_history = [dict(m) for m in teacher_history]
        if is_final_turn:
            last_msg = current_teacher_history[-1]["content"]
            current_teacher_history[-1]["content"] = (
                f"{last_msg}\n\n"
                f"(※これで最後のターンです。このボケに強烈にツッコんだ後、"
                f"必ず最後は「もうええわ!ありがとうございましたー!」と言って漫才を締めてください。)"
            )

        teacher_reply = stream_chat(
            client=local_client,
            model=TEACHER_MODEL,
            messages=current_teacher_history,
            temp=0.65,
            presence_pen=0.2,
        )
        teacher_history.append({"role": "assistant", "content": teacher_reply})
        student_history.append({"role": "user", "content": teacher_reply})

        if is_final_turn:
            break

        time.sleep(0.8)

        # 生徒のターン
        print("【生徒】:")
        student_reply = stream_chat(
            client=local_client,
            model=STUDENT_MODEL,
            messages=student_history,
            temp=0.92,             # ボケ役は高めで発想を飛ばす
            presence_pen=0.6,      # 同じワードのループを抑止
        )
        teacher_history.append({"role": "user", "content": student_reply})
        student_history.append({"role": "assistant", "content": student_reply})

        time.sleep(0.8)

    print("=" * 50)
    print("=== 漫才終了(お粗末様でした!) ===")
    print("=" * 50)


if __name__ == "__main__":
    try:
        main()
    except KeyboardInterrupt:
        print("\n\n[中断] 処理が中断されました。")
    except Exception as e:
        print("\n" + "!" * 50)
        print("【エラーが発生しました】")
        traceback.print_exc()
        print("!" * 50)
    finally:
        # 正常終了時・エラー発生時のいずれでもウィンドウが閉じないように保持
        print("\n")
        input("何かキー(Enter)を押すとウィンドウを閉じます...")

 

 

 

<あとがき>

 

実行例を下に置いておきます。

同じお題でも毎回違った会話になりますが・・・・。

正直、話がつまらないです。改善の余地ありありです。

もうちょっと賢いAIモデルなら面白い会話をしてくれるのではと思いますが、どうでしょうか。

 

おあとがよろしいようで・・・・。

 

 

 

 

 

 

【ローカルAI入門】AIモデルを追加してみました(Uncensored版Qwen2.5-Coder-14B 導入編)

 

前回の「LM Studio Bionic」がインストールされていることを前提としますが、
Qwenの検閲・拒否なし(Uncensored)ヴァージョンを導入していきます。

 

導入といってもやる事は簡単で、Hugging Faceサイトから導入したいAIモデルを探してダウンロードして、「LM Studio Bionic」が指定するフォルダに収納するだけです。

 

 

<導入手順>

 

1.Hugging Faceにアクセスして導入したいAIモデルを探してダウンロードします。

 

*このHugging Face(ハギングフェイス)というサイトはAiについての色々な情報を共有できるオープンプラットフォームです。

AIについてのGitHubと呼ばれたりするようです。

huggingface.co

 

 

今回は「Qwen2.5 Coder 14B」のUncensored版の

「Qwen2.5-Coder-14B-Instruct-Uncensored-GGUF」を導入します。

 

下記のサイトから、Q4_K_Mをダウンロードします。(8.4Gぐらいあります)

huggingface.co

 

 

 

2. ダウンロードしたファイルをユーザーフォルダ内の所定のフォルダに収納します。

 

「LM Studio Bionic」がデフォルトでインストールされていれば、

C:\Users\(ユーザー名)\.lmstudio\models 内に置きます。
 
私は「Qwen2.5-Coder-14B-Uncensored-GGUF」というフォルダを作って、その中に収納しています。
    
こんな感じです。

 

 

*「Qwen2.5-Coder-14B-Instruct-GGUF」は前回のブログで導入したものです。

x-hannibal.hatenablog.com

 

 

3.「LM Studio Bionic」を起動してモデルを指定する

 

 

 

後は自由に書き込んで実験してみてください。

 

 

<あとがき>

 

Uncensored版で前回と同じ質問をするとこんな回答が返ってきました。

回答に変化がありました。(下記)

 

 

とりあえず、前回とは違って回答してくれたので検閲は取れたのではと推測します。

検閲が取れたといっても基の賢さは同じです。

「~について教えて」といった質問では、平気で自信をもって嘘の回答をしてくるので使用には注意が必要です。(ChatGPTも出始めのころはそんな感じでしたね)

 

自分のパソコンでAIが利用できるとAPIを使って(BionicではなくLM Studioのインストールが必要ですが・・)お金をかけずに色々なことが出来るので面白です。

今、AIにボケと突っ込みの役割を与えて大喜利をやらせています。(笑)

 

公的機関をかたるスパムメールが届いて鬱陶しいです。

最近、公的機関をかたるスパムメール(フィッシング詐欺メール)がやたらと届くようになりました。

 

例えば、こんなのや・・・、

 

 

こんなのが・・・。

 

頻繁に送られてくるので、本当に鬱陶しいです。

 

そもそも私はまだ年金を受給していませんし、

毎年確定申告はしていますが、税金を払うばかりで還付金なんて1円もありません。

 

そのため「はいはい、詐欺ね」とすぐに気付けますが、文面は巧妙で、ご丁寧に偽サイトへ誘導するリンクがしっかり仕込まれています。

非常に悪質ですので、皆さんもどうか引っかからないようご注意ください。

 

 

 

【ローカルAI入門】自分のパソコンにAIを導入してみました(LM Studio Bionic編)

シルバーウィークの5連休、皆さんいかがお過ごしでしょうか。

これまでなら「休みが続く=旅行やキャンプ」という過ごし方をしていましたが、今年は少し身体がしんどいのと、息子が中学3年で受験生ということもあり、特に予定のない連休を迎えています。

 

「このままだと、だらだら過ごして終わってしまいそうだな…」と少し残念に思っていたのですが、ふと気になったことを試してみたら思いのほか簡単にできたので、備忘録も兼ねて記事にしてみたいと思います。

 

きっかけはYouTubeでした。

外部のクラウドサーバーを使わず、自分のパソコン上でAIモデルを直接動かす「ローカルAI」を楽しんでいる方を見かけたんです。
「AIのような最先端技術を自分のPCで動かせる」という点に急に惹かれ、自分も挑戦してみたくなりました。

 

<前提条件:PCスペックについて>

自分のパソコンでAIを動かすには、物理的にある程度のマシンスペックが要求されます。
調べてみると「そこそこ快適に最近のゲームができるパソコン」であれば、とりあえずは動かせるようです。

 

参考までに、私が使っているパソコンのスペックは以下の通りです。

CPU:Intel Core i9-13900K

GPU:NVIDIA GeForce RTX 4070 Ti(※AIではこのVRAM容量が結構重要らしいです)

RAM:32GB (16GB×2) DDR4-4000

前世代のちょっといいゲーミングPCクラスですね。今回はこの環境でやってみます。


<Ollama か? LM Studio か?>

ローカルAIを動かすには、AIモデルを管理・実行するための「ランチャーソフト」のようなツールが必要になります。

定番としてよく名前が挙がるのが「Ollama」と「LM Studio」の2つ。

正直どちらも詳しくなかったのですが、ざっくり言うとOllamaはコマンド入力(CUI)メイン、LM Studioは画面操作(GUI)メインといった印象でした。

 

初心者には視覚的にわかりやすい方が良いだろうと思い、「LM Studio」を選ぶことにしました。

しかし、ここでちょっとしたハプニングが・・・・。

 

公式サイトからWindows版のLM Studioをダウンロードしたつもりだったのですが、実際には「LM Studio Bionic」という別バージョンのようなツールを入れていたようです。オオボケです。

(後で息子と話していて、どうも内容が噛み合わないと思ったらこういうことでした )

とはいえ、何も疑問を持たずにそのままインストール。

 

起動後、そこからAIモデル「Qwen2.5 Coder 14B」をダウンロードして、とりあえず使える状態にまで持っていくことができました。

ちなみに「Qwen2.5 Coder 14B」を選んだ理由は、ネットで「RTX 4070 TiクラスのGPUで動かすのにちょうどいい」という書き込みを見かけたからです。

それと、プログラミングに特化したモデルとのことで自分の利用範囲としては丁度良く、初めてのローカルAI体験にはピッタリの選択でした。

 

<導入手順>

それでは、本題の導入手順を解説していきます。


A.  LM Studio Bionicのダウンロードとインストール

 

1.LM Studioのサイトから LM Studio Bionic をダウンロード

  *2026/9/19現在 Bionic-1.1.4-3-x64.exe

 

 

 

lmstudio.ai

 

2.ダウンロードしたBionic-1.1.4-3-x64.exeをクリックしてインストール

 

「同意する」をクリック

 

とりあえず、「次へ」

 

 

「完了」をクリックしてBionicを起動

 

この画面が出てきたらOK! (シンプルすぎる!!)

 

 

B. ローカルAIモデル(Qwen2.5 Coder 14B)の導入

 

1.「モデルを選択」→ 「ローカルモデルを入手」を選択

 

 

2.検索窓(虫眼鏡)に Qwen2.5 を入力

 

Qwen2.5-Coder-14B-Instruct-GGUF     Q4_K_M   を選択して「ダウンロード」をクリック(注:ネット回線の状況次第でかなり時間がかかる場合があります)

 

 

 ↑ここが緑のものを選ぶのを推奨します。

  各人のパソコン環境(GPU)によって変わりますので試行錯誤してください。

「このモデルはお使いのGPUのメモリに完全に収まる可能性があります。これにより、推論が大幅に高速化される可能性があります。

(ただし)モデルのアーキテクチャ、モデルファイルの整合性、またはお使いのコンピュータの利用可能なメモリ量など、読み込みを妨げる他の要因が存在する可能性もあります。」

 

 

C. ローカルAIの起動とちょっとした問題点

 

ダウンロードが終了して正常に導入できるとこんな感じになります。


後は自由にローカルAIに聞いてみてください。

ただし、ChatGPTとかGoogle Geminiとかと比べると能力が劣ります(アホです)のでご使用には十分気を付けてください。

 

 

注意:Qwen2.5は中華人民共和国製のAI(中国のアリババグループ:Alibaba Cloud が開発)なので、都合の悪い質問があると回答を拒否します。

こんな感じです。(下記)

 

 

<あとがき>

 

ローカルAIを導入しようと考えて使えるようになるまでに1日もかかりませんでした。

思ったより簡単だったというのが感想です。

これまで昔のOSやゲームを走らせることばかりを主にテーマにしてきた当ブログでしたが、やっと未来志向の話題も扱えるようになった(?)かもしれません。

でも正直何がなんやらの状態で、詳しいことは何も解りません。

 

 

 

 

Qwenの検閲・拒否なし(Uncensored)ヴァージョンもすでに導入済なので、導入方法を後日紹介したいと思います。(やる気があればですが・・・)

 

 

 

 

前立腺癌手術、その後5・・・ 何もかもイヤになりました。

 

前回の書き込みから、かなり時間が経ちました。

x-hannibal.hatenablog.com



ヘルニアの手術は終わり、お腹に違和感があるものの、こちらの方は一段落しました。

 

しかし、癌の方がねぇ・・・・・・ 。

 

癌マーカーの値が放射線治療後は下がっていたのに、またちょっとずつ増えてきて、思ったようには改善していません。一応様子見ということになりました。

摘出した周辺のどこかに癌が残っている様で、一生付き合って行くことになりました。現代の医学ではその癌を見つけて取り除くのは無理みたいです。

今のところ極小で、悪さをしている訳ではないので余命宣告をされるほど深刻ではないです。それでも気分的には落ち込んでるので、まったくやる気が出ません。

 

おまけに、会社では自分が悪いのですが・・・トラブルが発生してるは、家では息子の事で色々あるわで、ストレスが溜まって良く寝れません。

自分の身体がこんな状態なので余計に、何もかもがイヤになってきています。

楽に死ねるのなら死んでもいいかな、と思えるくらい弱っています。

とりあえず、平均寿命(平均余命?)まで頑張りましょう!と言われましたが・・・。

なかなかリアルです。

 

 

 

前立腺癌手術、その後4・・・今度はヘルニアの手術で入院します


前回(下記)の書き込みから早いもので一カ月経ちました。

x-hannibal.hatenablog.com

 

今度は鼠径ヘルニアの手術で明日から入院します。
前立腺がんの手術後、約1割の患者が「鼠径(そけい)ヘルニア(脱腸)」を発症するといわれているそうです。(その1割を引いてまたしても運が悪いです)


普通にお腹を切っての手術なので、凄く憂鬱です。
これまでどちらかというと悪い方悪い方に進行していたので、良い方に方向展開して欲しいところです。

 

DIの『F/A-18E SUPER HORNET 日本語版』を入手して、NOCD化にも成功しました!

前々から「欲しい、欲しい」と思い続けていた、コンバット系フライトシムソフト『F/A-18E SUPER HORNET』を、ついに手に入れました!

*ついでに『F-22 Total Air War』というソフトも入手しています!


DIGITAL INTEGRATION社が開発した本作は、英語版が1999年、日本語版が翌2000年4月1日にイマジニアから発売されました。

当時は、ほぼ同時期にリリースされた『Jane's F/A-18』の方が評判が良く、一度は「買わなくていいや」とスルーしたものの、日本語版の存在を知ってからは「いつか必ず・・」と思っていました。

そして今回、発売から26年目にしてようやく念願が叶いました。

 

届いた商品はほぼ新品同様。230ページ超の分厚いマニュアル、13ページの「PILOT'S NOTE」、そしてキーマップまで綺麗に付属していました。

日本語で書かれたマニュアルは本当にありがたく、これだけでも読み応え抜群です。

やはりパッケージ版の醍醐味は、こういう物理的な特典にありますよね。

さっそく、手元の環境(Windows 98 on 86Box)にインストールしてみました。

当時から「DIGITAL INTEGRATION社のソフトは癖が強い」という印象がありましたが、本作も例に漏れず、安定起動させるまでにかなり手こずりました。

結論から言うと、原因はCPUのクロック設定が高すぎたことでした。

色々と試行錯誤した結果、以下の設定でようやく落ち着きました。

  • CPU: Intel Pentium II (Deschutes) 350MHz または VIA Cyrix III (Samuel) 400MHz

  • ビデオカード: Matrox Millennium II + 3Dfx Voodoo2

当時の構成としては、まさに「鉄板設定」ではないでしょうか。

 

【またまた超ニッチ】日本語版のNo-CD化に挑戦

ここからは、毎度おなじみの超ニッチな話題です。

海外の『F/A-18E SUPER HORNET』関連サイトを巡回していたところ、英語版のNo-CD化(パッチ)に関する情報を発見しました。

これを参考に、日本語版でもNo-CD化ができないか試してみたところ・・・、成功しました。

 

【手順】

1.バイナリエディタで「F18.EXE」ファイルを以下の通りに書き換えます。

アドレス 変更前 変更後
     
0028E2 64 2e
     
168741 43 2e
     
16880A 74 eb
     
1D54A6 3a 5c
1D54A7 5c 41
1D54A8 41 6e
1D54A9 6e 69
1D54AA 69 6d
1D54AB 6d 61
1D54AC 61 74
1D54AD 74 69
1D54AE 69 6f
1D54AF 6f 6e
1D54B0 6e 73
1D54B1 73 5c
1D54B2 5c 25
1D54B3 25 73
1D54B4 73 00
     
1FD00A 3a 5c
1FD00B 5c 25
1FD00C 25 73
1FD00D 73 00
     
1FD012 3a 5c
1FD013 5c 66
1FD014 66 31
1FD015 31 38
1FD016 38 2e
1FD017 2e 74
1FD018 74 6d
1FD019 6d 70
1FD01A 70 00

 

2.「F18.rop」および「f18.tmp」という名前の空ファイルを、F18.EXEと同じフォルダに配置します

     

 * ↑ こんな感じで


これで煩わしいCDの入れ替えから解放され、快適にプレイできるようになります。

※試される方は完全自己責任でお願いします。

(26年前のソフトなので、今さら需要があるかは謎ですが・・・)

 

2026年6月28日現在、英語版ですがSteamからも入手できます。

*しかも20%OFF

こそっとココに置いておきます

1.16 MB file on MEGA