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

ご清聴ありがとうございました! 参考図書 左:購買に売ってました 右:そのうち図書館に返します どちらも面白かったです ぜひ読んでみてね