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

検索結果 GoogleADK
GoogleADK コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
GoogleADK を含む検索結果
# ADKの便利で実践的な使い方 ⚡ Python関数をそのままツールに、エージェントもツールに、そして長時間タスクもノンブロッキングで実行 — ADKのFunction Toolsは、ツール定義の柔軟性を極限まで高めます。 📌 タイトル:Function Tools — 関数・エージェント・非同期タスクをツール化 🔗 URL: 🧩 概要 ADKのFunction Toolsでは、Python/TypeScriptの関数をそのままエージェントのツールとして利用できます。さらに、AgentToolを使えばエージェント自体をツールとして別のエージェントに提供できます。Long Running Function Toolsは、動画エンコードやバッチ処理のような長時間タスクをブロッキングせずに実行するための仕組みです。 🛠 使い方 基本的な関数ツールの定義とAgentToolの活用例です。 `google.adk`から`Agent`と`AgentTool`をインポートします。シンプルな関数ツールとして`calculate_price`を定義し、`base_price`(float)、`quantity`(int)、`discount_percent`(float、デフォルト0)を受け取り、合計金額を計算してdictで返します。 エージェントのツール化には`AgentTool`を使います。まず`analysis_agent`を`name="data_analyst"`、`tools=[query_database]`で定義し、次に`main_agent`の`tools`リストに`calculate_price`関数と`AgentTool(agent=analysis_agent)`を含めます。これにより、メインエージェントは価格計算関数とデータ分析エージェントの両方をツールとして呼び出せます。 Long Running Function Toolsの使い方です。 `google.adk`から`LongRunningFunctionTool`をインポートします。非同期関数`encode_video`は`video_url`(str)と`format`(str、デフォルト"mp4")を受け取り、`start_encoding_job`でエンコードジョブを開始してジョブIDを返します。この関数を`LongRunningFunctionTool(func=encode_video)`でラップして`video_tool`を作成し、`Agent`の`tools=[video_tool]`に渡すことで、エージェントがブロッキングなしで長時間処理を実行できます。 🏗 実践的な使い方 **AgentToolによるモジュール化**: 複雑な処理を専門エージェントとしてカプセル化し、AgentToolで公開することで、メインエージェントのinstructionをシンプルに保てます。専門エージェントは独自のツールやプロンプトを持てるため、関心の分離が実現します。 `summarizer`(3行要約)と`translator`(英語翻訳)をそれぞれ`Agent`で定義し、メインの`content_manager`エージェントの`tools`リストに`AgentTool(agent=summarizer)`と`AgentTool(agent=translator)`として登録します。これにより、メインエージェントは要約と翻訳の専門エージェントをツールとして呼び出し、コンテンツ管理の依頼を処理できます。 **Long Running Toolsの活用場面**: バッチ処理、外部APIのポーリング待ち、ファイル変換など、完了まで数秒〜数分かかる処理に最適です。エージェントはジョブIDを受け取り、他のタスクを並行して進められます。 **型アノテーションの重要性**: 関数のパラメータ型と戻り値型を明確に定義することで、LLMが正確にツールを呼び出せます。docstringもツールの説明として使われるため、簡潔で明確に書きましょう。 💡 ユースケース 🧮 計算・変換関数のツール化(価格計算、単位変換) 🤖 専門エージェントのAgentTool化による再利用 🎬 動画エンコード・画像処理の非同期実行 📊 バッチデータ処理のノンブロッキング実行 ⚠️ 注意点 - 関数のdocstringがツールの説明になるため、LLMが理解しやすい説明を書いてください。docstringがないとツールの用途が不明確になります。 - AgentToolで呼び出されたエージェントは、親エージェントのコンテキストとは別のセッションで動作します。状態の共有には注意が必要です。 - Long Running Function Toolsは完了通知の仕組みを別途実装する必要があります。ポーリングや Webhook での通知を検討してください。 ✨ Function Toolsを使えば、既存のコード資産をそのままエージェントに統合でき、AgentToolでエージェントの再利用も自在。開発効率を大幅に向上させましょう! #ADK# #AIAgent#
もっと見る
# 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 2.0の便利だけど知られていない機能 🌍 毎回同じシステムプロンプトやツール定義をLLMに送信するのは、コストもレイテンシも無駄だと感じませんか? ADK 2.0のコンテキストキャッシュ(ContextCacheConfig)は、繰り返し送信されるコンテキストデータをキャッシュし、LLMの呼び出しコストとレイテンシを削減する機能です。Gemini 2.0以降、Python v1.15.0以降、Java v0.1.0以降で利用可能です。 📌 タイトル:コンテキストキャッシュ (ContextCacheConfig) 🔗 URL: 🧩 概要 ContextCacheConfigは、LLMに送信するコンテキスト(システムプロンプト、ツール定義、会話履歴の固定部分など)をキャッシュすることで、トークン消費を削減します。3つの主要パラメータがあります。min_tokensはキャッシュを有効にするための最小トークン数のしきい値(デフォルト0)、ttl_secondsはキャッシュの有効期限(デフォルト1800秒=30分)、cache_intervalsはキャッシュの最大再利用回数(デフォルト10回)です。これらをAppオブジェクトに設定することで、自動的にキャッシュが適用されます。 🛠 使い方 ContextCacheConfigを作成し、Appに設定します。 ```python from import App from google.adk.context import ContextCacheConfig cache_config = ContextCacheConfig( min_tokens=1000, # 1000トークン以上でキャッシュ有効 ttl_seconds=3600, # 1時間キャッシュを保持 cache_intervals=20, # 最大20回再利用 ) app = App( agent=my_agent, context_cache_config=cache_config, ) ``` min_tokensを適切に設定することで、小さなコンテキストでは通常送信し、大きなコンテキストのみキャッシュするように制御できます。 🏗 本番システムへの組み込み方 ・大きなシステムプロンプトや多数のツール定義を持つエージェントで特にコスト効果が高い ・ttl_secondsをワークロードのパターンに合わせて調整する(短い会話→短いTTL、長い会話→長いTTL) ・cache_intervalsをリクエスト頻度に応じて設定し、キャッシュの鮮度とコスト削減のバランスを取る ・コスト削減効果をモニタリングし、パラメータを継続的に最適化する 💡 ユースケース 💰 大規模なシステムプロンプトを持つエージェントのAPI呼び出しコストを削減 ⚡ 繰り返しのツール定義送信を省略してレスポンスレイテンシを改善 🔁 高頻度のリクエストが発生するチャットボットでトークン消費を最適化 📋 固定的なコンテキスト(ルール、ガイドライン等)の再送信を効率化 ⚠️ 注意点 Gemini 2.0以降のモデルでのみ利用可能です。キャッシュが有効な間はコンテキストの変更が反映されないため、頻繁にシステムプロンプトを変更する場合はttl_secondsを短く設定してください。また、cache_intervalsを超えると新しいキャッシュが作成されるため、コスト最適化の効果が変動する可能性があります。 ✨ コンテキストキャッシュは、特にコンテキストが大きく頻繁にリクエストされるシナリオで、コストとパフォーマンスの両面で大きな改善をもたらします。 #ADK# #AIAgent#
もっと見る
# ADKの便利で実践的な使い方 ✋ 「本当にこのメールを送信しますか?」— ADKのAction Confirmationsは、不可逆な操作の前にユーザー確認を挟む、安全なエージェント構築のための仕組みです。 📌 タイトル:Action Confirmations — 不可逆操作の事前確認 🔗 URL: 🧩 概要 ADKのAction Confirmationsは、メール送信、データ削除、決済処理など、取り消しが困難な操作の実行前にユーザーの明示的な承認を求める機能です。エージェントが「送信してよいですか?」と確認し、ユーザーが承認した場合のみ実行されます。これにより、自律的なエージェントでありながら、重要な判断ポイントでは人間のコントロールを維持できます。 🛠 使い方 確認付きツールの定義方法です。 確認付きツールを定義するには、`google.adk` から `Agent` と `ToolContext` をインポートします。`send_email(to: str, subject: str, body: str, tool_context: ToolContext)` 関数では、実際の送信前に `tool_context.actions.request_confirmation(message=...)` を呼び出し、宛先・件名・本文のプレビューを含む確認メッセージを表示します。ユーザーが承認した場合のみ、メール送信処理が実行されます。同様に `delete_records(table: str, condition: str, tool_context: ToolContext)` では、削除対象の件数を事前にカウントし、確認メッセージに件数を含めてユーザーに承認を求めます。これらのツールを `Agent` の `name="admin_assistant"`、`model="gemini-2.5-flash"` に `tools` として渡します。 🏗 実践的な使い方 **確認が必要な操作の判断基準**: 以下の操作には確認を付けることを推奨します。 - 外部への送信(メール、メッセージ、API呼び出し) - データの変更・削除 - 課金が発生する操作 - 権限変更やアクセス制御の変更 決済処理の例として `process_payment(amount: float, currency: str, recipient: str, tool_context: ToolContext)` を定義します。この関数では `tool_context.actions.request_confirmation(message=...)` で送金先・通貨・金額を含む確認メッセージを表示し、ユーザーの承認後に `payment_gateway.charge(amount=..., currency=..., recipient=...)` を実行して決済を処理します。 **確認メッセージの設計**: 確認メッセージには、操作の対象・影響範囲・不可逆性を明確に記載します。ユーザーが判断に必要な情報を過不足なく提供しましょう。 **段階的な確認**: 複数のステップがある場合、各ステップで確認を取るか、最終ステップでまとめて確認するかを設計します。ユーザー体験とのバランスを考慮してください。 💡 ユースケース 📧 メール・メッセージの送信確認 🗑️ データベースレコードの削除確認 💳 決済・送金の実行確認 🔐 権限変更・アクセス制御の変更確認 ⚠️ 注意点 - 確認が多すぎるとユーザー体験が悪化します。本当に不可逆な操作に絞って確認を設定してください。 - 確認メッセージが不十分だと、ユーザーが適切な判断を下せません。操作の影響を具体的に記載しましょう。 - バッチ処理や自動化パイプラインでは確認がボトルネックになります。自動化が必要な場面では確認をスキップする設計も検討してください。 ✨ Action Confirmationsを適切に設定することで、エージェントの自律性と人間の安全管理を両立できます。「取り返しのつかない操作」にだけ確認を入れるのがコツです! #ADK# #AIAgent#
もっと見る
# ADK 2.0の便利だけど知られていない機能 🌍 エージェントが「先週の会話の内容」を覚えていてくれたら、もっと自然なやり取りができると思いませんか? ADK 2.0のメモリ機能は、セッションを超えた長期的な知識をエージェントに提供するための仕組みです。過去の会話や学習した情報を記憶し、必要に応じて呼び出すことができます。 📌 タイトル:メモリ 🔗 URL: 🧩 概要 メモリはStateとは異なり、セッション横断の長期的な知識を管理します。3つのメモリサービス実装が用意されています。InMemoryMemoryServiceは開発・テスト用のインメモリ実装、VertexAiMemoryBankServiceはセマンティック検索ベースの本番向け実装、VertexAiRagMemoryServiceはベクトルベースのRAG実装です。メモリの取得にはPreloadMemory(セッション開始時に自動ロード)とLoadMemory(オンデマンドでロード)の2つのビルトインツールが用意されており、プログラムからはtool_context.search_memory()でアクセスできます。 🛠 使い方 メモリサービスを設定し、エージェントにメモリツールを組み込みます。 ```python from google.adk.memory import InMemoryMemoryService from import PreloadMemory, LoadMemory # 開発用:インメモリ実装 memory_service = InMemoryMemoryService() # エージェントにメモリツールを追加 agent = Agent( name="assistant", tools=[PreloadMemory(), LoadMemory()], ... ) # Runnerにメモリサービスを設定 runner = Runner( agent=agent, memory_service=memory_service, ... ) ``` ツール内からプログラム的にメモリを検索する場合は以下のようにします。 ```python def my_tool(query: str, tool_context: ToolContext) -> str: results = tool_context.search_memory(query="過去の会話") return str(results) ``` 複数のメモリサービスを組み合わせる場合は、カスタムツールを作成して統合できます。 🏗 本番システムへの組み込み方 ・開発時はInMemoryMemoryServiceで素早くプロトタイプし、本番ではVertexAI系に切り替える ・PreloadMemoryで頻繁に必要な情報を自動ロードし、レスポンス品質を向上させる ・メモリに保存するデータの範囲を適切に設計し、不要なデータの蓄積を防ぐ ・カスタムツールで複数のメモリソースを統合し、包括的な知識ベースを構築する 💡 ユースケース 🧠 過去の会話履歴をもとに、ユーザーの好みに合わせた応答を生成 📚 プロジェクトの過去の議論や決定事項を長期記憶として保持 🔍 セマンティック検索で関連する過去のやり取りを自動的に取得 🤝 複数のエージェント間で共有知識ベースとしてメモリを活用 ⚠️ 注意点 InMemoryMemoryServiceはプロセス終了時にデータが失われるため、本番環境では使用しないでください。VertexAI系のサービスはGCPのセットアップが必要です。また、メモリに保存されるデータ量が増えると検索のレイテンシに影響するため、適切なデータ管理戦略を検討してください。 ✨ メモリ機能により、エージェントはセッションを超えた文脈を持つことができます。長期的なユーザー体験の向上に大きく貢献する機能です。 #ADK# #AIAgent#
もっと見る
# ADKの便利で実践的な使い方 🔀 プロンプトだけでエージェントの実行フローを制御するのは不安定になりがちです。ADKのGraph Workflowsなら、ノードとエッジでワークフローを明示的に定義し、AIノードと関数ノードを自在に組み合わせられます! 📌 タイトル:Graph Workflows — ノードとエッジによる明示的なワークフロー定義 🔗 URL: 🧩 概要 Graph Workflowsは、`Workflow`クラスの`edges`パラメータでノードの接続関係を定義し、実行フローを構築する仕組みです。AIエージェントノード、関数ノード、ツールノード、ネストされたWorkflowを混在させることができます。ルーターノードが`Event(route=...)`を返すことで辞書ベースの条件分岐が可能になり、「プロンプトに頼らない予測可能な制御フロー」を実現します。 🛠 使い方 基本的なGraph Workflowの構成です。 `google.adk` から `Workflow` と `Event` をインポートします。ルーター関数 `process_message` は `node_input` の内容に応じて `Event(route="BUG")`、`Event(route="LOGISTICS")`、または `Event(route="CUSTOMER_SUPPORT")` を返します。各ルートに対応する関数(`response_bug`、`response_support`、`response_logistics`)はそれぞれ `Event(output=...)` で応答メッセージを返します。 `Workflow` の `name="support_router"` で、`edges` に2つのタプルを定義します。1つ目は `("START", process_message)` で開始ノードからルーターへ接続し、2つ目は `process_message` の出力を `{"BUG": response_bug, "CUSTOMER_SUPPORT": response_support, "LOGISTICS": response_logistics}` の辞書で各ハンドラーに振り分けます。 順次実行のシンプルなチェーンも定義できます。 `Workflow` の `edges` にタプル `("START", agent1, function1, agent2, function2)` を1つ渡すことで、ノードを順次接続するシンプルなチェーンを定義できます。 🏗 実践的な使い方 **AIフリー関数チェーン + AIノードの混在**: データの前処理や後処理はPython関数で行い、判断が必要な部分だけAIエージェントノードを使います。これによりLLMの呼び出し回数を最小限に抑え、コストと遅延を削減できます。 関数ノード `extract_data` は `json.loads(node_input)` でデータを解析し `Event(output=parsed["content"])` を返します(AI不要)。`LlmAgent` の `analyzer` がデータの分析と要約を行い、関数ノード `format_output` が `Event(output=f"## 分析結果\n{node_input}")` でフォーマットします(AI不要)。 `Workflow` の `name="hybrid_pipeline"` で `edges=[("START", extract_data, analysis_agent, format_output)]` と定義し、関数ノードとAIノードを混在させたハイブリッドパイプラインを構築します。 **カスタマーサポートの自動振り分け**: 問い合わせ内容をルーター関数で分類し、適切な対応エージェントに振り分けます。分類ロジックがコードで明示されているため、動作の予測と検証が容易です。 💡 ユースケース 📨 問い合わせの自動分類・振り分け(バグ/サポート/配送) 🔧 前処理(関数)→ 分析(AI)→ 後処理(関数)のハイブリッドパイプライン 🏭 ETLパイプラインのAI組み込み(抽出は関数、変換にAIを活用) 🔀 ルーティングロジックの明示化によるテスタビリティ向上 ⚠️ 注意点 - ライブストリーミング機能はGraph Workflowsと互換性がありません。 - 一部のサードパーティ連携はGraph Workflowsをサポートしていない場合があります。 - ルーターの辞書にないrouteキーが返された場合のエラーハンドリングを考慮してください。 - ノードは1回の実行で1つの`Event.output`のみを出力できます。 ✨ Graph Workflowsは、AIノードと関数ノードをノードとエッジで明示的に結合し、プロンプトだけに頼らない予測可能なエージェントパイプラインを構築します。コスト効率と信頼性を両立したい場面でぜひ活用してください! #ADK# #AIAgent#
もっと見る
# ADKの便利で実践的な使い方 📄 エージェントの定義をコードではなくYAMLファイルで行えたら、プロンプトの変更やモデルの切り替えが再デプロイなしでできますよね。ADKのAgent Configなら、宣言的なエージェント定義と環境ごとの設定切り替えが実現できます! 📌 タイトル:Agent Config — YAML宣言によるコードレスエージェント定義 🔗 URL: 🧩 概要 Agent Configは、ADKワークフローをコードなしでYAMLファイルとして定義できる機能です。`name`、`model`、`description`、`instruction`といった基本プロパティに加え、`tools`でのツール定義や`sub_agents`でのサブエージェント参照もYAMLで記述できます。`adk create --type=config`でプロジェクトを生成し、`adk web`、`adk run`、`adk api_server`で実行可能です。Pythonからは`config_agent_utils.from_config()`でプログラマティックに読み込むこともできます。 🛠 使い方 基本的なAgent Config YAMLの構成です。 ```yaml # root_agent.yaml name: assistant_agent model: gemini-flash-latest description: ユーザーの質問に答えるヘルパーエージェント instruction: | あなたはユーザーの様々な質問に答えるエージェントです。 丁寧で正確な回答を心がけてください。 tools: - google_search sub_agents: - config_path: specialist_agent.yaml ``` プロジェクトの作成と実行は以下のコマンドで行います。 ```bash # プロジェクト作成 adk create --type=config my_agent # 実行方法 adk web # Webインターフェース adk run # ターミナル実行 adk api_server # APIサーバーモード ``` Pythonから読み込む場合は以下のとおりです。 `google.adk.agents.config_agent_utils` の `from_config()` メソッドにYAMLファイルのパス(例: `"my_agent/root_agent.yaml"`)を渡して、エージェントオブジェクトをプログラマティックに読み込みます。 🏗 実践的な使い方 **環境別の設定切り替え**: dev/staging/prodごとに異なるYAMLファイルを用意し、環境変数でどのファイルを読み込むかを制御します。 ```yaml # config/dev/root_agent.yaml name: assistant_agent model: gemini-flash-latest instruction: | [DEV] デバッグ情報を含めて回答してください。 # config/prod/root_agent.yaml name: assistant_agent model: gemini-2.5-pro instruction: | ユーザーの質問に正確かつ簡潔に回答してください。 ``` `os.getenv("ENVIRONMENT", "dev")` で環境名を取得し、`config_agent_utils.from_config(f"config/{env}/root_agent.yaml")` で環境に対応するYAMLファイルを動的に読み込みます。 **プロンプトバージョニング**: YAMLファイルをGitで管理し、プロンプトの変更履歴を追跡します。コードの変更なしにインストラクションを更新でき、ロールバックも容易です。 **A/Bテスト**: 異なるインストラクションやモデルを持つ複数のYAMLファイルを用意し、ランタイムで切り替えてパフォーマンスを比較します。 `get_ab_variant(user_id)` でユーザーごとのA/Bバリアント(`"a"` または `"b"`)を取得し、`config_agent_utils.from_config(f"config/variant_{variant}.yaml")` で対応するYAMLファイルを読み込むことで、ランタイムでのA/Bテストを実現します。 💡 ユースケース 🔄 コード変更なしのプロンプト・モデル切り替え(再デプロイ不要) 🌍 dev/staging/prod環境ごとの設定管理 📊 インストラクションのA/Bテスト 📝 プロンプト変更履歴のGit管理とロールバック 🧩 非エンジニアによるエージェント設定の更新 ⚠️ 注意点 - 現在はGeminiモデルのみサポートされています。他のモデルプロバイダーは今後のサポートを待つ必要があります。 - カスタムコードを含むツールの利用はPythonとJavaに限定されています。 - `LangGraphAgent`や`A2aAgent`はAgent Configではまだサポートされていません。 - `.env`ファイルでAPIキーやプロジェクト設定を管理しますが、シークレットのコミットには注意してください。 ✨ Agent Configは、エージェントの定義をコードから設定ファイルに分離することで、非エンジニアでも安全にプロンプトやモデルを変更でき、環境ごとの切り替えやA/Bテストを容易にします。運用フェーズでの柔軟性を高めたい場面でぜひ活用してください! #ADK# #AIAgent#
もっと見る
Gemini Omni Flashで変わるのは、「修正工程」。 Googleが Gemini Omni Flash をGemini API / @GoogleAIStudioで公開。テキスト・画像・動画を入力し、3〜10秒の動画生成や会話型編集ができます。 AI動画制作は、生成力よりディレクション力の比重が上がっていきそうです。
もっと見る