【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の動作確認

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

ChatGoogleGenerativeAI | 🦜️🔗 LangChain
This docs will help you get started with Google AI chat models. For detailed documentation of all ChatGoogleGenerativeAI features and configurations head to the...

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

公式のサンプルコードは、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をコピーしました