Open4

PydanticAIとGeminiでAI Agent

mofuteqmofuteq

はじめに

これまでLangChainを使って生成AIを扱ってきましたが、LangChain固有の御作法に振り回される事が多く辟易としてきたため、よりPythonライクに書けるPydanticAIに入門することにしました。

生成AIですが、ローカルLLMなど色々と試したいところですが、手持ちのGPUはRTX 2070 Super(VRAM 8GB)と、昨今のローカルLLMをフルに動かすにはVRAMが足りません。

さらに言えば、AI Agentを試すにはFunction Callingに対応した例えばLlama 3.2などが必要になるなど、考慮しないと行けない項目が増えてしまうので、今回はAPIが無料で利用できるGeminiを使ってAI Agentを試します。

ソースコードは以下のレポジトリにあります。
https://github.com/mofuteq/pydanticai_gemini

mofuteqmofuteq

環境構築

Python

まずはuvを使って環境を整えます

uv init -p 3.13.3
uv venv -p 3.13.3

今回使うライブラリを一通りインストール

uv pip install pydantic-ai python-dotenv google-generativeai ipykernel
source .venv/bin/activate

vscodeを使って開発するので、uvの仮想環境をもとにkernelを作成して利用できるようにしておきます。

ipython kernel install --user --name=pydanticai_gemini

Gemini

Google AI StudioでAPIキーを取得します
https://aistudio.google.com/
.envファイルを用意してAPIキーを記載します。

.env
GOOGLE_API_KEY=hogehoge

.gitignoreに.envを追加しておきます。

.gitignore
.env

ここまでくればあとはソースコード書いて実行していきます。

mofuteqmofuteq

google generativeaiを使ってテスト

PydanticAIに入る前に、念の為先ほど作成したAPIキーの動作確認を行います。

main.py
import os
import google.generativeai as genai
from dotenv import load_dotenv

# .env読み込み
load_dotenv()
# APIキー
GOOGLE_API_KEY=os.getenv('GOOGLE_API_KEY')
genai.configure(api_key=GOOGLE_API_KEY)
 
gemini_pro = genai.GenerativeModel("gemini-2.0-flash")
prompt = "Hello!"
response = gemini_pro.generate_content(prompt)
print(response.text)

ターミナル確認すると...

Hello there! How can I help you today?

動いてそうですね。

mofuteqmofuteq

Githubに誤って.envを上げてしまった場合の対処法

前項までに.gitignoreを書いたつもりが、実際には存在しなかった(意味不明)ため、Github上に.envが上がってしまいました。

まずは深呼吸して他に同じような例がないか検索したところ、先人達も同じようなミスをしていたため、Github公式と合わせて対処方法を参考にさせていただきました。
https://docs.github.com/ja/authentication/keeping-your-account-and-data-secure/removing-sensitive-data-from-a-repository

gitの履歴から.envを削除

 git filter-branch --force --index-filter \
"git rm --cached --ignore-unmatch .env" \
--prune-empty --tag-name-filter cat -- --all

.gitignoreを用意

.gitignore
.env

.gitignoreステージ&コミット

git add .gitignore
git commit -m "add .gitignore"
git push origin --force --all

これでコミット履歴からも.envから消えているはずです。