【サクッと】Python&Gemini APIでCLI AI Agent作ってみた
はじめに
AI Agentは兎にも角にもとりあえず作ってみようという記事を読んだので、簡単に作ってみました。
いくつかの概念は抽象的に理解しやすい。沸騰したお湯は熱して待つだけ。他の概念は実際に試してみる必要がある。自転車の仕組みは、実際に乗ってみないと理解できない。
やったこと
PythonとGemini APIを使用してCLIで動作するAgentを作ってみました。一般的なLLMチャットアプリにあるような機能をCLIでそれっぽく再現してます。GeminiAPIは無料枠あります。
コンテキスト管理
基本的にはGenai sdkを使ってチュートリアル通り作れば簡単に実装できます[1]。
ただし、コンテキストの永続化だけはSQliteで自前で用意しました。
SQliteはDBサーバーが不要なファイルベースの軽量DBライブラリで、
import sqlite3
するだけで簡単に使えます[2]。
Gemini APIのチャットクライアントですが、チャット中は暗黙的に履歴を保持してくれます[3]。ただし、切断後もチャット履歴をコンテキストとして保持したい場合は、チャット履歴を永続化して、チャットクライアントの初期化時にhistory=に渡す必要があります。
今回は、簡単な方法として、ファイル=チャットルームとして、それぞれのチャットルームのコンテキストは独立しています。実際のLLMアプリでは、異なるチャットルームにおいてもユーザーに対する共通のコンテキストがあったりするので、全体のコンテキスト管理と、ルームごとのコンテキスト管理の使い分けみたいなのもやりたいです。
動作
一度チャットを閉じても(Exitを入力で退出),一番最初に指示した
「カタカナで話して」という指示を守ってくれています.(動画が小さくてわかりにくいです🙇)


コード
まとめ
SDKを使えばお手軽にAI Agent作れました!大半のことはAPI側で良しなにやってくてているので、コンテキスト管理だけ実装する必要があるかなと思います。前提知識を持たせておきたい場合もコンテキストとして渡せば良いので簡単ですね!
参考
[1]https://ai.google.dev/gemini-api/docs/text-generation?hl=ja#multi-turn-conversations
[2]https://docs.python.org/ja/3/library/sqlite3.html
[3]https://ai.google.dev/gemini-api/docs/caching?hl=ja&lang=python
Discussion