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

検索結果 anthropicAI
anthropicAI コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
anthropicAI を含む検索結果
AnthoropicAI「Linuxカーネルのバグ使ったら完全掌握できた。簡単、ログインもパスも必要ない」 深刻度は10点満点中9.8で最高ランクです。
もっと見る
AIは「作る」から「信じて使い続ける」時代へ――本物か確かめる仕組みと、動かし続ける基盤に巨額マネーが集まる|Soichi Noguchi @Astro_Soichi #AI# #LLM# #Anthropic# #AI推論# #生成AI#
もっと見る
# 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#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 エージェントの応答を待つ間、画面が真っ白で不安になったことはありませんか?リアルタイムストリーミングで解決です! `include_partial_messages` を有効にすれば、テキストやツール呼び出しが生成される様子をリアルタイムで受信できます。 📌 タイトル:リアルタイム部分メッセージ 🔗 URL: 🧩 概要 `include_partial_messages`(Python)/ `includePartialMessages`(TypeScript)を `True` に設定すると、通常の `AssistantMessage` に加えて `StreamEvent` メッセージが送信されます。`StreamEvent` にはClaude APIの生のストリーミングイベント(`content_block_delta` の `text_delta` や `input_json_delta` など)が含まれ、テキストの断片やツール入力のチャンクをリアルタイムで受信できます。これにより、タイピング風のテキスト表示やツール実行中のステータス表示など、応答性の高いUIを構築できます。 🛠 使い方 ```python # Python - テキストチャンクをリアルタイム表示 from claude_agent_sdk import query, ClaudeAgentOptions from claude_agent_sdk.types import StreamEvent options = ClaudeAgentOptions(include_partial_messages=True) async for message in query(prompt="データベースの仕組みを説明してください", options=options): if isinstance(message, StreamEvent): event = message.event if event.get("type") == "content_block_delta": delta = event.get("delta", {}) if delta.get("type") == "text_delta": print(delta.get("text", ""), end="", flush=True) ``` ```typescript // TypeScript - ツール呼び出しのストリーミング表示 import { query } from "@anthropic-ai/claude-agent-sdk"; let currentTool: string | null = null; for await (const message of query({ prompt: "Read the README.md file", options: { includePartialMessages: true } })) { if (message.type === "stream_event") { const event = message.event; if (event.type === "content_block_start" && event.content_block.type === "tool_use") { currentTool = event.content_block.name; process.stdout.write(`\n[Using ${currentTool}...]`); } else if (event.type === "content_block_delta" && === "text_delta") { process.stdout.write( } else if (event.type === "content_block_stop" && currentTool) { console.log(" done"); currentTool = null; } } } ``` 🏗 本番システムへの組み込み方 ・チャットUIで `text_delta` を受信するたびにメッセージバブルにテキストを追加し、タイピング風の表示を実現します ・`content_block_start`(type: `tool_use`)でツール名を検知し、「実行中...」のスピナーを表示します ・`message_start`/`message_stop` イベントでメッセージの開始・完了を追跡します ・テキストデルタは自分で結合する必要があるため、アキュムレータを用意します 💡 ユースケース 💬 ChatGPT風のリアルタイムタイピング表示をカスタムUIに実装する 🔧 エージェントが使用中のツール名とその進捗をステータスバーに表示する 📝 長文の分析結果を、完成を待たずに部分的に表示開始する ⚠️ 注意点 ・`StreamEvent` のイベントは生のClaude APIイベントであり、蓄積済みテキストではありません。テキストデルタを自分で結合する必要があります ・構造化出力(`structured_output`)はストリーミングデルタでは送信されず、最終の `ResultMessage` にのみ含まれます ・ツール実行中(`in_tool` フラグ)はテキストストリーミングを一時停止するなど、UIの状態管理が必要です ✨ 「処理中です、お待ちください...」だけの画面はもう卒業。部分メッセージでユーザーとエージェントの距離を縮めましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 エージェントがファイルを勝手に削除しようとしたら?実行時承認で安全にコントロールできます! `canUseTool` コールバックを使えば、ツール実行前にリアルタイムで承認・拒否・入力変更が可能です。 📌 タイトル:canUseTool コールバックによる実行時承認 🔗 URL: 🧩 概要 `canUseTool` はクエリオプションに渡すコールバック関数で、権限評価フローの最終ステップ(6番目)で呼び出されます。先行するステップ(allow ルールや `acceptEdits`・`bypassPermissions` モードなど)で自動承認されたツール呼び出しではコールバックは呼ばれないため、すべてのツール呼び出しに適用したいチェックは `PreToolUse` フックを使ってください。コールバックはツール名と入力パラメータを受け取り、`allow`(許可)または `deny`(拒否)を返します。許可時には入力を変更することも可能で、例えばパスをサンドボックス内に書き換えたり、危険なコマンドをブロックしたりできます。`dontAsk` モードでは呼び出されません。 🛠 使い方 ```python # Python - ツール実行の承認コールバック from claude_agent_sdk import ClaudeAgentOptions, query from claude_agent_sdk.types import PermissionResultAllow, PermissionResultDeny, HookMatcher async def can_use_tool(tool_name, input_data, context): print(f"\nツール: {tool_name}") if tool_name == "Bash": print(f"コマンド: {input_data.get('command')}") # rm コマンドをブロックしてアーカイブを提案 if "rm" in input_data.get("command", ""): return PermissionResultDeny( message="削除の代わりにアーカイブしてください" ) response = input("許可しますか? (y/n): ") if response.lower() == "y": return PermissionResultAllow(updated_input=input_data) return PermissionResultDeny(message="ユーザーが拒否しました") # ダミーフック(Python のストリーミングモードで必要) async def dummy_hook(input_data, tool_use_id, context): return {"continue_": True} ``` ```typescript // TypeScript - 入力を変更して許可する例 import { query } from "@anthropic-ai/claude-agent-sdk"; for await (const message of query({ prompt: "Clean up temporary files", options: { canUseTool: async (toolName, input) => { if (toolName === "Bash") { // パスをサンドボックス内に書き換え const sandboxed = { ...input, command: input.command.replace("/tmp", "/tmp/sandbox") }; return { behavior: "allow", updatedInput: sandboxed }; } return { behavior: "allow", updatedInput: input }; } } })) { /* ... */ } ``` 🏗 本番システムへの組み込み方 ・Web UIでツール実行の承認ダイアログを表示し、ユーザーの判断を返します ・`context.suggestions` から `PermissionUpdate` を取得し、「今後も許可」の永続化ルールを設定できます ・危険な操作(`rm`、`DROP TABLE` など)は自動的にブロックし、安全な代替案をメッセージで提案します ・入力のサニタイズ(パスの制限、パラメータの上書き)で、エージェントの行動範囲を動的に制御します 💡 ユースケース 🔒 本番データベースへの書き込みコマンドを承認制にする 📁 ファイル操作を特定のディレクトリに制限する(パスの動的書き換え) 👥 マルチユーザー環境で、ユーザーの権限レベルに応じてツール利用を制御する ⚠️ 注意点 ・Python では `canUseTool` を使うにはストリーミングモードと `PreToolUse` フックの設定が必要です ・`dontAsk` モードではコールバックがスキップされるため、セキュリティ上の制限にはフックを使用してください ・コールバックは回答まで無期限に実行を一時停止します。長時間のケースには `defer` フック決定を利用してください ✨ 「全部おまかせ」か「全部手動」かの二択ではなく、canUseTool で「要所だけ人間が判断する」スマートな運用を実現しましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る
# Claude Agent SDKの便利だけど知られていない機能 🌍 エージェントの実行コスト、ちゃんと把握できていますか?詳細なトラッキングで可視化しましょう! Claude Agent SDKは、クエリごとにトークン使用量とコストの詳細な内訳を提供します。 📌 タイトル:詳細なコスト・使用量トラッキング 🔗 URL: 🧩 概要 `ResultMessage` には `total_cost_usd`(推定コスト)、`usage`(トークン内訳)、`num_turns`(ターン数)が含まれており、成功・エラーを問わずすべての結果で取得可能です。さらに `model_usage`(Python)/ `modelUsage`(TypeScript)を使えば、モデルごとのコスト・トークン内訳も確認できます。並列ツール実行時は同一メッセージIDで重複するため、IDベースの重複排除が正確なカウントに必要です。 🛠 使い方 ```python # Python - クエリの総コストを取得 from claude_agent_sdk import query, ResultMessage async for message in query(prompt="プロジェクトを要約してください"): if isinstance(message, ResultMessage): print(f"総コスト: ${ or 0}") # モデルごとの内訳 if message.model_usage: for model, usage in message.model_usage.items(): print(f" {model}: ${usage['costUSD']:.4f}") print(f" 入力トークン: {usage['inputTokens']}") print(f" キャッシュ読取: {usage['cacheReadInputTokens']}") ``` ```typescript // TypeScript - 複数クエリのコストを累積 import { query } from "@anthropic-ai/claude-agent-sdk"; let totalSpend = 0; for (const prompt of prompts) { for await (const message of query({ prompt })) { if (message.type === "result") { totalSpend += // モデルごとの内訳 for (const [model, usage] of Object.entries(message.modelUsage)) { console.log(`${model}: $${usage.costUSD.toFixed(4)}`); } } } } console.log(`合計: $${totalSpend.toFixed(4)}`); ``` 🏗 本番システムへの組み込み方 ・`total_cost_usd` を監視システムに送信して、コスト傾向をリアルタイムで可視化します ・`model_usage` でモデル別コストを分析し、サブエージェントのコスト配分を最適化します ・`resume` で同一セッションを再開した呼び出しの結果には、そのセッションの過去の利用分も含まれます(Claude Code v2.1.277 以降)。この場合は最新の結果を読み、合算すると二重計上になります。セッションを共有しない独立した呼び出しはアプリケーション側で合算ロジックを実装します ・エラー時もコストは発生するため、失敗した `ResultMessage` からも必ずコストを記録します 💡 ユースケース 💰 マルチテナント環境でユーザーごとの利用コストをレポートする 📊 モデル別のコスト内訳を分析して、最適なモデル構成を見つける 🔍 キャッシュトークン(`cache_read_input_tokens`)の割合を監視して、プロンプトキャッシュの効果を測定する ⚠️ 注意点 ・`total_cost_usd` はクライアント側の概算値であり、実際の請求額とは異なる場合があります。正確な請求情報は Usage and Cost API を利用してください ・並列ツール呼び出し時は同一IDのメッセージが重複するため、IDで重複排除しないとトークン数が膨らみます ・`ENABLE_PROMPT_CACHING_1H` を設定すると1時間TTLのキャッシュが有効になりますが、書き込みコストが高くなります ✨ コストの可視化なくしてコスト最適化なし。まずはトラッキングを組み込んで、エージェントの「お財布事情」を把握しましょう! #ClaudeAgentSDK# #AIAgent#
もっと見る
# 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#
もっと見る
# ADK 2.0の便利だけど知られていない機能 🌍 長い会話を続けていると、コンテキストウィンドウがいっぱいになってエージェントの品質が低下した経験はありませんか? ADK 2.0のコンテキスト圧縮(コンパクション)機能は、古いイベントをスライディングウィンドウ方式で要約し、コンテキストウィンドウを効率的に管理する機能です。長時間の会話でもエージェントの応答品質を維持できます。 📌 タイトル:コンテキスト圧縮(コンパクション) 🔗 URL: 🧩 概要 コンテキスト圧縮は、会話が長くなった際に古いイベントを要約して圧縮する仕組みです。2つの主要パラメータで動作を制御します。compaction_intervalは圧縮を実行するイベント間隔、overlap_sizeは圧縮時に次のウィンドウに引き継ぐイベント数です。例えば、compaction_interval=3、overlap_size=1の場合、3イベントごとに圧縮が実行され、最後の1イベントは次のウィンドウにも含まれます。Pythonではアプリに設定し、TypeScriptではTokenBasedContextCompactorでトークンしきい値ベースの制御が可能です。カスタムサマライザーも実装できます。 🛠 使い方 PythonではEventsCompactionConfigをAppに設定します。 ```python from import App from google.adk.context import EventsCompactionConfig compaction_config = EventsCompactionConfig( compaction_interval=5, # 5イベントごとに圧縮 overlap_size=2, # 直近2イベントを次のウィンドウに引き継ぎ ) app = App( agent=my_agent, events_compaction_config=compaction_config, ) ``` TypeScriptではTokenBasedContextCompactorを使用します。 ```typescript import { TokenBasedContextCompactor } from '@anthropic-ai/adk'; const compactor = new TokenBasedContextCompactor({ tokenThreshold: 4000, }); ``` カスタムサマライザーが必要な場合は、LlmEventSummarizerを拡張して独自の要約ロジックを実装できます。 🏗 本番システムへの組み込み方 ・compaction_intervalを会話の平均長さに合わせて調整する ・overlap_sizeを大きくすると文脈の連続性が向上するが、圧縮効率は低下する ・カスタムサマライザーで業務ドメインに特化した要約を実装する ・圧縮前後のイベント数とトークン数をモニタリングし、パラメータを最適化する 💡 ユースケース 💬 カスタマーサポートの長時間チャットでコンテキスト品質を維持 📝 長期プロジェクト管理エージェントの会話履歴を効率的に圧縮 🎯 重要な情報を保持しながら不要な詳細を削減してコストを最適化 🔧 ドメイン固有のカスタムサマライザーで業務に最適な要約を実現 ⚠️ 注意点 圧縮により古いイベントの詳細な情報は失われます。重要な情報はStateに保存するなど、圧縮されても失われない設計を心がけてください。また、overlap_sizeが小さすぎると文脈の断絶が生じ、エージェントの応答品質が低下する可能性があります。compaction_intervalとoverlap_sizeのバランスを実際のユースケースでテストすることをお勧めします。 ✨ コンテキスト圧縮により、長時間の会話でもコンテキストウィンドウを効率的に活用できます。エージェントの応答品質とコスト効率の両立に大きく貢献する機能です。 #ADK# #AIAgent#
もっと見る
【Anthropic社】AIにAIを開発させると以前の約2倍の速度でモデルを改善たと事後報告 AIが独り歩きして安全対策が追いつかないリスクもある 加速の約8割はAI起因と推定されます。
もっと見る