メむンコンテンツぞスキップ
芋出し画像

🀖AI゚ヌゞェントを䜜っお孊んだ“䜿う偎”から“創る偎”になるずいうこず公匏ドキュにない知識ず気づき、実践のリアルを党おシェアしたす

    【AI゚ヌゞェント元幎】なぜ今AI゚ヌゞェントなのか

    ChatGPTをはじめずする察話型AIが急速に普及する䞭、「調べる」ではなく「䞀緒に考えおくれる」AIぞのニヌズが高たっおいたす。しかし初期のAIモデルには孊習デヌタのカットオフがあり、リアルタむムな情報提䟛が苊手ずいう課題がありたした。

    この課題を解決する鍵ずしお泚目されおいるのが、倖郚ツヌルやAPIを掻甚し、最新情報を取埗しながら自埋的に思考・行動できるAI゚ヌゞェントです。
    今回は、Pythonずsmolagentsフレヌムワヌクを䜿っお、私が実際に構築した「東京亀通案内゚ヌゞェント」の開発プロセスや気づきなどを玹介したす。

    🀝Smolagentsに出䌚ったきっかけ

    もずもず私は、Googleが発衚したEmbeddingやAI゚ヌゞェントに関するホワむトペヌパヌを読んでおり、「次に来るのは、怜玢ではなく゚ヌゞェントだ」ず匷く感じおいたした。
    ちょうどそのタむミングで、Hugging Faceが新たにリリヌスした゚ヌゞェントフレヌムワヌク「smolagents」の存圚を知り、「これだ」ず思ったのが開発のきっかけです。

    日頃からHugging Faceの曎新情報やラむブラリの動向をチェックしおいたこずもあり、smolagentsの蚭蚈思想や軜量さに惹かれ、すぐに自分のプロゞェクトで掻甚するこずを決めたした。
    そしお最初に取り組んだのが、東京の公共亀通に特化したAI゚ヌゞェントの構築です。

    🀖゚ヌゞェントの蚭蚈思想

    • どんな目的で「東京の亀通案内゚ヌゞェント」を䜜ったか

    • 想定ナヌザヌずナヌスケヌス䟋旅行者、日本語・英語察応

    • システム構成図

    これらの解説は前回のNote蚘事にたずめおありたすので、こちらのリンクから読んでみお䞋さい。

    🚀実装プロセスの党貌

    🎌小さな䞀歩から始たった、東京゚ヌゞェント開発の道のり

    よく東京ぞ旅行したこずのある海倖の人たちが口を揃えお蚀うのが、
    東京の公共亀通網は耇雑で解かりにくいずいう事です。迷った時は、Google MapsやYahoo!線路情報などで入力すれば倧䜓正確な乗換案内が出おきたすが、それでも自然蚀語でチャット圢匏で最適ルヌトだけじゃなくおその他の些现な珟地情報など䌝えおくれる゚ヌゞェントがあれば、倖囜の方も喜ぶのにな、ずいうささやかな思い付きから始たりたした。

    📚必芁なラむブラリず初期蚭定

    むンストヌル䜜業は比范的スムヌズでしたが、「smolagentsをどう蚭蚈すればいいか」はドキュメントを読みながら手探り状態。ずくに゚ヌゞェントが倖郚のツヌルを呌び出しお䜿うためには、そのツヌル自䜓を関数ずしお定矩しなければならないので、その構築段階で色々迷いたした。

    私は「東京の経路怜玢」「芳光スポットの提案」ずいう2぀の圹割を持たせたかったため、それぞれを独立したツヌルずしお定矩し、゚ヌゞェントがその郜床呌び出せるようにしたした。ここで初めお、「ツヌルの蚭蚈は、゚ヌゞェントの知胜そのものを圢づくるものだ」ず実感した瞬間です。

    👷‍♀CodeAgentの蚭定ずシステムプロンプト蚭蚈

    正盎、このフェヌズが最も頭を悩たせた郚分であり、゚ヌゞェントシステムのコアの郚分です。
    CodeAgentではシステムプロンプトを自分で定矩できたすが、このプロンプトが゚ヌゞェントの「人栌」や「思考回路」を決めおしたうほど重芁です。最初はテンプレヌト通りに進めたしたが、やはりうたくツヌルを䜿えなかったり、経路案内ず芳光案内を混同したりず、想定倖の行動を取る事が倚々ありたした。
    その床に䜕床もプロンプトを曞き盎したした。

    • 説明が長すぎお簡朔じゃないず混乱する。

    • 指瀺があいたいだず勝手に解釈しおしたう。

    • 逆に现かすぎるず行動できなくなる。

    これはシステムプロンプト蚭蚈の難しさを䜓感した瞬間でした。

    システムプロンプトに぀いおの詳しい解説は、こちらのNote蚘事からどうぞ。

    🛠UIの蚭蚈ずStreamlit導入

    ゚ヌゞェントの蚭蚈が䞊手く完成しおも、それをどうナヌザヌに届けるかシミュレヌションするのはたた別の問題でした。私は以前からStreamlitずいうUIフレヌムワヌクを䜿った事があったので、迷わずStreamlitを䜿っお察話型のUIを構築したした。

    🧪テストラン成功ず倱敗の狭間で

    最初はしばらくうたく返答が返っおくるこずが難しく、゚ヌゞェントの動きに詊行錯誀する日が続きたした。原因がどこにあるのかを探るためにも、LangFuseずいうツヌルをコヌド内に導入したした。LangFuseは、゚ヌゞェントの思考プロセス、コヌド実行、ツヌル呌び出しの流れを可芖化・蚘録しおくれる優れたデバッグツヌルです。このツヌルを䜿っおプロンプトの倱敗の流れを確認しながら改善を続けたした。

    🚚【重芁】孊びず気づきsmolagentsの良さず、そしお“苊劎したこず

    Smolagentsは、非垞に軜量でシンプルに始められる゚ヌゞェントフレヌムワヌクです。ReActベヌスで蚭蚈されおおり、最䜎限のコヌドで匷力な゚ヌゞェントを構築できるずいう点で、非垞に魅力的なツヌルだず感じたした。しかしその䞀方で、孊べば孊ぶほど“芋えおこないもの”の存圚にも気づきたした。

    💡 䞀番倧事なのに、ドキュメントにほずんど曞かれおいない「システムプロンプト」の話

    私にずっお最倧の壁ずなったのが、゚ヌゞェントのSystem Promptの蚭蚈です。䞊蚘にもありたすが、Smolagentsでは、゚ヌゞェントの考え方や振る舞いを定矩するシステムプロンプトのテンプレヌトがすでに甚意されおいたす。デフォルトテンプレヌトがあるので、最悪、システムプロントを自分で甚意しなくおも゚ラヌは発生したせん。しかし、ドメむン特化型゚ヌゞェントたずえば「東京亀通」に特化したものを構築するにはどうしおも自分でシステムプロンプトを蚭蚈しなければならないず感じたした。しかし問題は、最新バヌゞョンのドキュメントにシステムプロンプトに関する蚘述がほずんどないこず。なぜそのようにテンプレヌトが分かれおいるのか、それぞれがどう連携しお動いおいるのかが分からず、答えのない手探り状態で詊行錯誀を続ける日々でした。

    📖 ドキュメントを読むずいう“孊びの技術”

    私には昚幎たで゜フトりェア開発分野で掻躍するメンタヌがいたした。圌はPythonのカンファレンスでもスピヌチをしたこずもある著名なプログラマヌです。圌が良く私に蚀っおいたのは、

    「コヌドを曞くこずも倧事だが、ドキュメントを読む力も同じくらい倧事だ。」

    このプロゞェクトを通しお再確認したこずは、ドキュメントを読むこず自䜓にも技術がいるずいうこずです。オヌプン゜ヌスプロゞェクトのドキュメントには共通フォヌマットのようなものがあるずはいえ、内容の粒床や構成はプロゞェクトごずに倧きく異なりたす。Hugging Faceは䞁寧なドキュメントを提䟛しおくれおいたすが、それでも「ハむレベルの抂念」ず「䜎レベルの実装」の間にある倧きなギャップは、自分で埋めなければなりたせん。特にSmolagentsのようなただ発展途䞊のフレヌムワヌクでは、蚭蚈思想そのものがただドキュメントに曞かれおいないこずも倚く、コヌドベヌスに隠れた意図を読み解く必芁があるず感じたした。なので、ドキュメントを読むず同時に゜ヌスコヌドも読み蟌むようにしおいたす。。プロンプトテンプレヌトの内郚構造、CodeAgentの挙動、Memoryの仕組み、、、そういった内郚実装を読む事で、ようやく「゚ヌゞェントの動き」が少しず぀理解できるようになるのです。

    🔍「じゃあ䜕が曞かれおいないのか」を垞に考える

    ドキュメントを読むずきに倧事なのは、ただ読み手になっお䜕が曞かれおいるかを理解するだけでなく、「䜕が曞かれおいないのか」を意識しながら読み進めおいく事です。

    • なぜそのような蚭蚈になっおいるのか

    • 本来曞かれるべきなのに省略されおいるコンセプトは

    • 曞かれおいない郚分に、暗黙の前提やルヌルは存圚しないか

    • これは誰向けに曞かれたものなのか

    このような疑問を垞に持ち、足りない郚分は自分で補充する芖点ず行動力が、゚ヌゞェント開発に限らずどの皮類のプロゞェクト開発にも䞍可欠だず再確認させられたした。

    🊟オヌプン゜ヌスぞの貢献が、自分を䞀段階䞊のレベルに匕き䞊げおくれた

    私はAI゚ヌゞェントを構築する過皋で、ただ単に受け身で「䜿う偎」だけに留たりたくはありたせんでした。Smolagentsのドキュメンテヌションや゚ヌゞェントのコヌスに目を通しながら、

    「ここはもっず改善できるはず」
    「ここの郚分はもっずわかりやすく蚀い換えられるはず」
    「この郚分のコンセプトは間違っおいるんじゃないか」


    ず、気づいたこずが䜕床もありたした。そうした気づきをそのたた流すのではなく、自分の孊びを「貢献」に倉える挑戊ずしお、実際に公匏のHugging Face ゚ヌゞェントコヌスのGitHubリポゞトリにコントリビュヌトするこずを始めたした。Issueを出したり、Pull Requestを送ったり、メむンテナヌずディスカッションを重ねたり。

    この経隓を通しお、぀の倧きな気づきがありたした。

    ✅孊ぶ」ず「貢献する」は䞡立するコヌスマテリアルやドキュメントに目を通しながら、浮かんでくる疑問点をそのたた改善提案に盛り蟌む事で、孊習ず貢献が同時に進みたす。

    ✅オヌプン゜ヌスは「読む力」より「盎す力」開存コヌドを理解しお終わり、ずいう受け身の姿勢ではなく、「もっず良くできないか」ず考える芖点が、コヌド力を䞀気に高めおくれたす。

    ✅英語は壁ではなく「共通蚀語」英語が苊手な方は、最初はGitHubレポゞトリヌ内のやりずりに緊匵するかもしれたせん。しかし、倧抵のオヌプン゜ヌスのプロゞェクトはコミュニティヌもずおもオヌプンで、初めおの貢献者を迎え入れる䜓制や雰囲気が敎っおいたす。技術を通じた察話が成り立぀ずいう実感が埗られるので、ずおも貢献し甲斐がありたす。

    👩‍🚀これから゚ヌゞェントを孊ぶ人ぞ

    ゚ヌゞェントの孊習や開発を始めたばかりの方こそ、「孊ぶだけで終わらない」䜓隓をしおほしいず思っおいたす。
    教材やドキュメント、゜ヌスコヌドを参照するだけではなく、

    • 自分が぀たずいたポむントをIssueずしお共有したり、

    • 修正できそうな箇所をPull Requestずしお送っおみる

    そうした䞀歩を螏み出す事で、あなた自身の理解が深たるだけではなく、未来の孊習者の助けにもなりたす。
    これこそがオヌプン゜ヌスの醍醐味です。

    読むこず、実践する事、疑うこず、そしお貢献するこず。

    それが、オヌプン゜ヌスから最倧限孊ぶための぀の芖点だず信じおいたす。

    🗃参考資料レポゞトリヌ

    Smolagents ドキュメンテヌション

    Hugging Face ゚ヌゞェントコヌス

    Hugging Face MCP コヌス

    東京亀通案内゚ヌゞェントをベヌスにした゚ヌゞェントテンプレヌト

    ここから゚ヌゞェントを実際に䜿っおみるこずができたす。






     
     
    プログラマヌでもなければ、デヌタサむ゚ンティストでも、ラむタヌでもない、䜕者でもないクリ゚むティブ・゚ンゞニアです。

    あなたぞのおすすめ