前回までは、ローカルのLLMを活用してLangchainを動かしてみていましたが、今回からは皆さんもよく活用しているGPTを試してみようかと思います。
ただちょっとひねくれた性格をしているので、一番有名で使われているであろうOpenAI社のGPTを使わずに、Google社のgeminiで動かしてみました。
あまり、Gemini+Langchain環境で動かした記事は少ないのかなとおもってこちらを選んでいます。
まずは、Geminiって何?ってところなんですが、こちらはWeb検索やAndroidで有名なGoogle社が開発した生成AIモデルのことです。
テキスト、画像、音声、動画を入力として受け取り、テキストと画像を生成して出力できます。
性能的にGemini 1.5 Proは、GPT-4を上回るといわれています。
Googleのアカウントを持っていれば、無料で使用できます。
以下ページの、「Google AI Studioにログインします。」をクリックすれば使用できます。
※初期は、使用の許諾が必要だったかと思います。(すいませんどうだったか忘れました。。。)
ただ、チャットを使いたいだけであれば、以下のような画面が表示されるはずですので、
真ん中枠の下側「Type Something」の枠に問い合わせしたい内容を記入して「Run」をクリックで確定して問い合わせできます。
モデルを変えたい場合は、右上のModelの部分で設定を変えることができます。
一般的な方はここまで記載した内容だけでいいと思いますが、開発で使用したい方の場合は、生成AIにアクセスするためのキーを取得する必要があります。
このキーを設定してアクセスすることで、誰から問い合わせがあったのかをサーバー側が認識しているんだと思います。
なので、こういったWeb系にアクセスするサービスではアクセスキーの取得が必要な場合がほとんどになります。
では取得していきましょう。
左上の「Get API Key」をクリックします。
APIキーのタブが表示されたら、「キー APIキーを作成」をクリックします。
↓のAPIキーの作成画面が表示されます。
Google Cloud プロジェクトを検索というところでプロジェクトを選択します。
※プロジェクトがなければ生成画面が表示されると思います。
APIキーを生成というボタンをクリックで、以下の画面が表示されキーが生成されますので、コピーボタンをクリックして、キーをコピーします。
注意
APIキーは誰かに見せたり、どこかに投稿したりは絶対にしないでください。
他人が、あなたのキーでアクセスできるようになりセキュリティーてきに絶対NGです。
ソースコード上にAPIキーを直接書き込んで制御してもいいですが、流出の可能性をなくすために、パソコンの環境変数に設定して、それをプログラムから参照して使用することが一般的となっています。
ですので、この記事でもどうように実施します。
では設定していきます。
まずは、Windowsの検索窓に「システム環境」と入力して、「システム環境変数の編集を起動」する
表示された「窓の環境変数(N)」をクリック
次は、「システム環境変数」の「新規(W)」をクリックします。
編集窓が表示されるので、以下の通り入力
変数 : GEMINI_API_KEY
変数値 : 先ほどコピーしたキーを設定
あとはこれまで開いた窓を順にすべて「OK」クリックして閉じてください。
はい。これで環境変数の設定は完了です。
ちなみに、この作業はキーが変わらない限りは再度実施する必要はありません。
まずはライブラリのインストールです。
以下の通りコマンドを実行し、langchain-google-genaiをインストールします。
pip install langchain-google-genai
まずはプログラムの全体です。
import os
from langchain_google_genai import GoogleGenerativeAI
from langchain_core.prompts import PromptTemplate
def main():
api_key = os.environ.get('GEMINI_API_KEY')
llm = GoogleGenerativeAI(model="gemini-1.5-flash", google_api_key=api_key)
template = """Question: {question}
Answer: Let's think step by step."""
prompt = PromptTemplate.from_template(template)
chain = prompt | llm
question = "How much is 2+2?"
print(chain.invoke({"question": question}))
if __name__ == '__main__':
main()
なんかリンゴで分かりやすく回答をくれました!!
※そんなんいらん。。。
以下の処理で、先ほど設定したAPIキーを取得します。
api_key = os.environ.get('GEMINI_API_KEY')
つづいて、以下で、GeminiへのアクセスするようのLLMインスタンスを取得しています。
llm = GoogleGenerativeAI(model="gemini-1.5-flash", google_api_key=api_key)
このあとの処理はこれまでの記事で説明しる内容と基本的には一緒ですので、そちらを参照ください。
LLMがOllamaとなっていて質問内容などは違いますが、基本的にはやっていることは同じです。
システム環境変数を設定するなどめんどくさいことは増えますが、ローカルで動かすのとは比較にならないほど応答が速いです。(ローカルだと10分くらいかかるのが、Webだと2秒とかで返ってきます。)
これまではLocalLLMで十分じゃん!と思っていましたが、もう戻れないかもしれないです。。。
ただ、WEBのものを使用すると無料のものだと制限があったり、料金がかかるものだとコスト的に難しいこともあるかと思いますので、遅くてもいいことはローカルで、早い方がいい場合はWebでと使い分けするのがいいかもしれませんね。
ちょっと、これからそれぞれを使い分けで使用するなども考えて見ようかなと思います。
最後に、Pythonの基礎を学びたい方は以下がおすすめです。私も持っていてたまに眺めて勉強していますものですのでぜひ購入して学習してみてください。
langchainについて学びたいという方は,以下をちょっと見繕ってみましたので、参考にしてみてください。