AIエージェント自作
by
ナツ
×
Copy
Open
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Slide 1
Slide 1 text
AIエージェント自作 5/16 大LT
Slide 2
Slide 2 text
自己紹介 名前:ナツ 最近の趣味:SFアニメ見ること 一言: LT半年ぶりだから10分に収めるの大変 twitter: @mtdnot
Slide 3
Slide 3 text
経緯 先輩からリクエスト来てたのでAIの作り方をLTのネタにするかってなった LLMは無理だが、AIエージェントの作ってみたい
Slide 4
Slide 4 text
AI agentの例
Slide 5
Slide 5 text
AIエージェントの大まかな設計について伝えること - LLM APIの抽象化レイヤー - エージェントの手足 - 承認フロー
Slide 6
Slide 6 text
エージェント3分クッキング
Slide 7
Slide 7 text
LLM API抽象化レイヤー - 各プロバイダーで APIの形式が異なる - モデルを変えたい時に ここの設定で変えたい
Slide 8
Slide 8 text
プロバイダー間で仕様違う問題 APIを送る時のリクエスト // OpenAI / Anthropic { role : “user”, content : “質問” } // Google { role : “user”, parts: [{ text: “質問”}] }
Slide 9
Slide 9 text
データこねこねしてどのプロバイダーも同じ仕様にする 原則はどのプロバイダーでも共通
Slide 10
Slide 10 text
おすすめのツール この辺の実装をしてくれているもの - LiteLLM(今回使った) - Vercel AI SDK - aws Bedrock(awsと相性良く認証周り強い) そもそもプロバイダー自体を統合しているプロバイダー - OpenRouter
Slide 11
Slide 11 text
できたもの(テキストを返してくれるもの)
Slide 12
Slide 12 text
Function Calling(外部ツール呼び出し) toolCalls?: ToolCall[]; // 使用されたツールの呼び出し LLMがどのツールをどう呼ぶかの決まり 例: { “name” : “readFile”, “arguments” : {“path : “README.md”} }
Slide 13
Slide 13 text
ツールの作成(AIの手足) - 定義(JSON Schema) LLMの説明書 - 処理(TypeScript) CLIツール作る感じ - サンドボックス 権限や制約の管理
Slide 14
Slide 14 text
ツールの定義 ツールの概要と使い方をJSON Schemaで記述する
Slide 15
Slide 15 text
ツールの実装 ファイルの読み込み ファイル操作ライブラリに - 容量制限(コンテキスト保護 ) - サンドボックス - 例外処理 を追加したもの
Slide 16
Slide 16 text
サンドボックスとコンテキスト保護
Slide 17
Slide 17 text
ツールの実行 3. tool_callsでモデルがwikiを読まないと答えられないと判断 4. tool_results=1で1件の読み取り結果を取得した 5. massages=4 LLM自体はステートレス、会話内容覚えてない。 だから、直近2件のメッセージとツール呼び出しと結果を送信 6. 最終的な答えを送信
Slide 18
Slide 18 text
なぜか処理速度10倍になった 最低限の機能・情報しか入れてないため 特定の条件なら結構早くなる
Slide 19
Slide 19 text
ちなみに合ってる
Slide 20
Slide 20 text
システムとAIエージェント 運用 5/16 大LT
Slide 21
Slide 21 text
ところで 安全にAI使ってますか?
Slide 22
Slide 22 text
最近の出来事:AIに管理者権限を剥奪された事件 権限管理はしっかりしないといけないと思った
Slide 23
Slide 23 text
承認フローの実装 ツール定義に承認が必要なコマンド(書き換え、削除など)は、設定を加える。 ツール実行時に、ここをチェックすることで、安全装置を作る
Slide 24
Slide 24 text
CUIだけだと日用使いが大変なので、 次はこれを運用し続けるためにGUIで実装します
Slide 25
Slide 25 text
エージェント開発で大事なこと(唐突) - AIエージェントの実用化例はすごく少ない 一部のスタートアップが公開しているブログか 論文から実装する必要がある - AIエージェントはコンピュータ上で人間とほぼ同じ なので、社内サービスの構築例などを参考にする
Slide 26
Slide 26 text
承認フロー 承認フローってどうやって仕組み化するんやろ? せや!ググるか! ( ・∇・)
Slide 27
Slide 27 text
ワークフローシステム 承認フローを含め、業務フローをワークフローシステムというもので動かしているらしい。 また、ワークフローエンジンなるもので動いてるらしい
Slide 28
Slide 28 text
ワークフローエンジン Inngest - API豊富 - イベント駆動 - TypeScript / Python / Go に対応
Slide 29
Slide 29 text
承認画面作成 ローコードでウェブアプリを作れるソフトを使う AIで書かせるより、いくつか優れている - 運用・保守 - 修正の早さ - 楽さ
Slide 30
Slide 30 text
appsmith - 社内向けウェブツール作るやつ - いろんなデータソースと繋がる (今回はREST APIだけ 外部サービス目的ならn8nも良い) - ローコードで楽 - OSS
Slide 31
Slide 31 text
制作過程
Slide 32
Slide 32 text
30分格闘して できた
Slide 33
Slide 33 text
ログ
Slide 34
Slide 34 text
ワークフローエンジンとか追加すると何が嬉しいか 以下のような責任(機能)を外部に任せることができること 関心の分離、責務の分離とかって言われる - いつエージェントを起動するか - どのようなフローで処理をするのか - LLMの性質上ステートレスであるから、外部に状態を持たせる。 - 通知、監視、管理のための機能を実装しなくて良い! <-ここ大事 次のスライドでAIの外部で機能追加した例を紹介します。
Slide 35
Slide 35 text
通知 _AI_
Slide 36
Slide 36 text
みんなでAIを活用するには - なんのサービス使ってたっけ - どう使うっけ - どういうアーキテクチャで 動いてるんこれ エージェントのための マニュアル作り大変 ->どこかでまとめる必要がある ↑なんか知らんが裏側で動きまくっ てるソフトウェアたち
Slide 37
Slide 37 text
IDP(内部開発者プラットフォーム) 引用:https://www.sbbit.jp/article/cont1/132753
Slide 38
Slide 38 text
Backstage サービスの一元化 - github repo - openapi - docs - 依存サービス - … などの情報をまとめられる プラットフォームエンジニアリングの実践例としてよく語られる (spotifyが社内のサービス管理するために開発した)
Slide 39
Slide 39 text
承認フローをポータルで実用化した(iframeで接続してるだけ)
Slide 40
Slide 40 text
何が嬉しかったの? - サービス間のAIのコンテキスト保持させれたら任せられる範囲が増える - エージェントや人が見たときに、サービスの関係性が明瞭になった
Slide 41
Slide 41 text
サービス連携 議事録サービス+タスク管理サービス+日程管理サービス (notion,tl;dv+plane+googleカレンダー) 単にタスクを登録するとかではなく、 プロジェクト全体を管理できる 会計とか
Slide 42
Slide 42 text
肥大化
Slide 43
Slide 43 text
おまけ!失敗から学ぶAIエージェント(時間あれば) 実際に組織にAIを導入するとどうなるのか
Slide 44
Slide 44 text
導入事例1 ワイ「時代は AIや! OpenClaw導入して効率化したろ! (^ω^) みんな喜ぶやろなあニタァ」 タスク管理 slack github projects
Slide 45
Slide 45 text
No content
Slide 46
Slide 46 text
プロンプトインジェクションs
Slide 47
Slide 47 text
下手したらデータかネットワークやられてた 2つ目:イベント運営 技術座談会というイベントで、マニュアルや議事録からタスク管理 をさせようとした。後メールチェックとか
Slide 48
Slide 48 text
失敗から学ぶAIエージェント2🤙🪚🩸
Slide 49
Slide 49 text
No content
Slide 50
Slide 50 text
教訓 AIとAIの生成元のマニュアルに依存してしまった 意思決定を全任せにする設計にしてはいけない
Slide 51
Slide 51 text
完走した感想 - 必要な機能のみを実装することで処理時間が1/10になる事例があった - エージェントの原理を理解できた ->オーダーメイドのエージェントを作れるようになった - アーキテクチャの勉強になった - エージェントや人の運用の勉強できた - 新機能を実験できる
Slide 52
Slide 52 text
ご清聴ありがとうございました! 参考図書 左:購買に売ってました 右:そのうち図書館に返します どちらも面白かったです ぜひ読んでみてね