登録して招待リンクを共有すると、動画再生報酬と紹介報酬を獲得できます。

検索結果 クラスメソッド
クラスメソッド コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
クラスメソッド を含む検索結果
クラスメソッドのくらにゃんとおしゃしんをとったルン💚 ボクのTシャツがとってもかっこよかったルン!ヴェルディ君もにあってたルン💚 くらにゃん、ありがとうルン!! これからもおともだちルン💚 #verdy# #リヴェルン# #クラスメソッド# #くらにゃん#
もっと見る
現在の味スタはくもり☁️ 少し肌寒いので、上着があると安心です🧥 本日は『クラスメソッドDAY』💚 スタジアム来場先着15,000名様に『オリジナルTシャツ』をプレゼント🎁 当日券もまだまだ販売中です! 購入は👉 GW初日のお出かけにぜひ味スタへ! 本日もご来場お待ちしています🏟️ #verdy# #東京ヴェルディ#
もっと見る
【申込受付中!】 「Cursor Meetup Sapporo」を開催します🎉 ついにCursorMeetupは海を超えます! さらに! 特別ゲストの予定も!(詳細は後日発表します) ぜひ皆様ご登録ください! 📅08/01(土) 16:00~ 📍クラスメソッド株式会社 札幌オフィス ▼申込 #CursorMeetupSapporo#
もっと見る
# ADKの便利で実践的な使い方 🔧 標準ワークフローでは実現できない独自のオーケストレーションロジックが必要な場面、ありますよね。ADKのCustom Agentsなら、`BaseAgent`を継承して自由自在に制御フローを組み立てられます! 📌 タイトル:Custom Agents — BaseAgent継承による自由な制御フロー設計 🔗 URL: 🧩 概要 Custom Agentsは、`google.adk.agents.BaseAgent`を継承し、`_run_async_impl`メソッドを実装することで、任意のオーケストレーションロジックを構築できる仕組みです。SequentialAgentやParallelAgentなどの定型パターンでは対応できない、条件分岐・ループ・外部状態同期といった高度なワークフローを実現します。サブエージェントの呼び出し、セッション状態の共有、イベントの伝播がフレームワーク標準で管理されます。 🛠 使い方 Custom Agentの基本構造は以下のとおりです。 `google.adk.agents.BaseAgent` を継承して `MyCustomAgent` クラスを定義します。フィールドとして `story_generator`、`critic_agent`、`tone_checker` の3つの `LlmAgent` を宣言します。`_run_async_impl` メソッド内で、まず `self.story_generator.run_async(ctx)` でストーリーを生成し、次に `self.critic_agent.run_async(ctx)` を `for i in range(2)` で最大2回ループして批評・修正を行います。最後に `self.tone_checker.run_async(ctx)` でトーンを確認し、`ctx.session.state.get("tone_result")` が `"negative"` の場合は `self.story_generator.run_async(ctx)` で再生成する条件分岐を行います。各サブエージェントの実行は `async for event in ... yield event` パターンでイベントを伝播します。 サブエージェント間のデータ共有には`ctx.session.state`を使います。 エージェントAが `ctx.session.state["analysis_result"] = result` で結果を書き込み、エージェントBが `ctx.session.state.get("analysis_result")` でそれを読み取ります。 🏗 実践的な使い方 **レガシーステートマシンの再現**: 既存の状態遷移ロジックをCustom Agentに移植できます。`_run_async_impl`内でPythonの標準的な制御構文(if/elif/while/try-except)を使い、状態ごとに異なるサブエージェントを呼び分けます。 `_run_async_impl` 内で `state = "INIT"` から開始し、`while state != "DONE"` でステートマシンを実装します。`"INIT"` 状態では `self.init_agent.run_async(ctx)` を実行し、`ctx.session.state.get("next_state", "PROCESS")` で次の状態を決定します。`"PROCESS"` 状態では `self.process_agent.run_async(ctx)` を実行後 `"REVIEW"` に遷移します。`"REVIEW"` 状態では ` を実行し、`ctx.session.state.get("approved")` が真なら `"DONE"` に、偽なら `"PROCESS"` に戻ります。 **外部状態との同期**: データベースやAPIから取得した状態に基づいて実行パスを動的に切り替えられます。例えば、外部システムのステータスを確認してから次のエージェントを選択するパターンが実現可能です。 💡 ユースケース 🔄 レガシーシステムの状態遷移ロジックをAIエージェントとして再実装 🔀 中間結果に基づく条件分岐ワークフロー(品質チェック → 不合格なら再生成) 🔗 外部API/DBの状態に応じたエージェント選択 🔁 批評・修正の反復ループ(最大N回で打ち切り) ⚠️ 注意点 - `sub_agents`リストには、`_run_async_impl`内で直接呼び出すすべてのサブエージェントを含める必要があります。含めないとフレームワークのライフサイクル管理が正しく動作しません。 - `ctx.session.state`は全サブエージェント間で共有されるため、キー名の衝突に注意してください。プレフィックスをつけるなどの規約を決めておくと安全です。 - 無限ループを防ぐため、ループ処理には必ず最大回数や終了条件を設けてください。 ✨ Custom Agentsは、定型パターンでは収まらない独自のビジネスロジックをエージェントに組み込むための最も柔軟な手段です。ステートマシンの移行や複雑な条件分岐が必要な場面で、ぜひ活用してみてください! #ADK# #AIAgent#
もっと見る
# ADKの便利で実践的な使い方 ## 🔌 全エージェントに一括適用!ADKのPlugins機能 個別のエージェントにコールバックを設定するのは面倒…ADKの **Plugins** なら、Runnerレベルで全エージェント・全ツール・全LLM呼び出しに横断的な制御を一括適用できます!🎯 ## 📌 タイトル Plugins(プラグイン) ## 🔗 URL ## 🧩 概要 Pluginsは、Runnerレベルで動作するクロスエージェントモジュールです。エージェント個別のCallbacksとは異なり、**一度登録するだけで全エージェント・全ツール・全LLM呼び出しに適用**されます。セキュリティガードレール、ロギング、レート制限などの横断的関心事に最適です。 プラグインはエージェントレベルのコールバックよりも**先に実行される**ため、グローバルポリシーの適用に適しています。 ADKには組み込みプラグインも用意されています:Reflect and Retry Tools、BigQuery Analytics、Context Filter、Global Instruction、Logging Pluginなど。 ## 🛠 使い方 `BasePlugin` を `google.adk.plugins.base_plugin` からインポートし、`InMemoryRunner` を `google.adk.runners` からインポートします。`SecurityGuardPlugin` クラスを `BasePlugin` のサブクラスとして定義し、`__init__` で `super().__init__(name="security_guard")` を呼びます。`before_model_callback` メソッドでは `llm_request.contents[-1].parts[0].text` からユーザー入力を取得し、`detect_injection()` でインジェクションを検出した場合に拒否メッセージ入りの `LlmResponse` を返します。`before_tool_callback` メソッドでは `is_authorized( で権限チェックを行い、未認可ならエラー辞書を返します。いずれも問題なければ `None` を返して通常続行します。最後に `InMemoryRunner` を作成し、`plugins=[SecurityGuardPlugin()]` を渡すだけで全エージェントにこのセキュリティガードが適用されます。 ## 🏗 実践的な使い方 **「Gemini as a Judge」パターンでのインジェクション検出:** `InjectionDetectorPlugin` は `BasePlugin` を継承し、`name="injection_detector"` で初期化します。`self.judge_model = "gemini-flash-lite"` をジャッジモデルとして保持し、`before_model_callback` で `llm_request.contents[-1].parts[0].text` からユーザー入力を取得して `judge_with_flash_lite()` に渡します。判定結果が `"INJECTION"` であれば `audit_log()` で記録し、拒否メッセージ入りの `LlmResponse` を返してブロックします。問題なければ `None` を返します。 `RateLimitPlugin` は `BasePlugin` を継承し、`max_calls_per_minute` パラメータ(デフォルト60)で初期化します。` リストで呼び出し履歴を管理し、`before_model_callback` で直近60秒間の呼び出し回数をカウントします。上限に達していればレート制限メッセージ入りの `LlmResponse` を返し、そうでなければ現在時刻を `call_log` に追加して `None` を返します。 最後に `InMemoryRunner` の `plugins` パラメータに `InjectionDetectorPlugin()` と `RateLimitPlugin(max_calls_per_minute=30)` を渡して、複数プラグインを組み合わせて登録します。 ## 💡 ユースケース - 🛡️ **セキュリティガードレール**:全エージェントに対するインジェクション検出・PII保護を一元管理 - 📊 **統合ロギング**:BigQuery Analyticsプラグインで全エージェントの実行ログを集約 - ⏱️ **レート制限**:API呼び出し回数を制御してコスト爆発を防止 - 🔄 **自動リトライ**:Reflect and Retry Toolsプラグインでツール失敗時のインテリジェントなリトライ - 📝 **グローバルインストラクション**:全エージェントに共通のポリシーや指示を注入 ## ⚠️ 注意点 - プラグインはエージェントレベルのコールバックより**先に**実行されます(優先順位に注意) - プラグインで値を返すと、対応するエージェントレベルのコールバックも含めてスキップされます - 全エージェントに適用されるため、特定エージェントだけに適用したいロジックはCallbacksを使ってください - `on_model_error_callback` / `on_tool_error_callback` フックでエラーハンドリングも可能です - Python v1.7.0+、TypeScript v0.2.5+、Go v0.4.0+、Java v0.3.0+ で利用可能です ## ✨ まとめ Pluginsは「一度書けば全エージェントに適用」を実現する強力な仕組みです。セキュリティ、ロギング、レート制限などの横断的関心事はPluginsに任せ、エージェント固有のロジックはCallbacksに集中させましょう。この分離により、保守性とセキュリティの両方が向上します! #ADK# #AIAgent#
もっと見る
# AIエージェントをソフトウェアに組み込むプラクティス # Deadline & Budget Cascade|期限・予算のカスケード伝播 🎯 エージェントが再帰的にサブタスクを生成して、気づけばコストが数十ドルに。「請求事故」を構造的に防ぐ方法があります。 全体の予算と期限を末端ノードまで伝播させれば、各ノードが自分で打ち切り判断できます。 🔥 解決する課題 エージェントの呼出ツリーが深くなると、各ノードは自分がどれだけのリソースを消費してよいか分かりません。高コストなLLM呼び出しが再帰的に積み重なり、請求事故が起きます。計画-反省の自己ループでは、改善の見込みが薄くても無限にリトライを繰り返しえます。根本原因は「全体の予算と期限がローカルな判断に伝わっていない」ことです。 💡 提案パターン Deadline & Budget Cascade(期限・予算のカスケード伝播)は、呼出ツリーのルートでdeadline(期限)とbudget(トークン・コスト・ステップ数の上限)を設定し、子タスクへ委譲するたびに残り枠を差し引いて伝播します。どの末端ノードでも「今の自分に残された時間・コスト」を知っており、枠を使い切る前に縮退・中断・部分結果返却に切り替えられます。deadlineは相対秒でなく絶対時刻で渡し、伝播時のズレを防ぎます。 ✅ 選定条件 使うとき: - エージェントがサブタスクを再帰的に生成、または複数ワーカーに並列委譲する - 1リクエストのコストが予測困難で、上限を置かないと請求事故が起きうる - タスク完了にSLAや期待値がある 使わないとき: - 呼出ツリーが1段で完結し、タイムアウトだけで十分な場合 - バッチジョブなど時間制約がなくコストも固定的な場合 ⚠️ 落とし穴 - deadlineは絶対時刻で渡すこと。相対秒を渡すと伝播のたびにズレが蓄積します(gRPCのgrpc-timeoutと同じ原則) - 子に全予算を渡さず、予備枠(10〜20%)を親に残すこと。子の結果を集約・フォーマットする時間とコストが必要です - 枯渇時の振る舞い(部分結果返却・人間エスカレーション・縮退モデル切替)を事前に決めておくこと。タイムアウト例外を投げるだけではUXが崩壊します 🔧 実装方針 - BudgetContextデータクラスにdeadline_at(絶対時刻)・max_cost_usd・max_steps・max_tokens・depth・max_depthを持たせ、呼出ツリーのルートで初期値を設定します - 子タスクへの委譲時にchild_budgetメソッドで残り枠からfractionを掛けて分配し、伝播マージン(概ね2秒)を差し引きます。予備枠としてルート予算の10〜20%を親に残します - 各ノードはis_exhaustedで残時間・残コスト・残ステップを確認し、枠を使い切る前に縮退・中断・部分結果返却に切り替えます - 並列子タスクではコストは各子の合算、deadlineは最も遅い子で決まることに注意し、分配比率は子タスクの重要度と予測コストで按分します - 予算消費率(consumed/limit比)をメトリクスとして観測し、閾値超過時にアラートを発火させる仕組みを組み込みます #AIエージェント# #ソフトウェアアーキテクチャ#
もっと見る
『クラスで2番目に可愛い女の子と友だちになった』より、水着姿の天海夕がプライズフィギュアになって登場!開放的な夏の雰囲気と明るい表情が魅力! #クラスで2番目に可愛い女の子と友だちになった# #クラにか#
もっと見る
クラスの男子には内緒ね?
————————————   クラスインサイト   伝承エージェント ———————————— 一瞬で敵の心臓を撃ち抜く 秘密工作員、エージェント 伝承エージェントの魅力を「クラスインサイト」でご覧ください! ▶️ #黒い砂漠# #黒い砂漠PC#
もっと見る