プログラミング ときどき 雑談

コードと猫と、ひとさじのコーヒー。横浜の片隅から、プログラミング学習の日々と、ふとしたつぶやきをお届けします。

PythonでRAG!Gemini APIで動かす(後編)〜いよいよAIに質問してみよう!〜

こんにちは! 気ままなねぎとろ♪ です。😊

お待たせしました! 「PythonでRAG!Gemini APIで動かす」の【後編】です!

▼【前編】をまだ読んでいない方は、こちらからどうぞ!

PythonでRAG!Gemini APIで動かす(前編)〜いろんなファイルを食べさせる準備〜 - プログラミング ときどき 雑談

【前編】では、Excelのデータを読み込んで、AIが食べやすい一口サイズにカットして、いつでも取り出せる「魔法の冷蔵庫(FAISS)」に入れるところまで、RAGの【下ごしらえ】をやりましたね。

今回の【後編】では、いよいよこの「魔法の冷蔵庫」を使って、 「Gemini 2.5 Proに、Excelの中身について質問する」 という、RAGの一番楽しい「心臓部」の組み立て&実行をしていきますよー!

果たして、AIはちゃんとExcelの中身を理解して、私たちの質問に答えてくれるんでしょうか…?

さっそく、コードを見ていきましょう!


ステップ6:RAGの心臓部!「チェーン」を組み立てよう

さあ、いよいよ【後編】のメインディッシュです! 【前編】で準備した「魔法の冷蔵庫(vectorstore)」から、どうやってAI(Gemini)に質問を投げて、賢い答えをもらうのか?

その「一連の流れ(=チェーン)」を、LangChain (LCEL) を使って組み立てていきますよー!

rag-test.pyのコードだと、この部分!

# --- LangChainの魔法の道具をインポート ---
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
from langchain_google_genai import ChatGoogleGenerativeAI
# (中略)

# 4. 《実行》RAGチェーンの組み立て
print("--- RAGの仕組みを組み立てます ---")

# DBから質問に関係する文書を探してくる部品(リトリーバー)
retriever = vectorstore.as_retriever(search_kwargs={"k": 10})

# Geminiに渡すための指示書(プロンプトテンプレート)
template = """
あなたは質問応答アシスタントです。以下の取り出した文脈を元に質問に答えてください。
もし文脈に答えがなければ、わからないと答えてください。

文脈:
{context}

質問:
{question}
"""
prompt = ChatPromptTemplate.from_template(template)

# Geminiモデルを準備
model = ChatGoogleGenerativeAI(model="gemini-2.5-pro", temperature=0)

# これまで準備した部品をぜんぶ繋げて、RAGの一連の流れ(チェーン)を定義!
rag_chain = (
    RunnableParallel(
        context=retriever, question=RunnablePassthrough()
    )
    | prompt
    | model
    | StrOutputParser()
)

なんだか急に「|」(パイプ)とか「RunnableParallel」とか出てきて、難しそうに見えますよね!?

大丈夫、私も最初「なにこれ!?」ってなりました!

これは、LangChainの新しい書き方(LCEL)っていうらしくて、「処理の流れ」を|(パイプ)でつないでいく書き方なんだそうです。

ここでやってることを、ゆるーく分解すると、こんな感じです。

1. 必要な「部品」を準備する

retriever(検索係さん)

  • vectorstore.as_retriever(...)

  • これは、【前編】で作った「魔法の冷蔵庫」から、質問に関係ありそうなデータ(search_kwargs={"k": 10} なので、最大10個)を、超高速で取ってきてくれる「検索係」です。

prompt(指示書)

  • ChatPromptTemplate.from_template(template)

  • これは、Geminiに渡す「指示書」のテンプレートです。

  • 「あなたはアシスタントだよ!この{context}(検索係さんが取ってきたデータ)と{question}(私たちが聞く質問)を元に、答えてね!」って書いてあります。

model(AI本体)

  • ChatGoogleGenerativeAI(model="gemini-2.5-pro", ...)

  • 今回の主役、賢い「Gemini 2.5 Pro」くん本人です。

2. 「部品」を|(パイプ)でつなげる!

そして、最後のrag_chain = (...)の部分が、その部品を流れ作業(パイプライン)でつなげているところです。

# ここがRAGの「流れ」
rag_chain = (
    # (A) まず、私たちが聞く「質問」を、
    #   「検索係(retriever)」と「そのまま(Passthrough)」に同時に渡す!
    RunnableParallel(
        context=retriever,  # ← 検索係は「質問」をもとに冷蔵庫から{context}を探す
        question=RunnablePassthrough() # ← 質問は{question}としてそのまま流す
    )
    # (B) (A)の結果({context}と{question})を、
    #   「指示書(prompt)」にぜんぶ書き込む!
    | prompt
    # (C) (B)で完成した「指示書」を、
    #   「AI本体(model)」に渡して、答えを考えてもらう!
    | model
    # (D) (C)の答え(AIの難しいデータ)を、
    #   「キレイな文字(StrOutputParser)」に変換してもらう!
    | StrOutputParser()
)

こんな感じ! LangChain (LCEL) を使うと、「データを取ってきて」→「指示書にセットして」→「AIに渡して」→「答えをキレイにする」っていう一連の流れ(チェーン)を、こんなにスッキリ書けちゃうんですね。


ステップ7:いよいよ、AIに質問してみよう!

お待たせしました!ついに、私たちが作ったRAGシステムに、質問を投げかける時が来ました!

【前編】で読み込ませたExcelファイル(sample.xlsx)の中身について、ちゃんと答えてくれるんでしょうか…?

rag-test.pyのコードだと、この最後の部分です!

# 5. 《実行》RAGに質問してみる!
print("--- RAGに質問します ---")
question = "ねぎとろ商店のトータル金額は?"

print(f"質問: {question}")

response = rag_chain.invoke(question)

# 6. 回答の表示
print("\n------ 回答 ------")
print(response)
print("--------------------")

question = "..." のところに、聞きたいことを書くだけ! あとは、rag_chain.invoke(question)っていう呪文が、さっきのステップ6で組み立てた流れ(検索→指示書作成→AI回答→キレイな文字に)を、ぜーんぶ自動でやってくれるんです!

果たして、結果は…!?


【後編】まとめ:動いたー!これがRAGだ!

やりましたー!(≧▽≦) 「ねぎとろ商店のトータル金額は?」って聞いたら、ちゃんとExcelの中から答えを探してきてくれました!

これで、 「AIに、自分の好きなファイル(Excelとか)を食べさせて、その内容にもとづいて賢く答えてもらう技術」 …そう、「RAG」が、私たちの手で完成しましたね!

Gemini API と LangChain を使えば、意外と(Markdownのクセと戦う方が大変だったかも?笑)スッキリしたコードで作れちゃうんだなーって、私も感動しました!

ローカルLLMを動かすのはPCのスペックも必要だけど、Gemini APIなら高性能な gemini-2.5-pro が手軽に使えて、本当に便利ですよね。

皆さんも、自分のExcelファイルやPDFを読み込ませて、オリジナルRAGで遊んでみてくださいね!

(ここまで【前編】【後編】と読んでくださって、本当にありがとうございました!😊)


【おまけ】RAG(前編・後編)の全部入りコード

import os
from dotenv import load_dotenv

# --- LangChainの魔法の道具をインポート ---
from langchain_google_genai import ChatGoogleGenerativeAI, GoogleGenerativeAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.document_loaders import UnstructuredExcelLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
from langchain_core.output_parsers import StrOutputParser
from langchain_core.documents import Document

# 0. APIキーの準備
# .envファイルからAPIキーを読み込む
load_dotenv()
# 環境変数からAPIキーを読み込む(もし.envがなくてもOSに設定されていればOK)
if "GOOGLE_API_KEY" not in os.environ:
    os.environ["GOOGLE_API_KEY"] = "(ここにAPIキーを入れてね)"

# --- ここからRAGの処理スタート! ---

# 1. 《下準備》データの準備
# "sample.xlsx"という名前のExcelファイルを読み込む
loader = UnstructuredExcelLoader("sample.xlsx")
documents = loader.load()

# 2. 《下準備》データの分割(チャンキング)
text_splitter = RecursiveCharacterTextSplitter(chunk_size=250, chunk_overlap=30)
split_docs = text_splitter.split_documents(documents)

print("--- データを2つのかたまりに分割しました ---")

# 3. 《下準備》ベクトル化してデータベースに保存
print("--- データをベクトル化して、DBに保存します ---")
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
vectorstore = FAISS.from_documents(split_docs, embeddings)

# 4. 《実行》RAGチェーンの組み立て
print("--- RAGの仕組みを組み立てます ---")

# DBから質問に関係する文書を探してくる部品(リトリーバー)
retriever = vectorstore.as_retriever(search_kwargs={"k": 10})

# Geminiに渡すための指示書(プロンプトテンプレート)
template = """
あなたは質問応答アシスタントです。以下の取り出した文脈を元に質問に答えてください。
もし文脈に答えがなければ、わからないと答えてください。

文脈:
{context}

質問:
{question}
"""
prompt = ChatPromptTemplate.from_template(template)

# Geminiモデルを準備
model = ChatGoogleGenerativeAI(model="gemini-2.5-pro", temperature=0)

# これまで準備した部品をぜんぶ繋げて、RAGの一連の流れ(チェーン)を定義!
rag_chain = (
    RunnableParallel(
        context=retriever, question=RunnablePassthrough()
    )
    | prompt
    | model
    | StrOutputParser()
)

# 5. 《実行》RAGに質問してみる!
print("--- RAGに質問します ---")
question = "ねぎとろ商店のトータル金額は?"
print(f"質問: {question}")

response = rag_chain.invoke(question)

# 6. 回答の表示
print("\n------ 回答 ------")
print(response)
print("--------------------")

PythonでRAG!Gemini APIで動かす(前編)〜いろんなファイルを食べさせる準備〜

こんにちは! 気ままなねぎとろ♪ です。😊

いきなりですが、皆さん「RAG(ラグ)」って言葉、知ってましたか? 私は、つい最近まで知りませんでした!(笑)

でもね、ずーっと「できたらいいな!」って思ってたことがあるんです。

それは、 「自分がAIと話した会話の履歴とか、Excelでまとめたデータとかを、AIが全部覚えてくれて、その中から質問に答えてくれたら最高なのになぁ…」 っていうこと!

これを、いつものようにAIに話してみたら、「巷でいう『RAG』っていう技術です。」 って教えてくれたんです。

え、あれってRAGっていう名前だったの!?Σ(゚Д゚) って

RAG(Retrieval-Augmented Generation)…うーん、名前は難しいけど、要は、「AIに、自分の好きなファイル(ExcelとかPDFとか)を『食べさせて』、その内容にもとづいて賢く答えてもらう技術」のことみたいです。

これ、できたら便利じゃないですか!?

というわけで、今回から【前編】・【後編】に分けて、私がPythonとGemini APIを使って「おてがるRAG」作りに挑戦してみました!

この記事(前編)では、まずAIに「いろんなファイルを食べさせる準備」のところまで。 私が「おー!こうやって動くんだ!」って感動したポイントを、コードと一緒にお見せしますね!

これからRAGを触ってみたいあなたの、ちょっとしたヒントになれたら嬉しいです!


ステップ1:RAGに必要な「魔法の道具(ライブラリ)」を集めよう!

よし、じゃあ早速PythonでRAGを作っていきましょう! と、その前に。 RAGを作るには、便利な「魔法の道具」、いわゆるライブラリがいくつか必要になります。

私の環境(Python)では、こんな感じの呪文(コマンド)を唱えて、道具を集めました。 (ターミナルとか、コマンドプロンプトで打ち込むやつですね!)

# Gemini API と LangChain を使うための道具
pip install langchain langchain_google_genai

# データを保存するデータベース(FAISS)の道具
pip install faiss-cpu

# Excelファイルを読み込むための道具!
pip install unstructured[excel]

# PDFを読みたい人はこっちも
pip install pypdf

# 大事なAPIキーを隠すための道具
pip install python-dotenv

こんな感じですね! 特に「unstructured[excel]」っていうのが、Excelファイルをいい感じに読み込んでくれる、今回のキモになる道具の一つです。😊


ステップ2:大事な「カギ(APIキー)」を安全に準備しよう

次に、Gemini APIを使うための「カギ」、つまりAPIキーを準備します。 このキーは、他人に知られちゃうと大変なことになる、とっても大事なパスワードみたいなものです。

だから、Pythonのコード(.pyファイル)に、そのままキーを書き込むのは、ちょっと危ないんです。

そこで、さっきインストールした「python-dotenv」っていう道具が役立ちます!

(1).env ファイルを作る

まず、Pythonのファイル(rag-test.pyとか)と同じ場所に、 .env という名前のファイルを作ります。(最初にドット「.」がつくのがポイント!)

(2).env ファイルにキーを書く

その.envファイルの中に、こんな風に書きます。

GOOGLE_API_KEY="(ここに自分のGemini APIキーをコピペ)"

(3)Pythonコードで読み込む

こうしておけば、Pythonコードの方では、こんな風に安全にキーを呼び出せるんです。

import os
from dotenv import load_dotenv

# .envファイルからAPIキーを読み込む
load_dotenv()

# これで os.environ["GOOGLE_API_KEY"] でキーが使えるようになる
if "GOOGLE_API_KEY" not in os.environ:
    # ここは保険。本当は .env ファイルに書きましょう!
    os.environ["GOOGLE_API_KEY"] = "(自分のキー)" 

load_dotenv() っていう呪文を唱えるだけで、.envファイルの中身をこっそり読み込んでくれるんですね。賢い!


ステップ3:RAGのエサ!いろんなファイルを読み込もう(ローダー)

さあ、準備は整いました! いよいよ、RAGに「食べさせる」ためのデータ(ファイル)を読み込んでいきましょう!

私が今回、AIに食べさせてみたかったのはExcelファイル! (お小遣い帳とか、会話の履歴とか、いろいろ使えそうですよね!)

rag-test.pyのコードでいうと、この部分です。

# --- LangChainの魔法の道具をインポート ---
# (さっきインストールした道具たちを使うよ!って宣言するところ)
from langchain_community.document_loaders import UnstructuredExcelLoader
# from langchain_community.document_loaders import PyPDFLoader # PDF用
# from langchain_community.document_loaders import TextLoader   # テキスト用
# (中略)

# 1. 《下準備》データの準備
# "sample.xlsx"という名前のExcelファイルを読み込む
loader = UnstructuredExcelLoader("sample.xlsx") # ←読みませたいファイルの名前に変えてね!
documents = loader.load()

print("--- Excelファイルを読み込みました! ---")
# print(documents) # 中身が気になる人は、printのコメントを外してみてね

たったこれだけ!すごくないですか!? さっきインストールした「UnstructuredExcelLoader」っていう道具(ライブラリ)に、 「"sample.xlsx"っていう名前のExcelファイルをよろしく!」 ってお願いするだけで、

最後のdocuments = loader.load()っていう呪文を唱えると、Excelの中身をぜーんぶAIが読みやすい形にして、documentsっていう箱(変数)に入れてくれるんです。 いやー、賢い!( *´艸`)

📖 Excel以外も食べさせたい!

もちろん、Excelだけじゃなくて、PDFとか、普通のテキストファイル(.mdとか.txt)も食べさせられますよ!

その場合は、さっきのコードの「loader = ...」の部分を、こんな風に変えてあげればOKです。

▼ PDFファイルを読ませたい場合

# loader = UnstructuredExcelLoader("sample.xlsx") # ←Excelの行はコメントアウトして
loader = PyPDFLoader("Manual.pdf") # ←こっちのコメントを外す!ファイル名も変えてね
documents = loader.load()

▼ mdファイル(テキスト)を読ませたい場合

# loader = UnstructuredExcelLoader("sample.xlsx") # ←Excelの行はコメントアウトして
loader = TextLoader("chat_log.md", encoding="utf-8") # ←こっちを!(日本語はencoding指定が安心)
documents = loader.load()

LangChainの「ローダー」っていう仕組み、本当に便利ですよね! ファイルの種類ごとに、使う道具(UnstructuredExcelLoaderとかPyPDFLoaderとか)を変えるだけで、読み込み方が分からなくても勝手にやってくれるんですから!

さて、これでAIに食べさせる「エサ」が、documents の中にバッチリ準備できました!

…でも、ちょっと待ってください。 ExcelファイルやPDFを丸ごと「はい、どうぞ!」って渡されても、AIくん、大きすぎて食べにくい(情報が多すぎて処理しにくい)んです。

料理と同じで、食べやすいように「小さく切ってあげる」必要がありますよね?

というわけで、次のステップ(ステップ4)では、この読み込んだdocumentsを、AIが食べやすい一口サイズに「分割(チャンキング)」していきますよー!


ステップ4:AIの一口サイズに「分割(チャンキング)」しよう!

さて、ステップ3で読み込んだdocumentsExcelの中身)ですが、このままだとAIくんにとって「大きすぎるお肉」みたいな状態です。 (長ーいExcelシートを丸ごと渡されても、どこを読んでいいか困っちゃいますよね!)

そこで、AIが食べやすい「一口サイズ」に、いい感じに分割(チャンキング)してあげる必要があります。

rag-test.pyのコードだと、この部分!

# --- LangChainの魔法の道具をインポート ---
from langchain_text_splitters import RecursiveCharacterTextSplitter
# (中略)

# 2. 《下準備》データの分割(チャンキング)
# 読み込んだ会話データを、意味のまとまりで小さく区切る
text_splitter = RecursiveCharacterTextSplitter(chunk_size=250, chunk_overlap=30)
split_docs = text_splitter.split_documents(documents)

print("--- データを小さく分割しました ---")
# print(split_docs) # 分割されたデータの中身を確認したいときは、この行のコメントを外してね

ここで使ってる「RecursiveCharacterTextSplitter」っていうのが、賢い「包丁」みたいな道具です。

chunk_size=250

これが「一口サイズ」の大きさ(文字数)です。「だいたい250文字くらいで切ってね!」ってお願いしてます。

chunk_overlap=30

これが「のりしろ(重なり)」です。「切るときに、前のカタマリの最後30文字を、次のカタマリの最初にもう一回含めといてね!」っていう設定です。

こうしておくと、「山田さんの、発言は…」みたいに、文章の途中でブツッと切れちゃっても、次のカタマリを見れば話が繋がるので、AIが意味を理解しやすくなるんです。賢い!

最後のsplit_docs = text_splitter.split_documents(documents)という呪文で、 さっきの大きなdocumentsが、小さく分割されたsplit_docs(一口サイズのデータがいっぱい入った箱)になりました!

これで「ローダー」で読み込んで、「チャンキング」で小さく切って… AIに「エサ」を食べさせる準備は、ほぼ完了です!


ステップ5:AIの「魔法の冷蔵庫(DB)」に保存しよう!

お疲れ様です!ついに【前編】の最後のステップですよ!

今、私たちの手元には、ステップ4で一口サイズにカットされた「エサ」(split_docs)がたくさんあります。 でも、このままだと、いざAIが「あれ、あの話どこだっけ?」って探そうとしても、全部の切れ端を最初から見直さないといけなくて、すっごく大変!

そこで、この一口サイズのエサを、AIが一瞬で見つけられる「魔法の冷蔵庫(ベクトルデータベース)」に、キレイに整理整頓して入れてあげます。

rag-test.pyのコードだと、この部分!

# --- LangChainの魔法の道具をインポート ---
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_community.vectorstores import FAISS
# (中略)

# 3. 《下準備》ベクトル化してデータベースに保存
# 分割したデータを、AIがわかるように数字の列(ベクトル)に変換して、
# すぐに検索できるFAISSっていうデータベースに入れる
print("--- データをベクトル化して、DBに保存します ---")
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
vectorstore = FAISS.from_documents(split_docs, embeddings)

ここでは、2つの大事なことを一気にやっています。

1. AI語に翻訳(ベクトル化)

embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")

これが「AI語翻訳機」みたいなものです。 「embedding-001」っていうモデルを使って、「一口サイズのエサ」(日本語の文章)を、AIが意味を理解できる「数字の並び(ベクトル)」にぜんぶ翻訳していきます。

(「美味しい」は[0.1, 0.5, 0.9]、「楽しい」は[0.2, 0.4, 0.8]みたいに、似た意味の言葉は「似た数字の並び」になる、魔法の翻訳です!)

2. 魔法の冷蔵庫(FAISS)に保存

vectorstore = FAISS.from_documents(split_docs, embeddings)

そして、これが最後の呪文! 「さっきの一口サイズのエサ(split_docs)を、さっきの翻訳機(embeddings)でぜんぶAI語に翻訳しながら、FAISSっていう名前の『魔法の冷蔵庫』に詰めてね!」 っていう命令です。

FAISS(フェイス、って読むらしいです)っていうのは、この「AI語(ベクトル)」を超高速で検索できる、すごい道具(データベース)なんです。


【前編】まとめ:下ごしらえ、完了!

【前編】のまとめコード(コピペで動くよ!)

(※sample.xlsxというExcelファイルが同じ場所にある前提です!)

rag-test.pyのコード

import os
from dotenv import load_dotenv

# --- LangChainの魔法の道具をインポート ---
from langchain_google_genai import GoogleGenerativeAIEmbeddings
from langchain_community.vectorstores import FAISS
from langchain_community.document_loaders import UnstructuredExcelLoader
# from langchain_community.document_loaders import PyPDFLoader
# from langchain_community.document_loaders import TextLoader
from langchain_text_splitters import RecursiveCharacterTextSplitter

# --- ステップ2:APIキーの準備 ---
load_dotenv()
if "GOOGLE_API_KEY" not in os.environ:
    os.environ["GOOGLE_API_KEY"] = "(ここに自分のキーを入れてね)"

# --- ステップ3:RAGのエサ!いろんなファイルを読み込もう ---
# "sample.xlsx"という名前のExcelファイルを読み込む
print("--- データを読み込みます ---")
loader = UnstructuredExcelLoader("sample.xlsx") 
documents = loader.load()

# --- ステップ4:AIの一口サイズに「分割(チャンキング)」しよう! ---
# 読み込んだデータを、意味のまとまりで小さく区切る
print("--- データを小さく分割します ---")
text_splitter = RecursiveCharacterTextSplitter(chunk_size=250, chunk_overlap=30)
split_docs = text_splitter.split_documents(documents)

# --- ステップ5:AIの「魔法の冷蔵庫(DB)」に保存しよう! ---
# 分割したデータを、AIがわかるように数字の列(ベクトル)に変換して、
# すぐに検索できるFAISSっていうデータベースに入れる
print("--- データをベクトル化して、DBに保存します ---")
embeddings = GoogleGenerativeAIEmbeddings(model="models/embedding-001")
vectorstore = FAISS.from_documents(split_docs, embeddings)

print("--- 【前編】の処理が完了しました! ---")
print("vectorstore(魔法の冷蔵庫)の準備ができました!")
print("【後編】では、このvectorstoreを使ってAIに質問しますよ!")

やりましたー!(≧▽≦) これで、

  • ステップ3Excelファイルを読み込んで(ローダー)
  • ステップ4:一口サイズにカットして(チャンキング)
  • ステップ5:AI語に翻訳して、魔法の冷蔵庫に保存(Embedding & FAISS)

という、RAGの【下ごしらえ】が、ぜんぶ完了しました!

私たちのvectorstore(魔法の冷蔵庫)には、もうExcelの中身が、AIがいつでも取り出せる状態でキレイに並んでいます。

【後編】では、いよいよこの冷蔵庫を使って、 「Gemini 2.5 Proに、Excelの中身について質問する」 という、RAGの一番楽しい「組み立て&実行」の部分をやっていきますよー!

ぜひ、後編もお楽しみに! (ここまで読んでくださって、ありがとうございました!😊)

もし「もしもボックス」があったら? 夢の道具に潜む「現実書き換え」の怖さ

こんにちは!「気ままなねぎとろ♪」です。

「もしも、明日から『重力』が半分になったら?」 「もしも、『人間が話す言葉』がすべて猫語になったら?」

ドラえもんひみつ道具もしもボックス」は、そんな突拍子もない「もしも」を、電話一本で「現実」にしてしまう道具です。

「あんなこといいな、できたらいいな」が全部叶う、まさに究極の夢の道具。 誰もが一度は「あったらいいな」と思ったことがあるはずです。

でも、私はふと思ったんです。 「この道具、本当にただ『便利』なだけなのかな?」 「これって、とんでもなく『怖い』道具なんじゃないか?」と。

なぜなら、それは単なる「お試し体験」や「VR」ではありません。 電話をかけた瞬間、この宇宙のルール、この世の「理(ことわり)」そのものが根底から書き換えられてしまうからです。

今回の記事では、この「もしもボックス」という夢の道具が秘める、「現実書き換え」の本当の怖さについて、真剣に考察してみたいと思います。 皆さんも、ぜひ一緒に「もしも」の世界の恐ろしさを覗いてみませんか?

  • もしもボックスの本当の怖さ】
    • 【怖さ①:「もしもの世界」が「本物」になり、「宇宙の理」すら書き換えてしまうこと】
    • 【怖さ②:「自分」という存在(アイデンティティ)が失われること】
    • 【怖さ③:安易な「リセット」が「成長の機会」を奪うこと】
    • 【怖さ④:叶えた「もしも」が、必ずしも「幸せ」に直結するとは限らないこと】
  • 【考察:この「怖さ」から考える、私たちの「望み」】
  • 【まとめ】

 


続きを読む

【猫のQOL爆上げ】未来の猫はコレが標準装備?夢の空想ガジェット2選

皆様、こんにちは。
気ままなねぎとろ♪です。

スマートフォン、スマートウォッチ、自動運転車…。
私たち人間は、日々テクノロジーの進化による大きな恩恵を受けながら暮らしています。

では、私たちのすぐ隣で暮らす、愛すべき同居人――愛猫たちの生活はどうでしょうか?
彼らは、いまだに掃除機の轟音に怯え、飼い主の意図が分からずに不安を感じることがあるのかもしれません。

そんな猫たちの「暮らしの質(QOL)」を、テクノロジーの力で劇的に向上させたい。
その一心で、我々は惑星『ニャンデスター』の技術者たちと共同で、革新的な「猫用未来型ガジェット」の開発を日夜進めております。

この記事は、現在コンセプト実証段階にある、2つの夢のガジェットに関する開発レポートです。
さあ、愛猫たちの暮らしを豊かにする、未来の扉を一緒に開きましょう。

 

続きを読む

【初心者向け】AIがもっと賢くなる!魔法の呪文「プロンプト」の書き方講座

こんにちは!
気ままなねぎとろ♪です。

 

まるで魔法のように、どんな質問にも答えてくれたり、素敵な絵を描いてくれたりする「AI」。
本当にすごいですよね!

実は、このAIという存在、昔のアラビアンナイトに出てくる「魔法のランプの魔神」にそっくりなんです。
そして、AIを上手に使いこなすために、私たちが魔神に伝える「お願いごと」。

これが、今回のお話の主役である「プロンプト」です。

  • 1.AIにとって「プロンプト」は、魔法の呪文!
  • 2.【ダメな例】AIを困らせちゃう『悪い呪文』
    • ダメな例1:あまりにも「あいまい」な呪文
    • ダメな例2:情報が「足りていない」呪文
    • ダメな例3:一度に「お願いしすぎ」な呪文
  • 3.【良い例】AIが本気を出す!「5つの良い呪文」
    • コツ①:具体的に、詳しく!「情景が目に浮かぶ呪文」
    • コツ②:役割を与える!「なりきり呪文」
    • コツ③:お手本を見せる!「真似っこ呪文」
    • コツ④:シンプルが一番!「一文は短く呪文」
    • コツ⑤【裏技】:呪文を考えさせる!「プロンプト生成呪文」
  • 4.【まとめ】さあ、魔法の呪文を唱えてみよう!

 

続きを読む

【2025年版】初めてのGoogle AI Studio入門!使い方を5ステップで徹底解説

こんにちは!
気ままなねぎとろ♪です。

最近、「AI」っていう言葉、テレビやニュースでよく見かけませんか?
「なんだか難しそう…」「プログラマーみたいな専門家が使うものでしょ?」
なんて、思っている人も多いかもしれません。

でも実は、Googleアカウントさえ持っていれば、誰でも無料で、しかも簡単に最新のAIに触れることができる、夢のような場所があるんです!

それが、今回ご紹介する[Google AI Studio」です!

 

 

1.Google AI Studioって?

Google AI Studioは、一言でいうと「未来のAIが使い放題の実験室」みたいなもの。
この実験室では、Googleが開発した最新のAI「Gemini(ジェミニ)」くんが、あなた専属のアシスタントになってくれます。

例えば、こんなことができます。

・ 夏休みの読書感想文を、一緒に考えてもらう
・ 今日の晩ごはんの献立を、10パターンくらい提案してもらう
・ プログラミングのコードを、代わりに書いてもらう

…などなど、アイデア次第で可能性は無限大!

この記事では、そんなGoogle AI Studioの魅力と、初めての人でもすぐに使える「入門編の活用法」を、どこよりも分かりやすく解説していきます。

さあ、一緒に未来の実験室を覗いてみましょう!

※ちなみに、Google AI Studioは18歳以上向けのサービスなので、そこだけ注意してくださいね!

 

2.Google AI Studioのすごいところ!

Google AI Studioが「未来のAI実験室」だっていうのは分かったけど、「他にも似たようなAIサービスって色々あるよね?」と思った、そこのあなた!

鋭いですね!
ここからは、他のAIサービスと比べた時の、Google AI Studioだけの「すごいところ」を3つ、ご紹介します!

 

(1)基本無料で、すぐに始められる!

一番の魅力は、なんといってもこれ!
多くのAIサービスが、有料だったり、無料でも使うのにクレジットカードの登録が必要だったりします。

でも、Google AI Studioは「Googleアカウント」さえ持っていれば、すぐに、しかも基本無料で使い始めることができるんです!
「ちょっとAIを試してみたいな」という入門者にとって、これ以上ないくらい優しい設計になっています。

 

(2)Googleの最新AI「Gemini」が使い放題!

AIの世界は、日々ものすごいスピードで進化しています。
Google AI Studioでは、Google自身が開発した最新・最強クラスのAIモデル「Gemini(ジェミニ)」を、心ゆくまで試すことができます。

まるで、発表されたばかりの最新のスポーツカーに、すぐ試乗できるようなもの!
賢い文章作成が得意な「Gemini Pro」や、画像も理解できる「Gemini Pro Vision」といった、パワフルなAIの性能を、自分の手で確かめられるのは、本当にワクワクしますよ。

 

(3)プログラマー歓喜!「コードを取得」ボタンが超便利!

そして、プログラミングをする人にとって、これが決定的な魅力かもしれません。
AI Studioで試したAIとのやり取り(プロンプト)は、なんとワンクリックで、PythonJavaScriptといったプログラミング言語のコードに変換することができるんです!

つまり、「AI実験室」で色々試して、うまくいった命令の仕方を、そのまま自分のアプリやサービスに「部品」として組み込めてしまう、ということ。
イデアを試す場所と、実際に開発する場所が、スムーズに繋がっているんです。

 

3.AI Studioのツールの違いを徹底解説!

さて、Google AI Studioを使い始めると、最初に「モデル」や「プロンプト」といった、いくつかの選択肢が出てきます。
「どれを選べばいいの?」と迷ってしまう初心者のために、それぞれの違いを分かりやすく解説しますね!

 

AIの「脳みそ」を選ぼう!――モデルの違い

まず「モデル」とは、AIの「性能や得意なことを決める脳みそ」のようなものです。
2025年10月現在、主に2種類の脳みそ(モデル)が選べます。

① Gemini Proモデル
    文章を読んだり、書いたり、要約したりといった、言葉を扱うのが得意な、賢いペンのようなモデルです。ブログ記事のアイデア出しや、メールの文章作成など、ほとんどのことは、まずこのモデルを選べばOKです!

② Gemini Pro Visionモデル
    「Vision」の名前の通り、画像も理解できる、魔法の目を持ったペンです。
    例えば、料理の写真を見せて「このレシピを教えて!」と聞いたり、風景の写真からキャッチコピーを考えてもらったり…といった、文章と画像を組み合わせたお願いごとが得意です。

 

AIへの「頼み方」を選ぼう!――プロンプトの種類の違い

次に「プロンプト」とは、AIへの「お願いの仕方(命令の形式)」のことです。
AI Studioには、主に3つの頼み方が用意されています。

① フリーフォーム (Freeform)
    「白いノート」に、自由に文章を書いてお願いするスタイルです。
    「〇〇についてレポートを書きたいんだけど、タイトル案を10個考えて!」といった、自由な発想でアイデアを出してほしい時に向いています。

② 構造化 (Structured)
    「フォーマットが決まった注文票」のようなスタイルです。
    「商品名:〇〇」「特徴:△△」といったお手本(入力)を見せて、「このフォーマットで、新しい商品の説明文(出力)を作って!」とお願いするのに向いています。同じ形式の文章をたくさん作りたい時に、絶大なパワーを発揮します!

③ チャット (Chat)
    LINEやチャットアプリのようにおしゃべりしながら、AIにお願いをするスタイルです。
    「こんなアイデアどうかな?」「もっと面白くして!」みたいに、AIと対話を重ねながら、答えをどんどん良くしていく作業に向いています。

まずは一番シンプルな「チャット」や「フリーフォーム」から試してみて、慣れてきたら「構造化」に挑戦してみるのがおすすめですよ!

 

4.AI Studioを使いこなす!

Google AI Studioには、AIとの対話をより面白く、より便利にするための機能がいくつか隠されています。
今回は、特に初心者の皆さんに「ぜひ試してみてほしい!」と思うおすすめ機能を2つ、厳選してご紹介します!

(1)魔法の呪文をコードに変換!「コードを取得」ボタン

これは、特にプログラミングに興味がある人にとっては、まさに魔法のようなボタンです。
あなたがAIにお願いした命令(プロンプト)と、それに対するAIの答えを、一瞬でプログラミングのコードに変換してくれます。

これは、例えるなら「唱えた魔法の呪文(お願い)を、誰でも使える魔法の巻物(プログラム)にしてくれる」ようなもの。
AI Studioで試した面白いアイデアを、すぐに自分のウェブサイトやアプリに組み込むことができる、夢のような機能なんです!

 

(2)AIの性格を変えちゃおう!「温度(Temperature)」スライダー

AIからの答えを出す画面の横に、「温度(Temperature)」と書かれたスライダーがあるのに気づきましたか?
これは、AIの「性格や個性」を調整できる、とっても面白いツマミなんです。

・温度を低くする(0に近いほど)
    AIは、より正確で、間違いの少ない答えを返す「真面目な優等生」になります。事実に基づいた、安定した答えが欲しい時におすすめです。

・温度を高くする(1に近いほど)
    AIは、より創造的で、ユニークな答えを返す「アイデア豊富な芸術家」になります。小説のアイデアを出してもらったり、面白いキャッチコピーを考えてもらったりする時に、とんでもない答えを出してくれるかもしれません!

同じお願いごとでも、この「温度」を変えるだけで、AIの答えがガラッと変わります。
ぜひ、スライダーを動かして、AIの性格の変化を実験してみてくださいね!

 

5.【実践】AI Studioで遊んでみよう!- キャラクター紹介文ジェネレーター作り -

さて、ここまでGoogle AI Studioの機能について解説してきました。
最後は、いよいよ実践編です!学んだ知識を使って、一緒に面白いツールを作ってみましょう!

今回作るのは「キャラクター紹介文ジェネレーター」です。
AIに、決まったフォーマットで答えを出してもらうために、「Structured output」というツールを使います。

 

Step 1:「答えの設計図」を作る!

まず、AIに「こういう形の答えを作ってね」という「設計図」を教えます。

1.  画面の右側にある設定パネルから、「Tools」の中にある「Structured output」を探し、「Edit」ボタンを押します。

 

2.  「Visual Editor」が開くので、「+ Add property」を押して、答えを入れてほしい「箱(項目)」を3つ作ります。
    * 1つ目:`character_name` (Type: string)
    * 2つ目:`description` (Type: string)
    * 3つ目:`catchphrase` (Type: string)



3.  設定できたら、右下の「Save」ボタンを押して、設計図は完成です!

 

Step 2:AIに「材料」を渡してお願いする!

設計図ができたら、次はその設計図通りに文章を作ってもらうための「材料」を渡します。
いつものチャット入力欄に、キャラクターの情報を書いてお願いしてみましょう!



Step 3:完成!

「実行」ボタンを押すと、AIが、さっきわたしたちが作った「設計図」の通りに、3つの項目に分けて答えを出力してくれます!



このように、「Structured output」ツールを使えば、AIの答えの形をきれいに整えることができます。
ぜひ、あなたの好きな設定で、AIとの共同作業を楽しんでみてくださいね!

 

それではまた! 気ままなねぎとろ♪でした。👋

 

 

 

 

【極秘レポート】猫の惑星で開発中の「対猫用ガジェット」が色々おかしい件

皆様、こんにちは。気ままなねぎとろ♪です。

 

突然ですが、こう思ったことはありませんか?
「もっと、猫に好かれたい…」と。

 

道端の猫にそっと近づいても逃げられてしまう。我が家の愛猫は、なぜか私にだけそっけない…。
そんな、全人類が抱える(かもしれない)悩みを解決すべく、我々は長年、ある研究開発に取り組んでまいりました。

 

舞台は、はるか銀河の彼方に存在する猫の惑星『ニャンデスター』。
我々はその星の技術者たちと共同で、猫とのコミュニケーションを劇的に向上させる革新的なキャップの開発を進めております。

この記事は、現在最終段階の実証実験を行っている、2つのプロトタイプのレポートとなります。


まだこの世には存在しない、夢のガジェットをご覧ください。

 

アルティメット・キャットニップ・キャップ

素材 国産マタタビ100%(職人による手編み)
効果 半径50m以内の猫を強制的に惹きつける驚異の集猫力。気分はまさに猫界の王。
長所 被るだけで、どんな猫もあなたの足元に。写真も撮り放題!
短所 猫にもみくちゃにされる危険性あり。犬やカラスには効果がないため、別途対策が必要。
想定価格 59,280 ニャン

フレッシュ・ボニート・ハット

素材 枕崎産一本釣り本枯節(最高級品)
効果 香ばしい鰹節の香りで、食いしん坊な猫たちを魅了する。
長所 非常食としても利用可能。猫だけでなく、人間のお腹が空いた時にも安心。
短所 湿気に極端に弱い(※雨天時使用不可)。ハトやカラスにも狙われやすい。
想定価格 時価(ニャン)

 

いかがでしたでしょうか。

ご紹介した2つの空想ガジェットは、現在も惑星ニャンデスターにて、多くの猫たち(テスター)の協力のもと、最終調整が行われています。

 

正式な発売日は、猫暦2222年2月22日を予定しております。
(※地球の通貨への換算レートは、その日の鰹節の市場価格により変動いたします)

 

残念ながら、まだ予約受付を開始できる段階ではございませんが、準備が整い次第、以下のボタンからご案内させていただきます。

 

【ご予約はこちら】
(現在、ボタンの肉球認証機能を開発中です。もう少々お待ちください。)

 

皆様が、愛する猫たちとより良い関係を築ける日が来ることを、我々開発チーム一同、心より願っております。