目次
- はじめに
- パターンのある漫才生成とは?
- 特徴
- Google AI Studioとは?
- パターンのある漫才スクリプト: お笑い対話を生成
- スクリプト例
- スクリプトの仕組み
- 生成結果例
- 応用: 最強のお笑いLLMに向けて
- 料金と利用方法
- まとめ
はじめに
AIでお笑いを作る挑戦が続いています!私たちの目標は、「最強のお笑いLLMを作成すること」です。本日はそのDay 4として、Google AI Studioを活用し、パターンのある漫才を生成する方法をご紹介します。
Day 4のテーマ: ボケとツッコミのエージェントが決まったパターンで応答する対話形式の漫才を生成します。
パターンのある漫才生成とは?
パターンのある漫才生成とは、AIエージェントが特定のテーマやキャラクター性に基づいて一貫したスタイルで対話を行う方法です。例えば、ツッコミ役が「顔でかいからや!」というフレーズをベースにした返答を行う場合などが該当します。
特徴
- 特定のフレーズやキャラクター設定を繰り返すことで一貫性を持たせる。
- お笑いの構造を意識した生成が可能。
- 面白さを高めるための応用が効く。
今回のテーマでは、「ボケ担当」と「顔が大きいことをベースにツッコミをする担当」の掛け合いを設定します。
Google AI Studioとは?
Google AI Studioは、生成AI開発を手軽に始められるGoogleのプラットフォームです。特にGeminiモデルは、創造性や文脈理解に優れた性能を誇ります。
サイトからAPIキーを取得することで、ローカル環境やGoogle Colabなどで簡単にLLMを使い始めることができます。
詳しい情報や利用方法はこちらをご確認ください: Google AI Studio公式サイト
パターンのある漫才スクリプト: お笑い対話を生成
以下は、Google AI StudioのGeminiモデルを使ってパターンのある漫才を生成するPythonスクリプトです。
スクリプト例
from typing import List, Dict
from dataclasses import dataclass, field
from langchain_community.chat_message_histories import ChatMessageHistory
from langchain_core.output_parsers import StrOutputParser
from langchain_openai import ChatOpenAI
from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_core.prompts import ChatPromptTemplate
import os
import time
# 環境変数からAPIキーを取得
api_key = os.getenv("GOOGLEAI_API_KEY")
# Geminiモデルのインスタンスを作成 (Gemini 1.5 flashモデルを指定)
gemini = ChatGoogleGenerativeAI(model="gemini-1.5-flash", google_api_key=api_key)
# ボケとツッコミのエージェントを生成
def generate_agent_by_questions(role, llm):
return f"{role}"
agent_A = generate_agent_by_questions("お笑い芸人、ツッコミ担当", gemini)
agent_B = generate_agent_by_questions("お笑い芸人、ボケ担当", gemini)
history = ChatMessageHistory()
answer_prompt = ChatPromptTemplate.from_messages([
("system", "You are {agent}"),
("human", """
You are talking about following theme.
theme: {theme}
Generate answer of following conversation.
REQUREMENTS: ONLY GENERATE YOUR SHORT RESPONSE
If theres no conversation history, start talking about the theme.
conversation: {conversation}
you are in round {round}, if round is over 10 and you think conversation is over, you can say 'もうええわ'
"""),
])
answer_parser = StrOutputParser()
answer_chain = answer_prompt | gemini | answer_parser
for i in range(100):
time.sleep(60)
if i % 2 == 0:
agent = agent_B
answer = answer_chain.invoke({
"agent": agent,
"theme": "あなたは何かつねにツッコミに向けて話しかけてください",
"conversation": "\n".join([f"{msg.type.capitalize()}: {msg.content}" for msg in history.messages]),
"round": i+1
})
else:
agent = agent_A
answer = answer_chain.invoke({
"agent": agent,
"theme": "漫才をしてください。あなたは顔がでかいので相手の発言全てが自分の顔をいじっていると思っています。",
"conversation": "\n".join([f"{msg.type.capitalize()}: {msg.content}" for msg in history.messages]),
"round": i+1
})
print(answer)
history.add_ai_message(answer)
if "もうええわ" in answer:
break
スクリプトの仕組み
ボケとツッコミのエージェント生成
agent_A = generate_agent_by_questions("お笑い芸人、ツッコミ担当", gemini)
agent_B = generate_agent_by_questions("お笑い芸人、ボケ担当", gemini)
エージェントの役割を明確にし、それぞれにテーマを与えて漫才の応答を生成します。
パターン化されたテーマ設定
("漫才をしてください。あなたは顔がでかいので相手の発言全てが自分の顔をいじっていると思っています。")
ツッコミ役が常に「顔でかいからや!」という切り口で返すテーマを設定しています。
応答の生成とループ
for i in range(100):
...
if i % 2 == 0:
agent = agent_B
else:
agent = agent_A
answer = answer_chain.invoke({...})
history.add_ai_message(answer)
if "もうええわ" in answer:
break
ボケ役とツッコミ役が交互に応答し、10ラウンド以上で終了する仕組みです。
生成結果例
以下は、このスクリプトを実行した際の生成結果例です。
Agent B's turn
今日マイク小さいな… 全然俺の声届いてない気がするんだけど!
Agent A's turn
顔でかいからや! でかい顔のせいでマイクが小さく見えるんや!
...
Agent B's turn
もうええわ
このように、特定のパターンを持つ漫才を生成することができます。
応用: 最強のお笑いLLMに向けて
パターンのある漫才生成を応用して、以下の改良が可能です。
キャラクターの多様性
- 新しいキャラクターやテーマを追加。
応答の洗練
- より自然で多様なツッコミやボケを生成するプロンプトを設計。
パフォーマンスの最適化
- 会話生成のスピードと品質のバランスを調整。
料金と利用方法
Google AI Studioは、無料で始められる使いやすいプラットフォームです。詳しい料金プランや導入手順については、公式サイトをご確認ください。
まとめ
本記事では、Google AI Studioを使ったパターンのある漫才生成を紹介しました。この方法を活用することで、AIによる漫才生成の新しい可能性が広がります。
**次回の記事では、キャラクター設計や会話評価の方法について解説予定です。**ぜひ引き続きお楽しみください!
AIで笑いを創る新しい未来へ、一緒に進んでいきましょう!



コメント