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

検索結果 ToolUse
ToolUse コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
ToolUse を含む検索結果
TL;DR 1万超のツールから必要なものを選ぶ仕事を、Qwen3の1.7B〜8Bに強化学習で教えたら、402BのLlama-4-Maverickをプロンプトで使うより高精度になりました。 タイトル: Training Small Language Models for Transferable Tool Selection URL: ポイント ・🧩 指示をサブステップに分割し、リトリーバーで候補を絞り、1つずつ選ぶ「Plan-Retrieve-Select」 ・🧹 ToolBench G3のノイズあるゴールドを教師モデルで精査し、20,093件に整備 ・🎯 SFTのあとGRPOで、Planは順位重み付きF1、Selectは完全一致を報酬に学習 ・📈 ToolBench G3の成功率は8Bで41.5%。Maverickの最良は30.6% ・🔁 BM25を密リトリーバーCOLTに替えるだけで、再訓練なしに精度が向上 ・🧪 Selectorを学習済みにすると、BM25 top-1より約13ポイント上乗せ ・⚠️ TaskBenchではPlanの転用が弱く、大型モデルに負けるケースもあります 大きなモデルをプロンプトで回すより、小さなモデルを目的特化で訓練するほうが安く速く強くなる好例です。 #LLMエージェント# #ToolUse#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 複雑なタスクの進捗、見失っていませんか?構造化タスクトラッキングで可視化できます! Claude Agent SDKには、エージェント実行中のタスク管理と進捗表示を行う組み込み機能があります。 📌 タイトル:構造化タスク(Todo)トラッキング 🔗 URL: 🧩 概要 `TaskCreate`、`TaskUpdate`、`TaskGet`、`TaskList` の4つのツールを使って、エージェント実行中の構造化タスク管理が可能です。これらのタスクトラッキングツールは Claude 3.x 系、Opus 4〜4.7、Sonnet 4〜4.6、Haiku 4.5 でのみデフォルトで提供され(Claude Code v2.1.268 以降、TypeScript SDK は v0.3.268 以降がこの既定を同梱)、それ以外のモデルではオプトインが必要です。エージェントは複数ステップの作業を自動的にタスクとして登録し、`pending` → `in_progress` → `completed` のライフサイクルで進捗を管理します。従来の `TodoWrite` は全リストを毎回上書きしていましたが、新しい Task ツールでは個別のタスク単位で作成・更新できるため、より細かい進捗追跡が実現できます。 🛠 使い方 ```python # Python - TaskCreate/TaskUpdate のストリームを監視 from claude_agent_sdk import query, ClaudeAgentOptions, AssistantMessage, ToolUseBlock async for message in query( prompt="React アプリのパフォーマンスを最適化してください", # 既定で Task ツールが提供されないモデルでも有効化する options=ClaudeAgentOptions(env={"CLAUDE_CODE_ENABLE_TODO_TOOLS": "1"}), ): if not isinstance(message, AssistantMessage): continue for block in message.content: if not isinstance(block, ToolUseBlock): continue if == "TaskCreate": print(f"+ {block.input['subject']}") elif == "TaskUpdate" and block.input.get("status"): # ストリーム上のキー名は修復前の生の形(id / task_id の場合がある) task_id = ( block.input.get("taskId") or block.input.get("id") or block.input.get("task_id") ) print(f" {task_id} -> {block.input['status']}") ``` ```typescript // TypeScript - タスクの作成と更新をリアルタイム表示 import { query } from "@anthropic-ai/claude-agent-sdk"; for await (const message of query({ prompt: "Optimize my React app performance", // 既定で Task ツールが提供されないモデルでも有効化する options: { env: { ...process.env, CLAUDE_CODE_ENABLE_TODO_TOOLS: "1" } }, })) { if (message.type !== "assistant") continue; for (const block of message.message.content) { if (block.type !== "tool_use") continue; if ( === "TaskCreate") { console.log(`+ ${block.input.subject}`); } else if ( === "TaskUpdate") { // ストリーム上のキー名は修復前の生の形(id / task_id の場合がある) const taskId = block.input.taskId ?? ?? block.input.task_id; if (taskId && block.input.status) console.log(` ${taskId} -> ${block.input.status}`); } } } ``` 🏗 本番システムへの組み込み方 ・タスクの進捗をUIのプログレスバーやチェックリストに反映して、ユーザーに作業状況を可視化します ・`TaskCreate` の結果から `taskId` を取得し、マップで管理することで完全なタスク一覧を構築できます ・`TaskList` のツール結果を監視してスナップショットを取得し、ダッシュボードに表示します ・3ステップ以上の複雑なタスクで自動的にタスクが作成されるため、長時間実行の監視に活用できます 💡 ユースケース 📋 大規模リファクタリングの進捗をリアルタイムでチームに共有する 🔄 CI/CDパイプラインでエージェントの各ステップの完了状況を追跡する 📊 マルチステップのコード分析で、どの分析が完了したかをダッシュボードに表示する ⚠️ 注意点 ・`TaskCreate` の入力には `taskId` は含まれません。対応する `tool_result` ブロックから `{ task: { id, subject } }` として取得する必要があります ・既定でツールが提供されないモデルでは、`allowed_tools` にツール名を挙げる、`tools` オプションに列挙する、`env` で `CLAUDE_CODE_ENABLE_TODO_TOOLS=1` を設定する、のいずれかでオプトインが必要です(オプトインしないと該当の `tool_use` ブロックはストリームに現れません)。逆に `CLAUDE_CODE_ENABLE_TASKS=0` を設定すると、4つの Task ツールの代わりに旧 `TodoWrite` が提供されます ・`status` を `"deleted"` に設定するとタスクを削除できます ✨ 複数ステップの作業を「何をやっているか分からない」状態で待つのはストレスフルです。タスクトラッキングを活用して、エージェントの作業をガラス張りにしましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る
🛠️ 「成功した軌跡」を集めるだけでは、ツール利用エージェントは強くならないかもしれません。 タイトル: Trajectory2Gym: Decision-Grounded Compositional Interaction Synthesis for Tool-Use Agents URL: 成功軌跡ではなく「学習できる経験」を意図的に作ってSFTする、ツール利用エージェントの学習データ合成手法です。注目ポイントは3つです。 🧩 注目ポイント1: 依存関係を狙って合成する 検索・エラー・リトライ・確認・更新といった依存連鎖が、データに繰り返し含まれているかを重視します。足りないパスを次の合成ラウンドで補います。実際、既存の候補プールでは、本物のエラーの後の意思決定を含む軌跡は10.0%しかありませんでした。 🎯 注目ポイント2: エージェントに見える根拠のある行動だけを学習 教師ポリシーしか知らないIDのような「見えない情報」に頼った行動は学習から外します。失敗した呼び出しやエラーはコンテキストに残しつつ、模倣はしません。 ⚖️ 注目ポイント3: 軌跡単位で重みを揃えるSFT 長い軌跡ほど学習例が増えて重みが偏るのを避けるため、軌跡内で平均してから軌跡間で平均します。アブレーションでは+8.04ポイントと最大の単独効果でした。 📊 Qwen3の5規模で、Tau1・Tau2・BFCLの平均が16.9〜29.8ポイント向上しました。学習後の4BがTau2で69.17と、30B-A3B初期モデルの28.33を上回っています。 💡 データの量より、依存関係と根拠の質を管理する発想が重要だと示しています。 #AIエージェント# #LLM#
もっと見る
便利だけど知られていないClaude APIの機能 🔒 ツールの引数が時々スキーマと合わない...そんな不安を仕組みで解消しませんか? ClaudeのStrict Tool Use(厳密なツール使用)は、ツール定義にstrict: trueを付けることで、ツール呼び出しが常にスキーマと正確に一致することを保証する機能です。引数の型ズレや必須フィールドの欠落を構造的に防げます。 📌 タイトル:Strict Tool Use(厳密なツール使用) 🔗 URL: 🧩 概要 モデルがツールを呼び出すとき、引数がスキーマと一致しないことがまれに発生します。必須フィールドの欠落、型の不一致、余分なフィールドの追加など。Strict Tool Useを有効にすると、モデルの出力がツール定義のJSONスキーマに厳密に制約されます。不正な引数は構造的に生成されなくなるため、バリデーションコードを大幅に簡略化できます。 🛠 使い方 ツール定義のトップレベルにstrict: trueを追加するだけ。ただしスキーマはサポートされるJSON Schemaのサブセットに収める必要があり、オブジェクトには`additionalProperties: false`が必須です(`minimum`や`maxLength`などの制約は非対応で、使うと400エラーになります)。有効にすると、モデルはスキーマに完全に準拠した引数のみを生成します。型や必須フィールドの検証コードを省略でき、ツール実行側のエラーハンドリングがシンプルになります。 🏗 本番システムへの組み込み方 ・エージェントのツール基盤:全ツールにstrict: trueを付けて、引数不正によるランタイムエラーを根絶。デバッグ時間が大幅に減ります。 ・外部API連携:ツール引数をそのまま外部APIのリクエストボディとして使う場合、スキーマ準拠が保証されていれば安全にそのまま渡せます。 ・マルチステップパイプライン:ステップ間のデータ受け渡しにツールを使う構成で、型安全なデータフローを確保。 ・バリデーションコスト削減:引数の検証ロジックを削除または簡略化でき、コードのメンテナンスコストが下がります。 💡 ユースケース 🤖 エージェントのツール引数の品質保証 🔌 外部APIへの安全な引数パススルー 🔗 ステップ間の型安全なデータ受け渡し 🧹 バリデーションコードの削減 ⚠️ 注意点 strictモードはスキーマをコンパイルした文法で出力を制約するため、あるスキーマを初めて使うリクエストではコンパイル分のレイテンシが増えます(コンパイル結果は最終使用から24時間キャッシュされます)。複雑さには明示的な上限があり、1リクエストあたり厳密なツールは20個、オプションパラメータは合計24個、union型を持つパラメータは合計16個までで、超えると400エラーになります。シンプルなスキーマで使うのが最も効果的です。 ✨ 「引数が壊れてないか祈る」コードはもう要りません。strict: trueの一行で、ツール呼び出しの信頼性が格段に上がります。 #Claude# #LLM#
もっと見る
🔧 ツール利用エージェントの学習データ、実は「答えを先に作る」方が効率的だったという発見です。 タイトル: ToolGrad: Efficient tool-use dataset generation with textual "gradients" URL: Google Researchが提案したToolGradは、従来のツール利用データセット生成の順序をひっくり返す手法です。注目ポイントを3つ紹介します。 🔄 アンサーファーストという逆転の発想 ユーザー指示を先に作って解決策を深さ優先探索で見つける従来手法とは逆に、検証済みのAPIワークフローを先に構築し、そこからユーザープロンプトを逆算します。試行錯誤が要らないため生成が効率的です。 📝 テキストで表現する「勾配」 数値の勾配の代わりに、API実行レポートから得た自然言語のフィードバックを「テキスト勾配」として使い、Proposer・Executors・Selector・Updaterという4モジュールでワークフローを段階的に構築していきます。 🏆 商用トップモデルに匹敵する性能 小規模データセットでファインチューニングしたToolGrad-12Bは、Berkeley Function Calling LeaderboardでGemini 2.5 ProやClaude 4.5 Opusに匹敵する83.1点を記録し、GPT-5を上回りました。 低コストなデータ生成が、そのまま実用レベルのエージェント性能に直結するのが印象的です。 #AIエージェント# #ツール利用#
もっと見る
# OpenAI Agent SDKの便利だけど知られていない機能 🌍 ツールの結果をそのまま最終出力にしたいのに、モデルが余計な要約を挟んでいませんか? `tool_use_behavior` を設定すれば、ツール出力をそのまま最終結果にしたり、特定のツールで停止させるなど、出力の制御を細かくカスタマイズできます。 📌 タイトル:tool_use_behavior 🔗 URL: 🧩 概要 `tool_use_behavior` はエージェントがツールを呼び出した後の挙動を制御するオプションです。`"stop_on_first_tool"` を指定すると、最初のツール出力がそのまま最終出力になります。`StopAtTools(stop_at_tool_names=[...])` で特定ツールのみ停止対象にできます。さらにカスタム関数を渡せば、`ToolsToFinalOutputResult(is_final_output=True, final_output=...)` を返すことで、出力を加工してから最終結果にすることも可能です。 🛠 使い方 ```python from agents import Agent, StopAtTools, ToolsToFinalOutputResult # 最初のツール出力をそのまま最終結果に agent_direct = Agent( name="direct", tools=[search_tool], tool_use_behavior="stop_on_first_tool", ) # 特定ツールでのみ停止 agent_selective = Agent( name="selective", tools=[search_tool, format_tool, send_tool], tool_use_behavior=StopAtTools( stop_at_tool_names=["format_tool"] ), ) # カスタム関数で出力を制御 def custom_behavior(context, tool_results): result = tool_results[0] if result.tool_name == "get_answer": return ToolsToFinalOutputResult( is_final_output=True, final_output=f"回答: {result.output}", ) return ToolsToFinalOutputResult(is_final_output=False) agent_custom = Agent( name="custom", tools=[get_answer, search_tool], tool_use_behavior=custom_behavior, ) ``` 🏗 本番システムへの組み込み方 ・API呼び出し結果をそのまま返すプロキシ型エージェントに `"stop_on_first_tool"` を活用する ・パイプライン内の特定ステップで出力を確定させ、無駄なLLM呼び出しを削減する ・カスタム関数で出力フォーマットを統一し、下流システムとのインテグレーションを安定させる ・構造化データ(JSON等)をモデルに要約させず、そのまま後続処理に渡す 💡 ユースケース 🔌 API結果をそのまま返すプロキシエージェント 📊 データベースクエリ結果の直接出力 🔄 パイプラインの中間ステップでの出力確定 🎯 特定ツールの結果だけを最終出力にする選択的制御 ⚠️ 注意点 `"stop_on_first_tool"` を使うと、モデルによる結果の解釈や補足が行われなくなります。ユーザー向けの分かりやすい出力が必要な場合はカスタム関数で調整してください。複数ツールが並列呼び出しされた場合の挙動も事前に確認しましょう。 ✨ `tool_use_behavior` で、エージェントの出力を「モデル任せ」から「設計通り」に制御しましょう。 #OpenAIAgentSDK# #AIAgent#
もっと見る
# OpenAI Agent SDKの便利だけど知られていない機能 🌍 ツールが多すぎてトークンを圧迫していませんか?必要なときだけツールを読み込む仕組みがあります。 `defer_loading` と `ToolSearchTool` を組み合わせれば、モデルが必要なツールを検索して動的にロードでき、トークン消費を大幅に削減できます。 📌 タイトル:Hosted tool search / tool_namespace / defer_loading 🔗 URL: 🧩 概要 `@function_tool(defer_loading=True)` を指定したツールは、初回のモデル呼び出し時にはツールリストに含まれません。代わりに `ToolSearchTool()` をエージェントに追加すると、モデルはまずツールを検索し、必要なものだけをロードして使用します。`tool_namespace` でツールをグループ化することも可能です。大量のツールを持つエージェントで、トークン使用量を最適化する強力な機能です。なお、この機能は `OpenAIResponsesModel` でのみ利用可能です。 🛠 使い方 ```python from agents import Agent, function_tool from agents.tool import ToolSearchTool @function_tool(defer_loading=True, tool_namespace="analytics") def run_report(report_type: str) -> str: return generate_report(report_type) @function_tool(defer_loading=True, tool_namespace="analytics") def export_csv(dataset: str) -> str: return create_csv(dataset) @function_tool(defer_loading=True, tool_namespace="admin") def manage_users(action: str) -> str: return user_management(action) agent = Agent( name="assistant", tools=[ ToolSearchTool(), # ツール検索を有効化 run_report, export_csv, manage_users, ], ) ``` 🏗 本番システムへの組み込み方 ・数十〜数百のツールを持つエージェントでトークンコストを抑える ・`tool_namespace` でツールを論理的にグループ化し、検索精度を向上させる ・頻繁に使うツールは `defer_loading=False`(デフォルト)のままにし、稀に使うツールだけ遅延ロードにする ・ツール追加時にプロンプトサイズを気にせずスケールできる 💡 ユースケース 🧰 多機能SaaSエージェントのツール管理 📊 分析・レポート系ツールのオンデマンドロード 🔧 管理系ツールの必要時のみ表示 🚀 ツール数のスケーラビリティ確保 ⚠️ 注意点 この機能は `OpenAIResponsesModel` でのみ利用可能です。他のモデルプロバイダーでは動作しません。また、遅延ロードされたツールは最初のターンでは使えないため、ユーザーの最初のリクエストに即座に対応する必要があるツールには向きません。 ✨ ツール検索で「必要なときに必要なツールだけ」をロードし、スマートなエージェントを実現しましょう。 #OpenAIAgentSDK# #AIAgent#
もっと見る
# ADKの便利で実践的な使い方 📏 エージェントの品質を「何で」測るかは、評価の成否を分けます。ADKのEvaluation Criteriaは、ツール軌跡の正確性からハルシネーション検出、安全性評価まで、多角的な評価基準を組み込みで提供します。 📌 タイトル:Evaluation Criteria 🔗 URL: 🧩 概要 ADKは複数の組み込み評価基準を提供し、すべて0.0〜1.0のスコアで評価結果を返します。**tool_trajectory_avg_score**はエージェントのツール呼び出し順序を検証し、**response_match_score**はROUGE-1でレスポンスの一致度を測定します。**hallucinations_v1**はコンテキストに対する回答の根拠を検証し、**safety_v1**は有害コンテンツの有無を評価します。**multi_turn_task_success_v1**は複数ターンの会話でタスク達成度を測定します。 🛠 使い方 各評価基準はJSON設定ファイルで定義します。 **tool_trajectory_avg_score** — 3つのマッチタイプを選択できます。 ```json { "criteria": { "tool_trajectory_avg_score": { "threshold": 1.0, "match_type": "EXACT" } } } ``` - `EXACT`: 期待されるツール呼び出しと完全一致(余分な呼び出しも不足も不可) - `IN_ORDER`: 期待されるツールが順序通りに出現(間に他の呼び出しがあってもOK) - `ANY_ORDER`: 期待されるツールがすべて存在(順序は問わない) **response_match_score** — ROUGE-1によるユニグラム一致度です。 ```json { "criteria": { "response_match_score": 0.8 } } ``` **hallucinations_v1** — レスポンスの各文をコンテキストに対して検証します。 ```json { "criteria": { "hallucinations_v1": { "threshold": 0.8, "judge_model_options": { "judge_model": "gemini-flash-latest" }, "evaluate_intermediate_nl_responses": true } } } ``` 各文には「supported(支持)」「unsupported(不支持)」「contradictory(矛盾)」「disputed(議論あり)」「not_applicable(該当なし)」のラベルが付与されます。スコアはsupportedとnot_applicableの割合で計算されます。 **safety_v1** — ヘイトスピーチ、ハラスメント、危険な情報の有無を評価します。 ```json { "criteria": { "safety_v1": 0.8 } } ``` **multi_turn_task_success_v1** — 会話全体を通じたタスク達成度を評価します。 ```json { "criteria": { "multi_turn_task_success_v1": 0.8 } } ``` 🏗 実践的な使い方 **ツール軌跡の厳密な検証**: 金融取引や医療情報など、ツールの呼び出し順序が重要なドメインでは`EXACT`マッチタイプを使用します。例えば「まず認証→次に残高確認→最後に送金」という順序が厳守されるべきケースで、エージェントが正しい手順を踏んでいるかを検証できます。 **柔軟なツール検証**: 探索的なタスクでは`ANY_ORDER`を使い、必要なツールがすべて呼ばれたかだけを確認します。`IN_ORDER`は、主要なステップの順序は保証したいが、間に補助的なツール呼び出しを許容するケースに適しています。 **ハルシネーション検出の実践**: RAGベースのエージェントで`hallucinations_v1`を使用し、検索結果に基づかない情報をエージェントが生成していないかを自動検出します。`evaluate_intermediate_nl_responses`を有効にすれば、最終回答だけでなく中間的な回答も含めて検証できます。 **安全性とタスク達成の両立**: `safety_v1`と`multi_turn_task_success_v1`を組み合わせることで、「安全だがタスクを達成できないエージェント」や「タスクは達成するが不適切な内容を含むエージェント」を検出できます。 💡 ユースケース 🎯 金融・医療エージェントでのツール呼び出し順序の厳密な検証 🔍 RAGエージェントのハルシネーション自動検出 🛡 カスタマーサポートエージェントの安全性評価 📈 マルチターン対話でのタスク達成率の定量測定 ⚠️ 注意点 - `safety_v1`、`multi_turn_task_success_v1`、`multi_turn_trajectory_quality_v1`、`multi_turn_tool_use_quality_v1`はGoogle Cloudプロジェクトの設定(`GOOGLE_CLOUD_PROJECT`、`GOOGLE_CLOUD_LOCATION`環境変数)が必要です。 - LLMベースの評価基準はジャッジモデルの判断にばらつきがあります。`num_samples`を設定して複数回サンプリングし、多数決で結果を安定させることを推奨します。 - `response_match_score`はROUGE-1(単語の重なり)のみで意味的な同等性は評価しません。意味的な評価には`final_response_match_v2`を検討してください。 ✨ 適切な評価基準の選択は、エージェントの品質管理の基盤です。ドメインの特性に合わせてEXACT/IN_ORDER/ANY_ORDERを使い分け、ハルシネーション検出と安全性評価を組み合わせて多角的に品質を担保しましょう! #ADK# #AIAgent#
もっと見る
【📢ID登録締切まであと4日|大規模言語モデル講座2】 「大規模言語モデル講座2」のID登録締切が、8/31(月)10:00に迫っています! 本講座では、LLMの基礎知識を踏まえ、 🔹RAG・Tool Useなど外部環境の活用 🔹LLMの軽量化 🔹安全対策 🔹LLMの分析・解釈可能性 🔹ドメイン特化 など、LLMを実際に活用していくために必要となる応用技術を学びます。 さらに、毎年恒例の「個人型LLM開発コンペ」も開催予定! 講義で知識を身につけるだけでなく、実践を通してさらに理解を深められます。 LLMの基礎からさらに一歩先へ進み、応用・社会実装につながる技術を身につけたい方は、ぜひこの機会にご応募ください! 📅ID登録締切:8/31(月)10:00 📅講座申込締切:9/2(水)10:00 ▼詳細・お申し込み
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 エージェントの実行中にメッセージを送りたいと思ったことはありませんか?ストリーミング入力で対話的なセッションが実現します! ストリーミング入力モードを使えば、エージェント実行中にメッセージの追加、中断、画像送信が可能です。 📌 タイトル:ストリーミング入力モード 🔗 URL: 🧩 概要 ストリーミング入力モード(推奨)は、`AsyncGenerator` を使った永続的なインタラクティブセッションを提供します。通常のシングルメッセージ入力(ワンショット)と異なり、セッション中にメッセージのキューイング、画像の添付、実行の中断が可能です。`yield` でメッセージを順次送信し、条件に応じてフォローアップメッセージを動的に生成できるため、チャットインターフェースや複雑なワークフローに最適です。 🛠 使い方 ```python # Python - ストリーミング入力でインタラクティブセッション from claude_agent_sdk import ClaudeSDKClient, ClaudeAgentOptions, AssistantMessage, TextBlock import base64 async def message_generator(): # 最初のメッセージ yield { "type": "user", "message": {"role": "user", "content": "セキュリティの問題を分析してください"}, } # フォローアップ(画像付き) with open("diagram.png", "rb") as f: image_data = base64.b64encode( yield { "type": "user", "message": { "role": "user", "content": [ {"type": "text", "text": "このアーキテクチャ図もレビューしてください"}, {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": image_data}}, ], }, } options = ClaudeAgentOptions(max_turns=10, allowed_tools=["Read", "Grep"]) async with ClaudeSDKClient(options) as client: await client.query(message_generator()) async for message in client.receive_response(): if isinstance(message, AssistantMessage): for block in message.content: if isinstance(block, TextBlock): print(block.text) ``` ```typescript // TypeScript - AsyncGenerator でメッセージを逐次送信 import { query, type SDKUserMessage } from "@anthropic-ai/claude-agent-sdk"; async function* generateMessages(): AsyncGenerator { yield { type: "user", message: { role: "user", content: "Analyze this codebase for security issues" }, parent_tool_use_id: null, }; // 条件に応じてフォローアップ await new Promise((resolve) => setTimeout(resolve, 2000)); yield { type: "user", message: { role: "user", content: "Now focus on authentication" }, parent_tool_use_id: null, }; } for await (const message of query({ prompt: generateMessages(), options: { maxTurns: 10, allowedTools: ["Read", "Grep"] } })) { if (message.type === "result" && message.subtype === "success") { console.log(message.result); } } ``` 🏗 本番システムへの組み込み方 ・チャットUIのメッセージ送信をジェネレータの `yield` に接続して、ユーザー入力をリアルタイムでエージェントに渡します ・画像アップロードを `base64` エンコードしてメッセージに含めることで、ビジュアル分析が可能になります ・中断シグナルを送信してエージェントの方向転換を行えるため、長時間実行タスクの制御に活用できます ・セッション中のコンテキストが自然に維持されるため、複数ターンの会話を管理する手間が省けます 💡 ユースケース 💬 カスタムチャットボットでユーザーとエージェントの対話的なセッションを構築する 🖼 コードレビュー中にスクリーンショットや設計図を動的に送信して分析させる 🔄 長時間のコード分析中に追加の指示やフォーカスエリアの変更を送る ⚠️ 注意点 ・シングルメッセージ入力では画像添付、動的メッセージキューイング、リアルタイム中断がサポートされません ・ステートレス環境(Lambda関数など)ではシングルメッセージ入力を使用してください ・Python ではストリーミング入力に `ClaudeSDKClient` のコンテキストマネージャが必要です ✨ ワンショットで終わらない対話こそ、AIエージェントの本領発揮です。ストリーミング入力でリッチな体験を構築しましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る