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

cv usk
@cv_usk
AI / Software Research Notes AI Agent, LLMOps, MLOps, Software Architecture 投稿は個人の意見です。
286 フォロー中    469 ファン
名画😻
アルフレッド・アーサー・ブルネル・ド・ヌーヴィル『猫の家族』1941年 個人蔵
素晴らしい、心から応援したい。
構想から約3年。ついに、Nstock セカンダリーが開業しました🔥 IPOまでの期間が長期化する時代です。SpaceXも創業から上場まで約24年。創業時25歳だった人はまもなく50歳です。 創業者やVCには、保有株式を売却する機会があります。人生で一番お金が必要なタイミングや、ファンドの満期が未上場時点で来ても、(会社が一定水準以上で成長している限りは)なんとかする手段があります。 従業員はどうでしょうか? 米国にはセカンダリーマーケットがあり、有名スタートアップの従業員には未上場でもストックオプション(SO)を売却する機会があります。 しかし、日本のスタートアップの従業員SOは、実質IPO後にしか売却機会がありません。人生で一番お金が必要なタイミングで来ても、IPOが間に合わないかもしれない……。どれだけ会社が成長していても、です。 しかし、税制改正、規制緩和、慣習の変化など、色んな人の尽力のおかげで、上場を待たずに株式を現金化できる環境が、日本でも整い始めました。 その担い手として、Nstockがセカンダリー事業を開始します。 これは従業員だけではなく、発行体であるスタートアップにもメリットがある仕組みです。SOの失効期限に縛られることなく、自社にとってベストなタイミングでIPOを選べるようになります。 Nstock セカンダリーにご期待ください。
もっと見る
# ADKの便利で実践的な使い方 🧪 エージェントのテストで、本番APIを叩くわけにはいきません。ADKのEnvironment Simulation機能を使えば、ツール呼び出しをインターセプトし、制御されたレスポンスに差し替えることで、本番システムに影響を与えずにエッジケースを再現できます。 📌 タイトル:Environment Simulation 🔗 URL: 🧩 概要 ADKのEnvironment Simulatorは、エージェント実行中のツール呼び出しをインターセプトし、制御されたレスポンスに置き換えます。エージェントのコードを一切変更せずに、エラー注入、固定レスポンス、条件付き注入、確率的障害、レイテンシシミュレーションが可能です。CallbackまたはPluginとして統合でき、注入設定→モック戦略→実ツール実行の優先順位で動作します。 🛠 使い方 Callbackとしての統合例です。 `google.adk.agents` から `LlmAgent` を、` から `EnvironmentSimulationFactory` を、同パッケージの `environment_simulation_config` から `EnvironmentSimulationConfig`、`InjectedError`、`InjectionConfig`、`ToolSimulationConfig` をインポートします。`EnvironmentSimulationConfig` の `tool_simulation_configs` に `ToolSimulationConfig` のリストを渡し、各ツールに対する注入設定を定義します。例えば `tool_name="get_user_profile"` に対して `InjectionConfig` で `InjectedError(injected_http_error_code=503, error_message="Service temporarily unavailable.")` を設定すると、503エラーが注入されます。作成した `config` を `EnvironmentSimulationFactory.create_callback(config)` でコールバックに変換し、`LlmAgent` の `before_tool_callback` パラメータに渡します。 固定レスポンスの注入: `InjectionConfig` の `injected_response` パラメータに辞書(例: `{"status": "ok", "order_id": "ORD-9999"}`)を渡すことで、ツール呼び出しに対して固定のレスポンスを返すことができます。 引数に基づく条件付き注入: `InjectionConfig` の `match_args` パラメータに引数パターン(例: `{"item_id": "ITEM-404"}`)を指定すると、ツール呼び出しの引数が一致した場合のみ注入が発動します。`injected_error` に `InjectedError(injected_http_error_code=404, error_message="Item not found.")` を設定すれば、特定の引数でのみ404エラーを返すことができます。 確率的な障害シミュレーション: `InjectionConfig` の `injection_probability` に確率値(例: `0.3` で30%)を設定し、`random_seed`(例: `42`)で再現性を確保します。`injected_error` に `InjectedError(injected_http_error_code=500, error_message="Internal server error.")` を指定すると、指定確率でランダムに500エラーが発生します。 レイテンシのシミュレーション: `InjectionConfig` の `injected_latency_seconds` に遅延秒数(例: `5.0`)を設定し、`injected_response` にレスポンス(例: `{"result": "slow but successful"}`)を指定すると、指定秒数の遅延後にレスポンスが返されます。 Mock Strategyモードでは、ツールスキーマから自動的にレスポンスを生成します。 `environment_simulation_config` から `MockStrategy` をインポートし、`ToolSimulationConfig` の `mock_strategy_type` に `MockStrategy.MOCK_STRATEGY_TOOL_SPEC` を設定します。これにより、`tool_name`(例: `"create_order"`)で指定したツールのスキーマから自動的にレスポンスが生成されます。 🏗 実践的な使い方 **API障害時のエージェント回復力テスト**: 503エラーや500エラーを注入して、エージェントがリトライやフォールバックを適切に行うかを検証します。本番システムに影響を与えることなく、障害シナリオを再現できます。 **条件付き注入によるエッジケーステスト**: `match_args`を使って特定の引数パターンでのみエラーを発生させます。例えば「存在しない商品ID」「在庫切れの商品」など、特定条件下でのエージェントの振る舞いをピンポイントでテストできます。 **確率的障害でのリアルなテスト**: `injection_probability`を使って30%の確率でエラーを発生させ、不安定なAPIとのやり取りをシミュレートします。`random_seed`を固定すれば再現性のあるテストになります。 **環境データの提供によるリアルなモック生成**: `environment_data`にDBスナップショットなどのコンテキストを渡すと、Mock Strategyがよりリアルなレスポンスを生成します。 DBスナップショットなどのコンテキストデータ(例: 商品リストの辞書)を `json.dumps()` でJSON文字列に変換し、`EnvironmentSimulationConfig` の `environment_data` パラメータに渡します。Mock Strategyはこの環境データを参照して、よりリアルなレスポンスを生成します。 **注入とモック戦略の組み合わせ**: 特定の条件ではエラーを注入し、それ以外はMock Strategyで自動生成するという組み合わせが可能です。注入設定が先に評価され、マッチしなければモック戦略にフォールバックします。 💡 ユースケース 🔧 外部API障害時のエージェント回復力の検証 🎯 特定条件下でのエッジケース再現テスト 📉 不安定なAPIとのやり取りの確率的シミュレーション ⏱ レイテンシの高いAPIでのタイムアウト処理の検証 ⚠️ 注意点 - `injected_latency_seconds`の上限は120秒です。 - `InjectionConfig`はエラーとレスポンスのどちらか一方のみ指定可能で、両方同時には設定できません。 - `tool_name`は登録されたツール名と完全一致する必要があります。タイポに注意してください。 - Mock Strategyはツールスキーマに依存するため、スキーマが不十分だと生成されるレスポンスの質が下がります。 ✨ Environment Simulationは、本番環境を汚さずにエッジケースを再現できる強力なテスト基盤です。エラー注入と条件付きモックを組み合わせて、あらゆる障害シナリオに対するエージェントの耐性を検証しましょう! #ADK# #AIAgent#
もっと見る
# 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#
もっと見る
エージェントの評価を自動化しても、「なぜ失敗したか」は人が見ないと分からない。LangChainは、専門家の判断こそが戦略的な強みだと説きます🧑‍⚖️ Why human insight is a strategic advantage for building better agents 自動評価は問題を検知できても、原因や直し方までは説明できません。そこで人間のレビューを評価の仕組みに組み込む3つの原則が示されています。 🎯 原則1: 人間が「良い」を定義する トレースにない文脈、つまりその仕事での良さの基準やユーザーの狙いを、レビュアーが与えます。理由付きのスコアは、評価器自体の抜けも明らかにします。 🧵 原則2: 文脈が判断を支える 1ステップだけ見ると、数ターン前の発言との矛盾を見落とします。マルチターンでは会話全体(Thread)をレビューの単位にします。 🔁 原則3: 判断を評価データに変える ラベルはグラウンドトゥルースとなり、LLMジャッジを人間のスコアに揃え、オンライン評価器を更新し、ゴールデンデータセットを作る元になります。事例では、Fetch Rewardsが商品カードの画像やオファーの有効性まで人手で確認しています。 自動化は規模を担い、専門家の判断を再利用可能な資産にすることが優位性になる、という主張です。 #AIエージェント# #LLM評価#
もっと見る
密ベクトルも、スパースも、マルチベクトルも、1つのRustコードベースで近似最近傍探索ができないでしょうか。 Modular and Efficient Approximate Nearest Neighbors Search with Vectorium and kANNolo 🧩 概要 データ管理層のVectoriumと、インデックス層のkANNoloという2つのRustライブラリです。エンコーダやデータセットはコンパイル時の型パラメータで特殊化されます。 🎯 解決する課題 ・Faissは組合せごとに専用コードがあり、拡張しにくい ・既存ライブラリは、グラフか量子化のどちらか一方しか切り出していない ・3種類の埋め込みを1つのインターフェースで扱えるものがない 🛠 方法論 ・11種のエンコーダ(PQ、RaBitQ、スパース用、マルチベクトル用など) ・HnswとIVFに、任意の第1段インデックスと再採点を組み合わせる2段のRerankIndex ・PQのテーブルをSoAで持ち、構築を4.5〜5.2倍に高速化 📊 実験結果 ・hnswlib比で99%精度時に最大3.26倍(kANNolo-Rerank、密データ) ・スパースは全コレクションで最小メモリ ・一方、AgNewsではGlassが、スパースではSeismicが速く、構築時間も速くはありません #ANNSearch# #Rust#
もっと見る
# OpenAI Agent SDKの便利で実践的な使い方 🌍 トレースの送信先を自由にカスタマイズしましょう。OpenAI バックエンドと並行して Langfuse や Datadog に送ったり、完全に置き換えたり -- 既存の観測基盤にシームレスに統合できます。 カスタムプロセッサで、トレースデータの送信先・加工・フィルタリングを完全にコントロールできます。 📌 タイトル:Tracing -- Custom processors / Ecosystem 🔗 URL: 🧩 概要 OpenAI Agent SDK のトレーシングは、カスタムプロセッサを追加・置換することで柔軟に拡張できます。`add_trace_processor()` で OpenAI バックエンドと並行して独自の処理を追加し、`set_trace_processors()` で送信先を Langfuse・Datadog・MLflow・Arize・Braintrust などに完全置換できます。OpenAI 以外のモデルを使用する場合でも、`set_tracing_export_api_key()` で無料のトレース可視化を利用できます。 🛠 使い方 `agents` から `add_trace_processor` と `TracingProcessor` をインポートします。`TracingProcessor` を継承した `MyProcessor` クラスを定義し、`on_trace_start`、`on_trace_end`、`on_span_start`、`on_span_end`、`shutdown` の各メソッドを実装します。` や `trace.duration_ms`、` などの情報にアクセスできます。`add_trace_processor(MyProcessor())` で登録すると、OpenAI バックエンドと並行してカスタム処理が実行されます。 🏗 実践的な使い方 **add_trace_processor() で OpenAI と並行して外部送信** OpenAI の Traces ダッシュボードはそのまま使いつつ、自社の観測基盤にもデータを送るパターンです。 `TracingProcessor` を継承して `DatadogProcessor` を作成します。`on_trace_start` で `dd_client.start_span(operation_name="agent.trace", resource= を呼び出し、`on_trace_end` で `dd_client.finish_span(metadata={"duration_ms": trace.duration_ms})` で完了を記録します。`on_span_start` では `operation_name=f"agent.{span.type}"` でスパンを開始し、`shutdown` で `dd_client.flush()` を呼びます。`add_trace_processor(DatadogProcessor(dd_client))` で登録すると、OpenAI と並行して Datadog にもトレースが送信されます。 **set_trace_processors() で送信先を完全置換** OpenAI にトレースを送らず、Langfuse や MLflow だけに送る場合はプロセッサを置き換えます。 `agents` から `set_trace_processors` をインポートし、送信先を完全に置換します。`set_trace_processors([LangfuseTracingProcessor()])` で Langfuse に、`[MLflowTracingProcessor()]` で MLflow に、`[ArizeTracingProcessor()]` で Arize に、`[BraintrustTracingProcessor()]` で Braintrust にそれぞれ切り替えられます。OpenAI バックエンドを含む既存のプロセッサはすべて置き換わります。 **set_tracing_export_api_key() で非 OpenAI モデルのトレースを無料で可視化** OpenAI 以外のモデル(Gemini、Claude 等)を使っている場合でも、トレース機能を無料で利用できます。 `agents` から `set_tracing_export_api_key` をインポートし、`set_tracing_export_api_key("your-tracing-export-key")` を呼び出します。OpenAI 以外のモデル(Gemini、Claude 等)を使っている場合でも、この設定でトレース機能を無料で利用できます。 **複数プロセッサの組み合わせ** 本番環境では、複数の観測ツールにトレースを送るのが一般的です。 `set_trace_processors` にリストで複数のプロセッサを渡します。`LangfuseTracingProcessor()` で詳細な LLM 分析、`DatadogProcessor(dd_client)` でインフラ監視との統合、`CustomAuditProcessor()` で社内監査ログを同時に実現できます。 💡 ユースケース 📡 add_trace_processor() で OpenAI ダッシュボードを維持しつつ Datadog にもトレースを並行送信 🔀 set_trace_processors() で Langfuse/MLflow/Arize/Braintrust に送信先を完全切り替え 🆓 set_tracing_export_api_key() で非 OpenAI モデル(Gemini、Claude)のトレースを無料で可視化 🔧 複数プロセッサ(Langfuse + Datadog + 監査ログ)を組み合わせた本番観測パイプラインの構築 ⚠️ 注意点 - `set_trace_processors()` は既存のプロセッサを**すべて置換**します。OpenAI バックエンドも含めて消えるので、残したい場合は `add_trace_processor()` を使ってください。 - カスタムプロセッサの `shutdown()` メソッドは必ず実装し、バッファに残ったデータをフラッシュしてください。 - 複数プロセッサを使う場合、各プロセッサの処理時間がトレース送信のオーバーヘッドになります。非同期送信を検討してください。 ✨ カスタムプロセッサを使えば、トレースデータを既存の観測スタックにそのまま流し込めます。まずは add で並行送信を試し、安定したら set で送信先を最適化していきましょう! #OpenAIAgentSDK# #AIAgent#
もっと見る
# OpenCodeの機能と実践的な使い方 🤖 OpenCodeを「ターミナルで対話するツール」から「プログラムで操れる開発サーバー」へ。SDKとheadlessサーバーを使えば、CIや独自UIにAIコーディングを組み込めます。 🏷️ タイトル: 型安全JSクライアント・headlessサーバー 🔗 URL: 📘 概要 OpenCodeはTUIだけでなく、HTTPで操作できるheadlessサーバーとして起動できます。`@opencode-ai/sdk` という型安全なJavaScript/TypeScriptクライアントから、このサーバーへ接続してセッション作成・プロンプト送信・イベント購読などを行えます。型はサーバーのOpenAPI仕様から自動生成されるため、補完と型チェックがそのまま効きます。 ⚙️ 機能の説明 ・サーバー起動: `opencode serve` でheadlessサーバーを立ち上げます。既定は `127.0.0.1:4096` です。SDKの `createOpencode()` を使えばコードからサーバー起動とクライアント取得を同時に行えます。 ・クライアント接続: 既存サーバーには `createOpencodeClient({ baseUrl: "http://localhost:4096" })` で接続します。 ・主なAPI: セッションの作成/一覧/取得/更新/削除、共有の切替、中断、メッセージのrevert/unrevert。`client.session.prompt()` でプロンプトを送信します。 ・構造化出力: `format: { type: "json_schema", schema: {...} }` を指定すると、JSONスキーマに沿った検証済みJSONを受け取れます。後段の機械処理に最適です。 ・イベント購読: `client.event.subscribe()` でサーバー送信イベントをストリームとして受け取り、長時間処理の進捗を監視できます。 🛠️ 実践的な使い方 コードからは `createOpencode()` でサーバー起動とクライアント取得を同時に行い、`client.session.create()` でセッションを作り、`client.session.prompt()` にテキストと `format` の `json_schema` を渡せば検証済みJSONを受け取れます。終わったら `server.close()` で停止します。 CIに組み込む場合は、コンテキスト注入だけ行ってAI応答を発火させたくない場面で `noReply: true` が便利です。 💡 ユースケース ・社内のレビューBotから `opencode run` ではなくSDK経由で構造化された指摘JSONを取得し、GitHub PRコメントへ整形投稿する。 ・自前のWeb UIやエディタ拡張から `tui` 系APIでプロンプト投入・送信・トースト表示を制御し、独自フロントエンドを構築する。 ・夜間バッチで複数リポジトリへ同一の解析プロンプトを投げ、結果JSONをデータ基盤へ蓄積する。 ⚠️ 注意点 ・SDKのconfigは `opencode.json` を完全に置き換えるのではなく上書きマージする挙動です。意図しない設定の残存に注意してください。 ・構造化出力は検証失敗時にリトライ(既定2回)し、最終的に失敗すると ` に `StructuredOutputError` が入ります。スキーマは小さく焦点を絞ると安定します。 ・`client.session.get()` などは存在しないIDで例外を投げます。必ずtry-catchで囲んでください。 #OpenCode# #AIエージェント#
もっと見る
TL;DR:「エージェント開発の難問は解決済み」という見方に、LangChainのHarrison Chaseが異を唱えています。常時稼働でゴールを追うエージェントには、6つの未解決課題があるそうです。 New context engineering challenges in late 2026 ポイント ・🔔 プロアクティブさ:役立つ通知と、うるさい通知のバランスが未解決 ・🧠 メモリ:難しいのは保存ではなく「何を覚えるか」を決める知能層 ・⏳ 非同期:長い作業を走らせつつ、メインのエージェントは応答し続ける必要がある ・🎯 ゴール追跡:同じ行動の繰り返しを避け、長期で一貫して進める ・⚠️ 仕様ゲーミング:「全バグを消せ」でコードベースごと消す例 ・🌐 ブラウザ:スクリーンショットかDOMか、両方が大きいときのコンテキスト管理 要約、オフロード、スキル、サブエージェントといった既知の技法の「次」を整理した論点集です。数値や解決策はなく、意見記事である点にご注意ください。 #ContextEngineering# #AIAgents#
もっと見る
3年間使ってた電動シェーバーが壊れた。
宮城。 実は翔陽戦、海南戦、陵南戦、豊玉戦、山王戦で全試合交代なしでずっと出てる。
結局、湘北で一番すごいのは誰? 🥉 にわか乙 桜木、流川 🥈 無難でつまらん 三井、赤木 🥇 スラダンガチ勢の答えは…↓↓↓
これは素晴らしい!
日本の公開データ研究マップ(JapanStatsMAPs)を公開しました
νガンダム
ガンダムファンに質問! もし好きなモビルスーツを1機だけ、 実物大で見られるなら? ① νガンダム ② サザビー ③ Ζガンダム ④ ガンダムエクシア ⑤ デスティニーガンダム 個人的にはサザビー! あの大きな機体を目の前で見上げてみたい🤖 みんなはどのMSを選ぶ? #ガンダム# #モビルスーツ#
もっと見る
河田兄か沢北
スラムダンク「最強の選手」は? 🥉アニメ勢の答え 流川、仙道 🥈原作勢の答え 沢北、牧 🥇考察勢の答えは↓
LLMに「選択肢から選ばせる」とき、考えさせるかどうかを後から調整できたら便利だと思いませんか🤔 ThinkJev: One Thought, Every Budget for Calibrated Typed Decisions ❓ 型付き決定って何? 💡 チケットのルーティングやルール検査のように、固定の選択肢から選び、その結果をコードが実行する決定です。1回の順伝播で選択肢の確率を読めば速いのですが、日付計算のような多段階の決定では間違えます。 ❓ どう解決するの? 💡 学習なしで、1つのQwen3モデルを2通りに使います。考えずに答えるSystem 1と、考えた後に答えるSystem 2を、同じキャッシュ済みプロンプト上で動かします。1つの思考を途中で切って閉じるだけで、予算ごとの精度曲線も得られます。 ❓ どれくらい効くの? 💡 Qwen3.5-27Bでは、直接回答が62.2%、常に考えると82.7%です。anytime方策は81.6%を、思考トークン72%で達成しました。目標5%のとき、System 1は決定の24.5%に答え、実際の誤り率は3.9%でした。 ❓ 注意点は? 💡 事前登録した節約の基準は、すべてのモデルで満たされませんでした。System 1の確信度は「いつ考えるか」の信号としては弱く、思考予算を変えたら較正のやり直しも必要です。 #LLM推論# #較正#
もっと見る
日米スタートアップの株式報酬には結構な違いがある。 米国ではストックオプション(SO)にVesting(権利の段階的確定)を設定するのが一般的。例えば4年間で権利が確定し、最初の1年はゼロ、1年経過時に25%、その後は毎月少しずつ確定する。途中退職すると未確定分は失効するが、Vestされた分は退職後も一定期間は行使できることが多い。 日本でもVestingは普及しつつあるが、退職すると確定済みのSOも行使できなくなる設計が多い。また、IPOまで権利行使できないといった条件も見られる。 「権利が確定する時期」と「権利を行使できる時期」は異なる。 また米国では、特に上場企業やレイターステージでRSUも普及している。SOが「決められた価格で株を買う権利」なのに対し、RSUは「条件を満たすと株式を受け取れる権利」。 RSUでは株式購入資金が原則不要で、株価が行使価格を下回って無価値になるSOとは性質が異なる。給与やボーナスを補完する株式報酬として使われることが多く、RSU自体にもVestingが設定される。 日本のスタートアップでは税制適格SOが重要な選択肢だが、米国では企業の成長段階に応じてSOからRSUへと報酬設計が変化することも多い。
もっと見る
えぇ…。せっかくAnthropicは今年中に上場間違いなしでストックオプション換金できそうだったろうに。OpenAIなんか来年AIバブルがアレしたらどうなるか分からんぞ
もっと見る
【公開】Life once upon a TIME ランダムに生まれ落ちて、ひとつの人生をなぞるブラウザゲーム。 人生は自動で進み、介入できるのは最大3度の運命の分岐点だけ。 日本語/English/中文/한국어/Español
もっと見る
『Life once upon a TIME』の開発をブログにしました。
あなたは、歴史に名を残さなかった無数の人々のひとり。 江戸の農民に、ローマの市民に、戦国の足軽に生まれ、一生を生きる。 人生は3回変えられる・・・あなたは何を選ぶか? 「Life once upon a TIME」公開 #ブラウザゲーム# #インディーゲーム#
もっと見る
エージェントに正しい権限を渡していても、「その行動をやるべきか」は別の問題です🛡️ Securing AI Agents: Lessons From Real-World Deployment Uberが、自社のAIエージェントを守る多層防御の枠組み「Uber Secure AI」の設計と得られた教訓を公開しました。認可は「誰が行動できるか」に答えますが、エージェントには「この行動は要求に合っているか」を確かめる層も必要だという考え方です。 注目ポイントは3つです。 📜 振る舞いの契約を登録する AI Registryに、各エージェントのペルソナ、許可されたインテント、制約、リスク階層を記録します。Argusがコードやプロンプトから実際の能力を導出し、宣言との差を検査します。 ⚡ 小さなモデルで実行時に判定する AI Guardが提案された行動を評価し、実行前に判定を強制します。経路上に置くため、リモートの汎用LLMではなく、ローカルの小さな専用モデルを並列に動かします。 🎯 一番効いたのは、インテントと制約の限定 エージェントを明示的なインテントと制約に絞ると、操作された指示で動く余地が大きく減りました。代わりに柔軟性は下がります。開発者が回避しないよう、導入の簡単さも制御の一部と位置づけています。 ガードレールはリスクを下げるが排除はしない、と率直に書かれている点も参考になります。定量的な結果は示されていません。 #AIエージェント# #AIセキュリティ#
もっと見る
# ADK 2.0の便利だけど知られていない機能 🌍 エージェントのプロンプトを手作業で調整する代わりに、自動で最適化してくれたら効率的だと思いませんか? ADK 2.0の最適化機能は、サンプラーとエージェントオプティマイザーを組み合わせて、エージェントのインストラクションを自動的に改善する仕組みです。 📌 タイトル:最適化 (Optimization) 🔗 URL: 🧩 概要 最適化機能は、Samplers(候補の評価)とAgent Optimizers(インストラクションの改善)の2つのコンポーネントで構成されます。`LocalEvalSampler` は候補エージェントを評価データセットに対して実行しスコアを算出します。オプティマイザーとしては、GEPAアルゴリズムを用いてルートエージェントのプロンプトを最適化する `GEPARootAgentPromptOptimizer` と、「実行→評価→批評→書き直し」の反復サイクルで改善する `SimplePromptOptimizer` が用意されています。最適化の結果は `OptimizerResult` に格納され、スコア付きの最適化済みエージェントが得られます。 🛠 使い方 CLIから `adk optimize` コマンドで最適化を実行できます。 ```python import asyncio from google.adk.evaluation.eval_config import EvalConfig from google.adk.evaluation.local_eval_sets_manager import LocalEvalSetsManager from google.adk.optimization.local_eval_sampler import LocalEvalSampler from google.adk.optimization.local_eval_sampler import LocalEvalSamplerConfig from google.adk.optimization.simple_prompt_optimizer import SimplePromptOptimizer from google.adk.optimization.simple_prompt_optimizer import ( SimplePromptOptimizerConfig, ) # サンプラーの設定 sampler_config = LocalEvalSamplerConfig( eval_config=EvalConfig(criteria={"response_match_score": 0.75}), app_name="my_agent", train_eval_set="train_eval_set", ) sampler = LocalEvalSampler(sampler_config, LocalEvalSetsManager(agents_dir=".")) # オプティマイザーの実行 optimizer = SimplePromptOptimizer(config=SimplePromptOptimizerConfig()) result = sampler)) # 最適化されたエージェントとスコアを取得 best = result.optimized_agents[0] best_agent = best.optimized_agent print(f"Score: {best.overall_score}") ``` 🏗 本番システムへの組み込み方 ・定期的に最適化を実行し、評価データセットの更新に合わせてプロンプトを継続的に改善する ・`SimplePromptOptimizer` で素早くイテレーションし、`GEPARootAgentPromptOptimizer` で本格的な探索を行う ・最適化前後のスコアを比較し、改善が確認できた場合のみプロンプトを更新する ・評価データセットを実際のユーザーインタラクションから構築し、実用的な最適化を実現する 💡 ユースケース 📈 エージェントのプロンプトを評価スコアに基づいて自動改善する 🔬 複数のプロンプト候補を体系的に比較して最良のものを選定する 🔄 モデル変更やAPI仕様変更後に、プロンプトを新環境に最適化し直す 🎯 特定のタスク(コード生成、要約、分類など)に特化したプロンプトチューニングを行う ⚠️ 注意点 `GEPARootAgentPromptOptimizer` はルートエージェントのプロンプトのみを最適化対象とします。サブエージェントのプロンプト最適化には対応していないため、必要に応じて個別に最適化を行ってください。また、最適化には複数回の評価実行が必要となるため、LLMのAPI呼び出しコストに注意が必要です。 ✨ 最適化機能を活用すれば、試行錯誤に頼っていたプロンプト改善をデータ駆動で自動化できます。定期的な最適化サイクルで、エージェントの品質を継続的に向上させましょう。 #ADK# #AIAgent#
もっと見る