【Python】LangChainとGemini APIの革新的連携

【Python】LangChainとGemini APIの革新的連携 AI

Pythonの世界は、そのシンプルさとパワフルな機能で、日々新しい地平を切り開いています。
この記事では、Pythonを用いたLangChainとGemini APIの効果的な組み合わせを説明します。

本記事の内容

  • LangChainとGemini APIについて
  • LangChainからGemini APIを利用するためのシステム要件
  • LangChainによるGemini APIの動作確認

それでは、上記に沿って解説していきます。

LangChainとGemini APIについて

LangChainについては、次の記事で説明しています。

Geminiについては、次の記事をご覧ください。

そして、Gemini APIについては次の記事で説明しています。

LangChainとGemini APIを連携させるためには、APIキーが必要となります。
そのAPIキーの取得方法は、上記の記事を参考にしてください。

LangChainからGemini APIを利用するためのシステム要件

2024年12月末時点では、以下のPythonバージョンが必要となります。

その前提で、以下のライブラリが必要です。

  • langchain-google-genai
  • Pillow

langchain-google-genaiは、LangChainにgenerative-ai SDKを含んだモノと言えます。
Pillowは、画像を扱うために必要となります。

これらをインストールするコマンドは、以下。

pip install langchain-google-genai
pip install pillow

LangChainによるGemini APIの動作確認

サンプルコードは、公式ページに記載されています。

Google AI chat models | 🦜️🔗 LangChain
Access Google AI's gemini and gemini-vision models, as well as other generative models through ChatGoogleGenerativeAI class in the langchain-google-genai integr...

ここでは、それらのコードを変更したモノを紹介します。

公式のサンプルコードは、APIキーを環境変数に設定する前提です。
それだとちょっと不便な場合があります。

そのため、コード上で設定するように変更しています。
まずは、テキストベースのチャットで動かす場合のコードです。

from langchain_google_genai import ChatGoogleGenerativeAI

GOOGLE_API_KEY = "コピーしたAPIキー"

llm = ChatGoogleGenerativeAI(model="gemini-pro", google_api_key=GOOGLE_API_KEY)
result = llm.invoke("どのプログラミング言語を学べば良いですか?最もオススメの言語を一つだけ教えてください。")
print(result.content)

上記を実行した結果は、以下となります。

Python

次に、マルチモーダルのモデルを利用したコードを紹介します。
ここではローカルに保存された画像ファイルを指定するように変更しています。

person.jpg

from langchain_core.messages import HumanMessage
from langchain_google_genai import ChatGoogleGenerativeAI

GOOGLE_API_KEY = "コピーしたAPIキー"
img_path = "person.jpg"

llm = ChatGoogleGenerativeAI(model="gemini-pro-vision", google_api_key=GOOGLE_API_KEY)

message = HumanMessage(
    content=[
        {
            "type": "text",
            "text": "これは誰ですか?",
        },
        {"type": "image_url", "image_url": img_path},
    ]
)
result = llm.invoke([message])
print(result.content)

上記を実行した結果は、以下。

これは、織田信長です。

ただし、画像サイズが小さい場合は真田信之だと言われます。
したがって、画像はなるべく大きいサイズでアップするようにしましょう。

タイトルとURLをコピーしました