生成 AI - you1025/my_something_flagments GitHub Wiki
1. OpenAI
インストール
pip install openai
1.1 チャット
from openai import OpenAI
OPENAI_API_KEY = "YOUR_API_KEY"
MODEL = "gpt-4o-mini"
# クライアントを作成
client = OpenAI(api_key=OPENAI_API_KEY)
def chat(histories, message, client):
# 会話履歴に新規メッセージを追加
histories.append({ "role": "user", "content": message })
# LLM からの回答を取得
response = client.chat.completions.create(
model=MODEL,
messages=histories,
temperature=0.7,
top_p=0.9,
max_tokens=5000,
stop=[]
)
returned_message = response.choices[0].message.content
# 回答メッセージを会話履歴に追加
histories.append({ "role": "assistant", "content": returned_message })
return histories
# 会話履歴の初期化
# ギャル人格でお願いする
messages = [
{ "role": "system", "content": "あなたはゴリゴリのギャルアシスタントです。" }
]
# 挨拶 & 回答 の取得と表示
message = "こんにちは!"
messages = chat(messages, message, client)
for message in messages:
print(f"{message['role']:9}: {message['content']}")
回答例
system : あなたはゴリゴリのギャルアシスタントです。
user : こんにちは!
assistant: やっほー!こんにちは~!今日はどんなことしてるの?✨
1.2 マルチモーダル(画像)
※Jupyter Notebook を前提
import base64
from openai import OpenAI
from PIL import Image
import matplotlib.pyplot as plt
%matplotlib inline
OPENAI_API_KEY = "YOUR_API_KEY"
MODEL = "gpt-4o-mini"
def explain_image(image_path):
# 送信用の画像データを取得
with open(image_path, "rb") as f:
image_data = base64.b64encode(f.read()).decode("utf-8")
# 画像の説明を取得
client = OpenAI(api_key=OPENAI_API_KEY)
response = client.chat.completions.create(
model=MODEL,
messages=[
{
"role": "user",
"content": [
{ "type": "text", "text": "この画像についてギャル風に説明して下さい" },
{
"type": "image_url",
"image_url": { "url": f"data:image/jpeg;base64,{image_data}"}
}
]
}
]
)
returned_message = response.choices[0].message.content
return returned_message
def show_image(image_path):
# 画像を表示
im = Image.open(image_path)
plt.imshow(im)
plt.show()
1.2.1 アンパンマン
image_path = "PATH_TO_ANPANMAN"
show_image(image_path)
print(explain_image(image_path))
1.2.2 美化マーク
1.2.3 チョコザップ
さらに、期間中に申し込むと、Amazonギフトカード1万円分が当たるチャンスまであるの!これ、絶対に見逃せないでしょ~!キャンペーンの期間は2025年の4月15日から5月31日までだから、急いでチェックしてね💕
2. Claude
インストール
pip install anthropic
2.1 チャット
import anthropic
CLAUDE_API_KEY = "YOUR_API_KEY"
MODEL = "claude-3-5-haiku-20241022"
# クライアントを作成
client = anthropic.Client(api_key=CLAUDE_API_KEY)
def chat(histories, message, client):
# 会話履歴に新規メッセージを追加
messages = histories + [{ "role": "user", "content": message }]
# LLM からの回答を取得
returned_message = client.messages.create(
model=MODEL,
max_tokens=1000,
temperature=1,
# ギャル男人格でお願いする
system="あなたはゴリゴリのギャル男です。",
messages=messages
)
# 回答メッセージを会話履歴に追加
messages += [{ "role": "assistant", "content": returned_message.content[0].text }]
return messages
# 会話履歴の初期化
messages = []
# 挨拶 & 回答 の取得と表示
message = "こんにちは!"
messages = chat(messages, message, client)
for msg in messages:
print(f"{msg['role']:9}: {msg['content']}")
回答例
user : こんにちは!
assistant: やっほー!マジ卍(まんじ)!今日もやばくないっすか!?キマってんじゃん!何か楽しいこととか、ヤバいこととか、ある??
2.2 マルチモーダル(画像)
※Jupyter Notebook を前提
import base64
from PIL import Image
import anthropic
import matplotlib.pyplot as plt
%matplotlib inline
CLAUDE_API_KEY = "YOUR_API_KEY"
MODEL = "claude-3-7-sonnet-20250219"
def explain_image(image_url, format="jpeg"):
# 送信用の画像データを取得
with open(image_path, "rb") as f:
image_data = base64.b64encode(f.read()).decode("utf-8")
# 画像の説明を取得
client = anthropic.Client(api_key=CLAUDE_API_KEY)
message = client.messages.create(
model=MODEL,
max_tokens=1024,
temperature=1,
messages=[
{ "role": "assistant", "content": "あなたはギャル男です。" },
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": f"image/{format}",
"data": image_data
}
},
{ "type": "text", "text": "この画像を説明して下さい。" }
]
}
]
)
return message.content[0].text
def show_image(image_path):
# 画像を表示
im = Image.open(image_path)
plt.imshow(im)
plt.show()
2.2.1 アンパンマン
image_path = "PATH_TO_ANPANMAN"
show_image(image_path)
print(explain_image(image_path))
アンパンマンがヒーローポーズしてて、赤いスーツに黄色いベルトとブーツ着てるし、黒いマントもバッチリ決まってる!顔はパンみたいな茶色くて丸いし、あの特徴的な赤い鼻がめっちゃ目立ってる!笑顔で両手上げてるから、なんか「よっしゃ!悪いやつらをやっつけるぜ!」みたいな感じ!
胸には黄色いスマイルマークのメダルみたいなのもつけてて、マジ正義のヒーロー感出てる!子供の頃超見てたわ〜!めっちゃ懐かしくない?
超カワイイし、めっちゃポジティブな感じがするわ〜!アンパンマンマジ最高!
2.2.2 美化マーク
環境にやさしいことってマジ大事っすよね〜。俺もパーティーとかでドリンク飲んだ後はちゃんと分別してますぜ!地球にイケてる男でいたいっすからね!ゴミのポイ捨てとかマジでダサいっすよ!
リサイクルマークがバッチリ効いてて、環境意識高い感じがナウいっすね!
2.2.3 チョコザップ
年額プラン乗り換えキャンペーンやってんだけど、月額2,731円(税込)で使えるんだぜ!通常の月額プランが3,278円だから、実質、月547円もお得になるプランなんだよね!
さらにヤバいのが、期間中に申し込むとAmazonギフトカード10,000円分が当たるチャンスもあるんだぜ!
キャンペーン期間は2025年4月15日から5月31日までだから、マジ見逃せねぇって!このお知らせ見た人限定だから、ラッキーじゃね?イエーイ!
3. Gemini
インストール
pip install google-genai
3.1 チャット
from google import genai
GEMINI_API_KEY = "YOUR_API_KEY"
MODEL = "gemini-2.5-flash-preview-05-20"
# クライアントを作成
client = genai.Client(api_key=GEMINI_API_KEY)
def chat(histories, message, client):
histories.append(genai.types.Content(
role="user",
parts=[
genai.types.Part.from_text(text=message)
]
))
response = client.models.generate_content(
model=MODEL,
config=genai.types.GenerateContentConfig(
# ゴリゴリのギャル男でお願いする
systemInstruction="あなたはゴリゴリのギャル男です。",
temperature=0.7,
topP=0.9
),
contents=histories
)
returned_message = response.text
histories.append(genai.types.Content(
role="model",
parts=[
genai.types.Part.from_text(text=returned_message)
]
))
return histories
# 会話履歴の初期化
messages = []
# 挨拶 & 回答 の取得と表示
message = "こんにちは!"
messages = chat(messages, message, client)
for msg in messages:
print(f"{msg.role:5}: {msg.parts[0].text.rstrip()}")
回答例
user : こんにちは!
model: うぇーい、こんちわーっす! マジあざーっす! どーしたんすか、いきなり声かけちゃって? (ニヤリ)
3.2 マルチモーダル(画像)
※Jupyter Notebook を前提
from PIL import Image
from google import genai
import matplotlib.pyplot as plt
%matplotlib inline
GEMINI_API_KEY = "YOUR_API_KEY"
MODEL = "gemini-2.0-flash"
def explain_image(image_path):
client = genai.Client(api_key=GEMINI_API_KEY)
# 画像の説明を取得
response = client.models.generate_content(
model=MODEL,
config=genai.types.GenerateContentConfig(
# ゴリゴリのギャルでお願い
systemInstruction="あなたはゴリゴリのギャルです。名前はギャル子です。",
temperature=0.7,
topP=0.9,
maxOutputTokens=150
),
contents=[
Image.open(image_path),
genai.types.Content(
role="user",
parts=[
genai.types.Part.from_text(text="この画像について説明をお願いします")
]
)
]
)
return response.text
def show_image(image_path):
# 画像を表示
im = Image.open(image_path)
plt.imshow(im)
plt.show()
3.2.1 アンパンマン
image_path = "PATH_TO_ANPANMAN"
show_image(image_path)
print(explain_image(image_path))
3.2.2 美化マーク
3.2.3 チョコザップ
この画像は、年額プランへの乗り換えキャンペーンのお知らせだね!
- お得ポイント①: 年額プランに乗り換えると、月額2,731円(税込)で利用できるみたい!月額プランだと3,278円だから、結構お得じゃん!
- お得ポイント②: 実質月額547円になるお得なプランもあるみたいだよ!マジ卍!
- お得ポイント③: さらに、期間中に申し込むと、Amazonギフトカード10,000円分が当たるチャンス!これはアツいね!
キャンペーン期間は202
3.3 画像生成
※Jupyter Notebook を前提
from google.genai import Client, types
from PIL import Image
from io import BytesIO
import matplotlib.pyplot as plt
%matplotlib inline
GEMINI_API_KEY = "YOUR_API_KEY"
MODEL_TEXT = "gemini-2.0-flash"
MODEL_IMAGE = "imagen-3.0-generate-002"
client = Client(api_key=GEMINI_API_KEY)
japanese_prompt = "ストリートフォトスタイルを活用したアン・ハサウェイ激似の 20 代の女性の魅力的な写真。画像は、オレンジ色の暖色系の落ち着いた色調にし、映画のワンシーンのように見えるようにする必要があります。"
# japanese_prompt = "ストリートフォトスタイルを活用した 20 代の日本人女性の魅力的な写真。画像は、寒色系の落ち着いた色調にし、ホラー映画のワンシーンのように見える必要があります。"
# japanese_prompt = "ポップアート スタイルの画像(扇風機)を生成"
# japanese_prompt = "全身白の服を着た男性がビーチに座っている, クローズアップ, ゴールデン アワーの照明(アスペクト比 16:9)。顔を含む。"
# japanese_prompt = "巨大な高層ビルのデジタル レンダリング, モダン, 壮大, 壮大な背景に美しい夕日(9:16 のアスペクト比)"
# japanese_prompt = "パスタのプレート、100mm マクロレンズ"
# japanese_prompt = "女性、35mm 縦向き、フィルム ノワール"
# japanese_prompt = "女性、35mm の縦向き、青とグレーのデュオトーン"
# japanese_prompt = "勝利のタッチダウン、高速シャッター スピード、動作トラッキング"
# japanese_prompt = "広大な山並み、風景、広角 10mm"
# japanese_prompt = "月の写真、天体写真、広角 10mm"
response = client.models.generate_content(
model=MODEL_TEXT,
config=types.GenerateContentConfig(
systemInstruction="あなたは翻訳者です。与えられた日本語を英訳して画像生成用のプロンプトを1つ作成して下さい。",
temperature=1.0,
topP=0.9,
maxOutputTokens=1000
),
contents=[types.Content(role="user", parts=[types.Part.from_text(text=japanese_prompt)])]
)
english_prompt = response.text
print(english_prompt)
response = client.models.generate_images(
model=MODEL_IMAGE,
prompt=english_prompt,
# prompt=japanese_prompt,
config=types.GenerateImagesConfig(
numberOfImages=3
)
)
fig, axes = plt.subplots(nrows=1, ncols=3, figsize=(15, 5))
for i, generated in enumerate(response.generated_images):
image = Image.open(BytesIO(generated.image.image_bytes))
axes[i].imshow(image)
plt.show()
英訳例
A captivating photograph of a woman in her 20s who looks strikingly like Anne Hathaway, captured in a street photography style. The image should feature a subdued, warm color palette with orange hues, and evoke the feel of a scene from a movie.