u/Ok-Conference-9984

とかで生成してあそんでる。

【ジャンル】 食べ物(食べログ)

【生成日時】 2026-05-21 10:12:09

【使用モデル】 qwen2.5:3b

【現実トレンド】 八村倫太郎 (Context: )

【要求トーン】 熱狂的な食通による食べログの長文レビュー風(少しポエティックでこだわりが強すぎる文体)

【ニュース見出し】 【特報】「八村倫太郎(検索ボリューム:不明)」の渦中にある築地市場跡地の地下3階に存在すると噂される厨房で、完全紹介制・住所非公開の謎の深夜ラーメン店『麺処・裏世界』が提供した幻の裏メニューが、一口食べただけで『過去の初恋の記憶がHD画質で脳内に蘇る』として口コミで大炎上し。食べログのコメント欄は『スープを飲むと体が浮く。再訪は宇宙が滅びる前に。』といった奇妙なレビューで埋め尽くされている。

------------------------------------------------------------

【本文】

特報

八村倫太郎

検索ボリューム不明

築地市場跡地

地下3階

謎の深夜ラーメン店

麺処・裏世界

提供される幻の裏メニュー

過去の初恋の記憶

HD画質で脳内蘇る

口コミ大炎上

食べログコメント欄埋め尽くす

スープ飲むと体浮く

再訪は宇宙滅びる前

再訪は宇宙滅びる前

reddit.com
u/Ok-Conference-9984 — 1 day ago
▲ 2 r/AIjp

AI Radio show

架空の人工知能がお喋りするラジオ作って見ました。
コマーシャルトークショーとかゲストも入ります。

youtube.com
u/Ok-Conference-9984 — 1 day ago
▲ 5 r/ja

いや人工知能のガイドラインきつすぎで萎える。

技術が進歩して誰でもアクセスできるのはいいけど
その結果起きることには人工知能自体(提供者)は責任を持てないんでこれからでるデータは危険回避に流れるのは仕方ないかなと。特に薬(医療)の情報が出にくくなると思う。

reddit.com
u/Ok-Conference-9984 — 2 days ago
▲ 5 r/newsg

「事務所から発信や動画の作成をしたことは一切ない」高市総理 「中傷動画作成」重ねて否定(テレビ朝日系(ANN))

籠池さん懐かし

news.yahoo.co.jp
u/Ok-Conference-9984 — 3 days ago
▲ 0 r/ja+1 crossposts

【AIが勝手に冒険し、あなたが運命を書き換える新感覚TRPG】ちっちゃなguffはお茶目でおバカで愛らしくメモリに優しい。MBA_8メガでもサクサクです。音声はマックのsayを使ってます。

import gradio as gr

from llama_cpp import Llama

import psutil

import pandas as pd

import plotly.graph_objects as go

from datetime import datetime

import subprocess

import re

import os

import time

import threading

import queue

import random

import signal

import sys

# ==========================================

# 🎨 0. レトロRPG風テーマ & CSS

# ==========================================

rpg_theme = gr.themes.Monochrome(

font=[gr.themes.GoogleFont("DotGothic16"), "ui-monospace", "monospace"],

).set(

body_background_fill="#0a0a0a",

body_text_color="#ffffff",

block_background_fill="#000000",

block_border_width="3px",

block_border_color="#ffffff",

block_radius="4px",

button_primary_background_fill="#000080",

button_primary_text_color="#ffffff",

button_secondary_background_fill="#333333",

panel_background_fill="#000000",

)

custom_css = """

u/import url('https://fonts.googleapis.com/css2?family=DotGothic16&display=swap');

* { font-family: 'DotGothic16', monospace !important; }

.message-wrap .message {

border-radius: 0px !important;

border: 2px solid #ffffff !important;

background-color: #000000 !important;

color: #ffffff !important;

box-shadow: 2px 2px 0px #555555 !important;

}

button.primary, button.secondary {

border: 2px solid #ffffff !important;

border-radius: 0px !important;

}

button.primary { box-shadow: 2px 2px 0px #888888 !important; }

button.primary:active { box-shadow: 0px 0px 0px #888888 !important; transform: translate(2px, 2px); }

button.stop {

background-color: #8b0000 !important;

color: #ffffff !important;

border: 2px solid #ffffff !important;

box-shadow: 2px 2px 0px #888888 !important;

}

"""

# ==========================================

# ⚙️ 1. 初期設定 & ラッフル(魂の抽選)ロード

# ==========================================

MODELS_DIR = "/Users/sukipop/Downloads/small_models"

GM_MODEL_FILE = "Llama-3.2-1B-Instruct-Q8_0.gguf" # GMは1Bで固定

llm_lock = threading.Lock()

gm_brain = None

app_running = True

game_state = {

"auto_mode": False,

"interval": 15,

"level": 1,

"exp": 0,

"location": "呪われし迷宮の入り口",

}

adventure_log = []

action_queue = queue.Queue()

speech_queue = queue.Queue()

# パーティメンバーのステータスと、宿るモデル(ラッフル結果)を管理

party_members = {

"gald": {

"name": "戦士ガルド",

"brain": None,

"model_file": "",

"voice": "Alex",

"pitch": 30,

"sys_prompt": "You are Gald, a reckless and hot-blooded warrior. You love fighting and treasure. Reply in exactly 1 short sentence."

},

"lumina": {

"name": "魔法使いルミナ",

"brain": None,

"model_file": "",

"voice": "Samantha",

"pitch": 60,

"sys_prompt": "You are Lumina, a calm, sarcastic, and highly intelligent elven mage. You often scold Gald. Reply in exactly 1 short sentence."

}

}

# 🛑 [安全な終了処理]

def cleanup_resources(signum=None, frame=None):

global app_running, gm_brain, party_members

print("\n🛑 シャットダウン中... GPUメモリを解放しています。")

app_running = False

with llm_lock:

if gm_brain: del gm_brain

for char in party_members.values():

if char["brain"]: del char["brain"]

import gc; gc.collect()

try:

subprocess.run(["killall", "say"], stderr=subprocess.DEVNULL)

except: pass

print("✅ 終了しました。お疲れ様でした!")

os._exit(0)

signal.signal(signal.SIGINT, cleanup_resources)

signal.signal(signal.SIGTERM, cleanup_resources)

def load_models_with_raffle():

global gm_brain

try:

# 1. GM脳のロード

gm_path = os.path.join(MODELS_DIR, GM_MODEL_FILE)

if os.path.exists(gm_path):

print(f"🔄 GM脳をロード中: {GM_MODEL_FILE}...")

gm_brain = Llama(model_path=gm_path, n_ctx=2048, n_gpu_layers=-1, verbose=False)

# 2. フォルダ内のGGUFを取得(GM以外)してラッフル準備

all_files = [f for f in os.listdir(MODELS_DIR) if f.endswith('.gguf') and f != GM_MODEL_FILE]

if not all_files:

print("❌ ラッフル用の小さなモデルが見つかりません。")

return

# 3. キャラクターごとにラッフル(抽選)してロード

for char_key, char_data in party_members.items():

chosen_model = random.choice(all_files) # 🎲 ここでラッフル!

char_data["model_file"] = chosen_model

model_path = os.path.join(MODELS_DIR, chosen_model)

print(f"🎲 {char_data['name']} の魂を抽選中... 当選: [{chosen_model}]")

# キャラ専用の脳をインスタンス化

char_data["brain"] = Llama(model_path=model_path, n_ctx=2048, n_gpu_layers=-1, verbose=False)

print("✅ パーティ全員の『魂の宿り』が完了しました!")

except Exception as e:

print(f"❌ ロードエラー: {e}")

load_models_with_raffle()

# ==========================================

# 📊 2. AI Monitor Backend (システム監視)

# ==========================================

monitor_history = {"time": [], "cpu": [], "mem": [], "gpu": [], "temp": []}

def get_gpu_usage_robust():

try:

cmd = "ioreg -r -c IOAccelerator"

result = subprocess.check_output(cmd.split()).decode()

for pattern in [r'"Device Utilization %"=(\d+)', r'"utilization"=(\d+)']:

match = re.search(pattern, result)

if match: return int(match.group(1))

except: pass

return 0

def get_live_metrics():

cpu = psutil.cpu_percent(interval=0.1)

mem = psutil.virtual_memory().percent

gpu = get_gpu_usage_robust()

temp = round(35.0 + (cpu * 0.3) + (gpu * 0.2), 1)

fan = int((temp - 40) * 100) if temp > 40 else 0

if fan > 6000: fan = 6000

now = datetime.now().strftime("%H:%M:%S")

monitor_history["time"].append(now)

monitor_history["cpu"].append(cpu)

monitor_history["mem"].append(mem)

monitor_history["gpu"].append(gpu)

monitor_history["temp"].append(temp)

if len(monitor_history["time"]) > 30:

for k in monitor_history.keys(): monitor_history[k].pop(0)

fig = go.Figure()

fig.add_trace(go.Scatter(x=monitor_history["time"], y=monitor_history["cpu"], name='CPU', line=dict(color='cyan')))

fig.add_trace(go.Scatter(x=monitor_history["time"], y=monitor_history["mem"], name='Mem', line=dict(color='magenta')))

fig.add_trace(go.Scatter(x=monitor_history["time"], y=monitor_history["gpu"], name='GPU', line=dict(color='yellow', width=2)))

fig.update_layout(margin=dict(l=5, r=5, t=10, b=5), height=200, template="plotly_dark", plot_bgcolor='rgba(0,0,0,0)', paper_bgcolor='rgba(0,0,0,0)', yaxis=dict(range=[0, 100]), legend=dict(orientation="h", yanchor="bottom", y=1.02, xanchor="right", x=1))

return cpu, mem, gpu, temp, fan, fig

def get_process_list():

procs = []

for p in psutil.process_iter(['pid', 'name', 'cpu_percent', 'memory_percent']):

try:

if p.info['cpu_percent'] > 0.5 or p.info['memory_percent'] > 1.0:

procs.append({"PID": p.info['pid'], "Name": p.info['name'][:12], "CPU": p.info['cpu_percent'], "Mem": round(p.info['memory_percent'], 1)})

except: pass

df = pd.DataFrame(procs)

return df.sort_values("CPU", ascending=False).head(8) if not df.empty else pd.DataFrame()

# ==========================================

# 🗣️ 3. 音声読み上げスレッド

# ==========================================

def speech_worker():

while app_running:

try:

text, voice, pitch = speech_queue.get(timeout=1)

clean_text = re.sub(r'[\*\#\_\~\[\]\(\)]', '', text).strip()

v_tag = f"[[pbas {pitch}]]" if pitch else ""

subprocess.run(["say", "-v", voice, f"{v_tag} {clean_text}"])

speech_queue.task_done()

except queue.Empty:

continue

threading.Thread(target=speech_worker, daemon=True).start()

# ==========================================

# ⚔️ 4. RPG イベント進行ロジック

# ==========================================

def process_event(user_action=None):

gald = party_members["gald"]

lumina = party_members["lumina"]

if not gm_brain or not gald["brain"] or not lumina["brain"]:

return

try:

# 🧙‍♂️ GMによる情景描写

gm_sys = f"You are an RPG Game Master. The party (Leader, Gald the warrior, Lumina the mage) is in {game_state['location']}."

if user_action:

display_user = f"▶ 勇者(あなた): {user_action}"

gm_prompt = f"The party leader (user) does this: '{user_action}'. Describe the outcome in 1-2 short sentences."

else:

display_user = "▶ (フィールド探索中...)"

gm_prompt = f"Generate a random short event (a monster attack, finding treasure, etc.) in {game_state['location']}. 1-2 short sentences."

with llm_lock:

gm_res = gm_brain.create_chat_completion(messages=[{"role":"system","content":gm_sys},{"role":"user","content":gm_prompt}], max_tokens=100)

gm_text = gm_res["choices"][0]["message"]["content"].strip()

speech_queue.put((gm_text, "Daniel", 40))

# ⚔️ キャラA (戦士ガルド) のリアクション

gald_prompt = f"The GM narrates: '{gm_text}'. React to this as Gald."

with llm_lock:

gald_res = gald["brain"].create_chat_completion(messages=[{"role":"system","content":gald["sys_prompt"]},{"role":"user","content":gald_prompt}], max_tokens=50, temperature=0.8)

gald_text = gald_res["choices"][0]["message"]["content"].strip()

speech_queue.put((gald_text, gald["voice"], gald["pitch"]))

# 🔮 キャラB (魔法使いルミナ) のリアクション

lumina_prompt = f"The GM narrates: '{gm_text}'. Gald just said: '{gald_text}'. React to both as Lumina."

with llm_lock:

lumina_res = lumina["brain"].create_chat_completion(messages=[{"role":"system","content":lumina["sys_prompt"]},{"role":"user","content":lumina_prompt}], max_tokens=50, temperature=0.8)

lumina_text = lumina_res["choices"][0]["message"]["content"].strip()

speech_queue.put((lumina_text, lumina["voice"], lumina["pitch"]))

# 🌟 成長判定

exp_gain = random.randint(15, 35)

game_state["exp"] += exp_gain

level_up_msg = ""

if game_state["exp"] >= game_state["level"] * 50:

game_state["level"] += 1

game_state["exp"] = 0

level_up_msg = f"\n\n♪ テレレレッテッテッテー!\n🌟 レベルアップ! パーティは レベル {game_state['level']} になった!"

speech_queue.put(("Level up!", "Daniel", 50))

# ログにモデル名(魂の名前)を併記する

full_bot_text = (

f"🧙‍♂️ GM [{GM_MODEL_FILE}]:\n{gm_text}\n\n"

f"⚔️ ガルド [{gald['model_file']}]:\n{gald_text}\n\n"

f"🔮 ルミナ [{lumina['model_file']}]:\n{lumina_text}"

f"{level_up_msg}"

)

# UI用に辞書形式で追加

adventure_log.append({"role": "user", "content": display_user})

adventure_log.append({"role": "assistant", "content": full_bot_text})

if len(adventure_log) > 40:

adventure_log.pop(0)

adventure_log.pop(0)

timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

with open("rpg_history.txt", "a", encoding="utf-8") as f:

f.write(f"[{timestamp}] User: {display_user}\n{full_bot_text}\n{'-'*40}\n")

except Exception as e:

print(f"Generation Error: {e}")

def game_loop():

last_event_time = time.time()

while app_running:

if not action_queue.empty():

user_action = action_queue.get()

process_event(user_action)

last_event_time = time.time()

elif game_state["auto_mode"] and (time.time() - last_event_time > game_state["interval"]):

process_event(None)

last_event_time = time.time()

else:

time.sleep(0.5)

threading.Thread(target=game_loop, daemon=True).start()

# ==========================================

# 🖥️ 5. UI Layout

# ==========================================

with gr.Blocks(title="AI Party RPG Masterpiece", theme=rpg_theme, css=custom_css) as demo:

gr.Markdown("# ⚔️ 幻境のクロニクル (ソウル・ラッフル搭載)")

with gr.Row():

with gr.Column(scale=1):

gr.Markdown("### 🩺 システムの状況")

live_graph = gr.Plot()

proc_table = gr.Dataframe(label="重たい魔法(プロセス)")

gr.Markdown("### ⚙️ さくせん")

auto_toggle = gr.Checkbox(label="🔄 オート探索 (Auto Mode)", value=False)

interval_slider = gr.Slider(5, 60, value=15, label="エンカウント間隔 (秒)")

gr.Markdown("### 📊 パーティのつよさ")

status_display = gr.Label(value={"Lv (レベル)": 1, "EXP (けいけんち)": 0})

stop_btn = gr.Button("🛑 ゲームを中断する", variant="stop")

with gr.Column(scale=3):

chatbot = gr.Chatbot(label="メッセージ", height=600)

with gr.Row():

action_input = gr.Textbox(placeholder="コマンドを入力 (例: 宝箱を開ける)...", label="▶ コマンド", scale=4)

submit_btn = gr.Button("🗣️ けってい", variant="primary", scale=1)

def trigger_action(user_text):

if user_text.strip(): action_queue.put(user_text)

return ""

action_input.submit(trigger_action, inputs=[action_input], outputs=[action_input])

submit_btn.click(trigger_action, inputs=[action_input], outputs=[action_input])

auto_toggle.change(lambda x: game_state.update({"auto_mode": x}), inputs=[auto_toggle])

interval_slider.change(lambda x: game_state.update({"interval": x}), inputs=[interval_slider])

def refresh_system():

cpu, mem, gpu, temp, fan, fig = get_live_metrics()

procs = get_process_list()

return fig, procs

gr.Timer(2).tick(refresh_system, outputs=[live_graph, proc_table])

def update_game_ui():

return list(adventure_log), {"Lv (レベル)": game_state["level"], "EXP (けいけんち)": game_state["exp"]}

gr.Timer(1).tick(update_game_ui, outputs=[chatbot, status_display])

def emergency_stop():

try: subprocess.run(["killall", "say"], stderr=subprocess.DEVNULL)

except: pass

action_queue.queue.clear()

speech_queue.queue.clear()

stop_btn.click(fn=emergency_stop)

if __name__ == "__main__":

demo.launch(server_name="0.0.0.0")

https://preview.redd.it/20120dl8791h1.png?width=2880&format=png&auto=webp&s=3ddd5997de41a83a4e1f06fb56efeadb11af0572

https://preview.redd.it/ihsjx0sa791h1.png?width=2880&format=png&auto=webp&s=f08d0ced6ac3780bd26b5f63deed18149f372320

reddit.com
u/Ok-Conference-9984 — 6 days ago
▲ 8 r/newsg

国旗損壊罪、動画投稿も処罰 拘禁2年以下、自民が法案骨子案―慎重論続出、了承見送り:時事ドットコム

ふうむ。どうしても矯正させたいのね。
外形的・客観的に判断できるような「人を著しく不快または嫌悪の情を催させる方法」で損壊する行為があれば処罰する
とか、わいちん罪か。そもそもそれは誰が判断するのか。
判事も困る法律。わいちん罪

jiji.com
u/Ok-Conference-9984 — 7 days ago
▲ 3 r/newsg

30代高校教諭、部活の女子生徒2人と性行為 2年4カ月「多くて週1回」 神奈川県教育委員会が懲戒免職:東京新聞デジタル

tokyo-np.co.jp
u/Ok-Conference-9984 — 7 days ago
▲ 2 r/AIjp

自動応答シミュ。おつきあいめんどくさい人向けに。

import gradio as gr

from llama_cpp import Llama

import time

# --- モデル設定 ---

MODEL_PATH = "/Users/sukipop/Downloads/models/Meta-Llama-3-8B-Instruct-Q3_K_L.gguf"

# Apple Silicon (Metal) 最適化。安定性を考慮しスレッド数は4に設定。

llm = Llama(

model_path=MODEL_PATH,

n_ctx=1024,

n_gpu_layers=-1,

n_threads=4,

verbose=False

)

def chat_logic(messages, system_prompt):

"""Llama-3 フォーマット構築。日本語での出力を強力に強制。"""

try:

# 強力な日本語出力指示をシステムプロンプトの先頭に付与

full_prompt = f"<|begin_of_text|><|start_header_id|>system<|end_header_id|>\n\n"

full_prompt += f"あなたは日本語で話すAIです。英語は一切使わず、必ず日本語のみで回答してください。\n{system_prompt}<|eot_id|>"

for msg in messages:

role = msg["role"]

content = msg["content"]

full_prompt += f"<|start_header_id|>{role}<|end_header_id|>\n\n{content}<|eot_id|>"

full_prompt += f"<|start_header_id|>assistant<|end_header_id|>\n\n"

output = llm.create_completion(

prompt=full_prompt,

max_tokens=256,

stop=["<|eot_id|>", "<|start_header_id|>"],

temperature=0.8 # キャラクター性を出すため少し高めに設定

)

return output['choices'][0]['text'].strip()

except Exception as e:

return f"エラーが発生しました: {str(e)}"

def run_auto_demo(turns):

"""

AI同士の対決シミュレーション。

Gradioのバリデーションを回避するため、辞書形式のリスト(history)を直接操作します。

"""

history = []

# --- 粘着質な馴れ合い側(意識低い系・過去のよしみ・依存) ---

troublemaker_sp = """

あなたは『15年ぶりに現れた自称・親友』です。

【性格】過剰な馴れ馴れしさ、根拠のない連帯感、強い独占欲。

【手法】「俺たち仲間だろ?」「昔のよしみじゃん」というフレーズを多用し、相手のプライベートに土足で踏み込んでください。

【目的】具体性のない人生相談や、昔の恥ずかしい思い出を一方的に語り、相手の時間を奪うこと。

"""

# --- 意識高い系側(鉄壁の社交辞令・優しさという名の拒絶) ---

secretary_sp = """

あなたは『外面だけが完璧な、意識高い系エリート』です。

【性格】事なかれ主義、笑顔で人を突き放す才能、高い自己肯定感。

【手法】相手を一切覚えていませんが、角を立てずに「丁寧な無視」を貫いてください。「リスペクト」「価値観のアップデート」「シナジー」といったカタカナ語を混ぜつつ、寄り添っているふりをして、具体的に会う約束などは絶対にしないでください。

【目的】相手を怒らせず、かつ二度と連絡してこないように「優しさの虚無」で心を折ること。

"""

current_attack = "おーい!久しぶり!覚えてる?昔よく遊んだあの時の親友だよ!ちょっと相談にのって欲しいんだけど…いいよね?"

for i in range(int(turns)):

# 1. 意識高い系(優しい人)の回答を生成

internal_msgs = list(history)

internal_msgs.append({"role": "user", "content": current_attack})

reply = chat_logic(internal_msgs, secretary_sp)

# 履歴を更新(Gradio 5.x/4.x両対応のための辞書append)

history.append({"role": "user", "content": current_attack})

history.append({"role": "assistant", "content": reply})

yield history

time.sleep(1.2) # 演出用のウェイト

# 2. 粘着者側の追撃文を生成

current_attack = chat_logic(history, troublemaker_sp)

if i == int(turns) - 1:

break

# --- Gradio UI 構成 ---

with gr.Blocks(title="AI Defense Simulator") as demo:

gr.Markdown("# 🛡️ AI自動防衛シミュレーター:地獄の社交辞令編")

gr.Markdown("「粘着質な馴れ合い」を「完璧な優しさ」がいかに無力化するかを観察します。")

with gr.Tab("自動デモ(AI vs AI)"):

turn_count = gr.Slider(2, 10, 5, step=1, label="会話の往復回数")

start_btn = gr.Button("シミュレーション開始", variant="primary")

# type引数をあえて入れず、自動判別に任せる設定(エラー回避策)

chatbot = gr.Chatbot(label="対話ログ")

start_btn.click(fn=run_auto_demo, inputs=turn_count, outputs=chatbot)

with gr.Tab("マニュアルテスト"):

gr.Markdown("あなたが粘着者となり、AIの「優しい拒絶」を体験してください。")

in_txt = gr.Textbox(label="馴れ馴れしいメッセージを入力")

out_txt = gr.Textbox(label="AIの「優しい」回答", lines=5)

m_btn = gr.Button("生成")

m_btn.click(

fn=lambda x: chat_logic([{"role": "user", "content": x}], "相手を一切覚えていないが、最高に丁寧で意識が高い日本人として回答せよ。物理的な距離は死守すること。"),

inputs=in_txt, outputs=out_txt

)

if __name__ == "__main__":

demo.launch()

reddit.com
u/Ok-Conference-9984 — 8 days ago

アメリカントップ40シミュやってみた。勝手にセリフ喋り出す。MBA8Gで軽く動くよ。メタのguffはすごい。

u/Ok-Conference-9984 — 9 days ago
▲ 9 r/newsg

「お金ちょうだい」散歩中の84歳女性を羽交い締めに 現金8万円など入った財布奪ったか 15~17歳の少年少女4人逮捕 「相手が嫌がったので相談して奪うことにしました」容疑認める 大阪・守口市(関西テレビ)

news.yahoo.co.jp
u/Ok-Conference-9984 — 9 days ago