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

検索結果 Pydantic
Pydantic コミュニティ
1つのキーワードが1つのコミュニティです。
コミュニティ作成
アカウント
見つかりません
Pydantic を含む検索結果
TL;DR DeepAgents・Pydantic AI・Claude Agent SDK・Codex・OpenCodeを、コードを書き直さず1つのPython SDKで切り替えられるようにするツールです。Claude Agent SDKと同じquery()インターフェースを採用しています。 タイトル: LiteAgents (BerriAI/liteagents) URL: ポイント 🔀 harnessパラメータを変えるだけでエージェント基盤を切り替え可能 🌐 LiteLLM連携でOpenAI・Anthropic・Gemini・Groqなど8種以上のモデルに対応 🛠️ 型付きPython関数を渡すだけで各ハーネスのツールスキーマに自動適合 💬 LiteAgentClientで複数回のquery()にまたがる永続的な会話履歴を管理 ⏱️ Temporal連携でクラッシュリカバリ・操作リプレイ・冪等なツール実行を実現 ⚙️ プロファイルはPython・YAML・JSONのいずれでも定義可能 📡 async/awaitとストリーミングにフル対応 ハーネスを乗り換えるたびにコードを書き直す時代が、これで終わるかもしれません。 #AIエージェント# #OSS#
もっと見る
# OpenAI Agent SDKの便利で実践的な使い方 🌍 エージェントに必要な情報を型安全に注入しましょう! Local contextを使えば、ユーザー情報やロガー、データフェッチャーを依存注入のように渡せます。 📌 タイトル:Context management – Local context 🔗 URL: 🧩 概要 OpenAI Agent SDKのLocal context機能は、エージェントとツールに対して型安全な依存注入を提供します。`context`パラメータにPydanticモデルやdataclassを渡すことで、ツール関数内からユーザー情報やロガー、外部サービスのクライアントにアクセスできます。`Agent[UserInfo]`のジェネリック型により、コンテキストの型不一致をコンパイル時に検出できます。 🛠 使い方 `dataclass` で `UserInfo(uid, name, is_premium)` を定義し、`@tool` デコレータ付きの関数で `ToolContext[UserInfo]` を受け取ります。例えば `get_recommendations(wrapper: ToolContext[UserInfo], category: str)` では `wrapper.context` からユーザー情報にアクセスし、` に応じてプレミアム/通常のおすすめを返せます。`debug_tool` では `wrapper.tool_name`、`wrapper.tool_call_id`、`wrapper.tool_arguments` でデバッグ情報を取得できます。エージェントは `Agent[UserInfo]` のジェネリック型で定義し、`Agent(name="personal_assistant", instructions="ユーザーに合わせた回答をしてください", tools=[get_recommendations, debug_tool])` のようにツールを登録します。実行時は `UserInfo(uid="u_12345", name="田中太郎", is_premium=True)` を作り、`await "おすすめの本を教えて", context=user)` で渡します。 より実践的には、`AppContext` dataclass に `user: UserInfo`、`logger: logging.Logger`、`db: DatabaseClient`、`feature_flags: dict[str, bool]` をまとめます。`fetch_order_history(wrapper: ToolContext[AppContext], limit: int = 10)` では `ctx = wrapper.context` でコンテキストを取得し、` でログ出力、`ctx.feature_flags.get("new_order_api")` でフィーチャーフラグに応じた分岐、`ctx.db.get_orders(ctx.user.uid, limit)` でDB問い合わせを行います。`Agent[AppContext]` として `Agent(name="order_assistant", tools=[fetch_order_history])` を定義します。 🏗 実践的な使い方 Local contextの最大の価値は、ツール関数をピュアなビジネスロジックに保てることです。ユーザー情報やDBクライアントをグローバル変数で参照する代わりに、contextから注入することで、テスタビリティが大幅に向上します。テスト時にはモックのコンテキストを渡すだけです。 `ToolContext`の`tool_name`、`tool_call_id`、`tool_arguments`は、構造化ログに不可欠です。どのツールがどの引数で呼ばれたかをトレースでき、本番環境のデバッグが容易になります。 `Agent[UserInfo]`のジェネリック型を使うと、型チェッカー(mypy等)がコンテキストの型不一致を検出します。例えば、`Agent[UserInfo]`に`AppContext`を渡そうとするとコンパイルエラーになります。これにより、ランタイムエラーを防げます。 フィーチャーフラグや設定値もコンテキスト経由で渡すパターンが有効です。環境ごとに異なる挙動を、コンテキストの値で制御できます。 💡 ユースケース 👤 ユーザーのプレミアム/フリー区分に応じたパーソナライズ 📝 tool_call_idを使った構造化ログとトレーシング 🧪 テスト時のモックコンテキスト注入によるユニットテスト 🚩 フィーチャーフラグによるツールの挙動切り替え ⚠️ 注意点 - コンテキストにシークレット(APIキー等)を含めると、ステートのシリアライズ時に漏洩する可能性があります - コンテキストオブジェクトは実行中に共有されるため、ミュータブルな状態の変更はスレッドセーフに注意してください - `Agent[T]`のジェネリック型チェックは静的解析ツール依存です。ランタイムでは強制されません - 巨大なオブジェクト(大量データ等)をコンテキストに入れるとメモリ効率が悪化します ✨ Local contextにより、クリーンなアーキテクチャでテスタブルなエージェントが構築できます! #OpenAIAgentSDK# #AIAgent#
もっと見る
# OpenAI Agent SDKの便利で実践的な使い方 🌍 エージェント間の引き継ぎで、理由やメタデータも一緒に渡したいことはありませんか? Handoff inputsとon_handoffを使えば、構造化されたデータとともにスムーズな引き継ぎが実現できます。 📌 タイトル:Handoffs – Handoff inputs 🔗 URL: 🧩 概要 Handoff inputsは、handoff時にモデルが生成する構造化データを引き継ぎ先エージェントに渡す仕組みです。`on_handoff`コールバックと組み合わせることで、引き継ぎ理由のログ記録、メタデータの事前取得、引き継ぎ先エージェントへのコンテキスト注入が可能になります。 🛠 使い方 Pydanticモデル `EscalationData(BaseModel)` で `reason: str`, `priority: str = "normal"`, `customer_tier: str = "standard"` を定義し、handoff時の構造化データとします。`on_escalation(ctx: RunContext, input_data: EscalationData)` コールバックでは、`input_data.reason` や `input_data.priority` をログ出力し、`ctx.context["customer_id"]` から顧客データを事前取得して `ctx.context["customer_data"]` に格納します。エスカレーション先の `Agent(name="escalation", instructions="...")` と、トリアージ用の `Agent(name="triage", handoffs=[Handoff(agent=escalation_agent, input_type=EscalationData, on_handoff=on_escalation, handoff_description="複雑な問い合わせや緊急対応が必要な場合")])` を定義します。`await input="二重請求されました。すぐに対応してほしいです。", context={"customer_id": "C-12345"})` で実行します。 🏗 実践的な使い方 **エスカレーション理由の構造化** `EscalationData(reason, priority)`のようにPydanticモデルで引き継ぎ理由を型安全に定義できます。モデルが自由文で理由を生成するのではなく、構造化されたデータとして受け取れるため、後続処理やログ分析が容易になります。 **on_handoffでのデータ事前取得** `on_handoff`コールバック内で、引き継ぎ先エージェントが必要とするデータをDBやAPIから事前に取得できます。これにより、引き継ぎ先エージェントが改めてデータ取得ツールを呼ぶ必要がなくなり、レイテンシを削減できます。 **メタデータの伝達** 返金エージェントに`{"reason": "duplicate_charge", "priority": "high"}`を渡すことで、返金ポリシーの判断に必要な情報を構造化された形で引き継げます。自由文の会話履歴からモデルが推測するよりも正確です。 **監査ログの記録** `on_handoff`内で引き継ぎの理由・タイミング・優先度を監査ログに記録できます。カスタマーサポートのSLA管理や、エスカレーション傾向の分析に活用できます。 💡 ユースケース 🔄 カスタマーサポートのエスカレーション(理由と優先度を構造化して引き継ぎ) 💳 返金処理への引き継ぎ(二重請求/商品不良/キャンセルなどの理由を明示) 📊 引き継ぎ理由の集計・分析(on_handoffでログ記録→ダッシュボード化) ⚡ 引き継ぎ先エージェントのレイテンシ削減(on_handoffでデータプリフェッチ) ⚠️ 注意点 - `input_type`に指定したPydanticモデルのフィールドが多すぎると、モデルが正確にデータを生成できなくなります。必須フィールドは最小限にし、オプショナルフィールドにはデフォルト値を設定してください。 - `on_handoff`内で例外が発生するとhandoff全体が失敗します。外部API呼び出しにはtry-exceptを入れ、フォールバック処理を用意してください。 - `on_handoff`は同期的に実行されます。重い処理を入れるとhandoffのレイテンシが増加するため、必要最小限の処理に留めてください。 - `input_type`を指定しない場合、`on_handoff`のコールバックは`input_data`引数を受け取りません。 ✨ Handoff inputsで構造化されたコンテキストを引き継ぎ、エージェント間の連携をスムーズにしましょう! #OpenAIAgentSDK# #AIAgent#
もっと見る
# Claude Agent SDKの便利で実践的な使い方 📦 エージェントの出力を型付き JSON で受け取り、UI コンポーネントに直接バインドできます。 構造化出力は、`output_format` でエージェントの最終出力を JSON スキーマに従った型付きデータとして取得する機能です。Zod / Pydantic で型安全に検証できます。 📌 タイトル:エージェントから構造化された出力を取得する 🔗 URL: 🧩 概要 `output_format` に JSON スキーマを指定すると、エージェントはツール実行・分析の結果を自由文ではなく構造化 JSON で返します。Zod(TypeScript)/ Pydantic(Python)で型安全に検証可能です。 🛠 使い方 `output_format={"type": "json_schema", "schema": your_schema}` をオプションに設定します。Pydantic の `.model_json_schema()` や Zod の `z.toJSONSchema()` でスキーマを生成できます。結果は `ResultMessage.structured_output` に格納されます。 🏗 実践的な使い方 ・レシピアプリで Web 検索結果を `{name, prep_time_minutes, ingredients[], steps[]}` の型付き JSON で受け取り、UI コンポーネントへ直接バインドします。 ・TODO 抽出エージェントで Grep + Bash(git blame) を自律実行し `{todos[{text, file, line, author?, date?}], total_count}` を返します。 ・機能実装計画を `{summary, steps[{description, complexity}], risks[]}` のスキーマで受け取り、プロジェクト管理ツールに自動投入します。 💡 ユースケース 🎨 UI コンポーネントへの直接データバインディング 📊 分析結果の構造化レポート生成 🔧 プロジェクト管理ツールへの自動データ投入 ⚠️ 注意点 構造化出力はストリーミングと非互換です。JSON 結果は最終 `ResultMessage.structured_output` にのみ出力されます。`error_max_structured_output_retries` を検知して、より単純なプロンプトでの再試行や非構造化フォールバックを実装してください。 #ClaudeAgentSDK# #AI#
もっと見る
# OpenAI Agent SDKの便利で実践的な使い方 🌍 LLM の出力を「文字列のまま祈る」のではなく、型安全な構造化データとして受け取りましょう。output_type を使えば、壊れた JSON に悩まされる日々とはお別れです。 output_type に Pydantic モデル・dataclass・TypedDict を指定するだけで、エージェントの出力が自動的にバリデーション済みの構造化データになります。 📌 タイトル:Agents -- Output types 🔗 URL: 🧩 概要 Agent の `output_type` パラメータを設定すると、LLM の出力が Structured Outputs として強制されます。Pydantic BaseModel、dataclass、TypedDict のいずれかを指定でき、出力は自動的にパースされバリデーションされます。これにより、下流のコードが安全に構造化データを扱えるようになります。`output_type` を設定すると、エージェントのファイナル出力はテキストではなく指定した型のオブジェクトになります。 🛠 使い方 `BaseModel` を継承した `CalendarEvent` クラスに `name: str`, `date: str`, `participants: list[str]` フィールドを定義し、`Agent` の `output_type=CalendarEvent` に指定します。` ...)` の ` が `CalendarEvent` 型として返され、` や `event.participants` で型安全にアクセスできます。 🏗 実践的な使い方 **メールからカレンダーイベントを抽出して API 登録** 構造化出力をそのまま外部 API に渡すパイプラインです。 ` email_body)` で抽出した ` を `CalendarEvent` 型として受け取り、`calendar_api.create_event(title= date= attendees=event.participants)` でそのまま外部 API に渡します。 **Enum 出力による分岐オーケストレーション** 分類結果を enum で返し、コードで確実に分岐させるパターンです。 `TicketCategory(str, Enum)` で `billing`, `technical`, `general` を定義し、`Classification(BaseModel)` に `category: TicketCategory` と `confidence: float` を持たせます。`Agent` の `output_type=Classification` を設定して分類を実行し、` を `match` 文で分岐して `handoff_to_billing`, `handoff_to_engineering`, `handoff_to_general` にルーティングします。 **ビジネスクリティカルな処理での型保証** 「壊れた JSON は絶対に許容できない」業務で、Structured Outputs が安全弁として機能します。 `InvoiceData(BaseModel)` に `invoice_number: str`, `amount: float`, `currency: str`, `due_date: str`, `line_items: list[dict[str, str | float]]` を定義し、`Agent` の `output_type=InvoiceData` に指定することで、請求書データの構造化抽出を型安全に保証します。 💡 ユースケース 📧 メールから CalendarEvent(name, date, participants) を抽出し、カレンダー API に自動登録 🏷 サポートチケットを Enum 分類し、category に応じてコードで確実にルーティング 💰 請求書・契約書の構造化抽出で「壊れた JSON が許されない」業務処理を型安全に 📊 アンケート自由記述を構造化データに変換し、集計パイプラインに直接投入 ⚠️ 注意点 - output_type を指定すると、エージェントの最終出力は必ずその型になります。通常のテキスト応答は返せなくなるため、テキスト応答が必要な場合は output_type を設定しないでください。 - 複雑すぎるネスト構造は LLM の出力精度を下げる可能性があります。できるだけフラットな構造を心がけましょう。 - Optional フィールドを適切に使い、LLM が情報を見つけられなかった場合の None を許容する設計にしましょう。 ✨ output_type を活用すれば、LLM の出力をそのままビジネスロジックに組み込めます。「パースして祈る」から「型で保証する」へ、一歩進んだエージェント開発を始めましょう! #OpenAIAgentSDK# #AIAgent#
もっと見る
# OpenAI Agent SDKの便利で実践的な使い方 🌍 LLM の出力を「文字列のまま祈る」のではなく、型安全な構造化データとして受け取りましょう。output_type を使えば、壊れた JSON に悩まされる日々とはお別れです。 output_type に Pydantic モデル・dataclass・TypedDict を指定するだけで、エージェントの出力が自動的にバリデーション済みの構造化データになります。 📌 タイトル:Agents -- Output types 🔗 URL: 🧩 概要 Agent の `output_type` パラメータを設定すると、LLM の出力が Structured Outputs として強制されます。Pydantic BaseModel、dataclass、TypedDict のいずれかを指定でき、出力は自動的にパースされバリデーションされます。これにより、下流のコードが安全に構造化データを扱えるようになります。`output_type` を設定すると、エージェントのファイナル出力はテキストではなく指定した型のオブジェクトになります。 🛠 使い方 `BaseModel` を継承した `CalendarEvent` クラスに `name: str`, `date: str`, `participants: list[str]` フィールドを定義し、`Agent` の `output_type=CalendarEvent` に指定します。` ...)` の ` が `CalendarEvent` 型として返され、` や `event.participants` で型安全にアクセスできます。 🏗 実践的な使い方 **メールからカレンダーイベントを抽出して API 登録** 構造化出力をそのまま外部 API に渡すパイプラインです。 ` email_body)` で抽出した ` を `CalendarEvent` 型として受け取り、`calendar_api.create_event(title= date= attendees=event.participants)` でそのまま外部 API に渡します。 **Enum 出力による分岐オーケストレーション** 分類結果を enum で返し、コードで確実に分岐させるパターンです。 `TicketCategory(str, Enum)` で `billing`, `technical`, `general` を定義し、`Classification(BaseModel)` に `category: TicketCategory` と `confidence: float` を持たせます。`Agent` の `output_type=Classification` を設定して分類を実行し、` を `match` 文で分岐して `handoff_to_billing`, `handoff_to_engineering`, `handoff_to_general` にルーティングします。 **ビジネスクリティカルな処理での型保証** 「壊れた JSON は絶対に許容できない」業務で、Structured Outputs が安全弁として機能します。 `InvoiceData(BaseModel)` に `invoice_number: str`, `amount: float`, `currency: str`, `due_date: str`, `line_items: list[dict[str, str | float]]` を定義し、`Agent` の `output_type=InvoiceData` に指定することで、請求書データの構造化抽出を型安全に保証します。 💡 ユースケース 📧 メールから CalendarEvent(name, date, participants) を抽出し、カレンダー API に自動登録 🏷 サポートチケットを Enum 分類し、category に応じてコードで確実にルーティング 💰 請求書・契約書の構造化抽出で「壊れた JSON が許されない」業務処理を型安全に 📊 アンケート自由記述を構造化データに変換し、集計パイプラインに直接投入 ⚠️ 注意点 - output_type を指定すると、エージェントの最終出力は必ずその型になります。通常のテキスト応答は返せなくなるため、テキスト応答が必要な場合は output_type を設定しないでください。 - 複雑すぎるネスト構造は LLM の出力精度を下げる可能性があります。できるだけフラットな構造を心がけましょう。 - Optional フィールドを適切に使い、LLM が情報を見つけられなかった場合の None を許容する設計にしましょう。 ✨ output_type を活用すれば、LLM の出力をそのままビジネスロジックに組み込めます。「パースして祈る」から「型で保証する」へ、一歩進んだエージェント開発を始めましょう! #OpenAIAgentSDK# #AIAgent#
もっと見る
# AIエージェントをソフトウェアに組み込むプラクティス # Verified Structured Output|検証済み構造化出力 🎯 LLMの出力をそのまま下流システムに流していませんか?JSONが壊れている、値が不正、フィールドが足りない――「黙って壊れる」を防ぐのがこのパターンです。 🔥 解決する課題 LLMの出力は本質的に曖昧な自然言語です。下流のコードやAPIが期待する型やフィールドに従わない出力が返ると、パース失敗・型エラー・無効な値の混入がサイレントに後続処理を破壊します。フォーマットが正しくても「過去の日付を未来として返す」「存在しない商品IDを含める」といったビジネスルール違反は、構文チェックだけでは検出できません。 💡 提案パターン LLMの出力をresponse_formatやfunction_callingでJSON Schemaに準拠させる第1層(スキーマ検証)と、決定論的コードでビジネスルール制約を検証する第2層(意味的検証)の二段構成にします。違反時はエラー内容をコンテキストに追加して自己修正リトライを行い、予算内(目安1-3回)で収束しなければfail-fastします。温度は0.0-0.3に設定し、構造化出力の従順率を確保します。 ✅ 選定条件 使うとき: - LLMの出力を下流のコード・API・データベースが消費する - 出力が従うべきスキーマ(型・必須フィールド・値域)が定義可能 - 不正な出力が後続処理を壊すと業務影響がある 使わないとき: - 出力が自由形式のテキスト(要約・対話)で構造化の必要がない - 出力スキーマが頻繁に変わりスキーマ維持コストが利益を上回る - 不正出力をそのまま捨てても問題ない低リスク用途 ⚠️ 落とし穴 - リトライ時にエラーメッセージを毎回追加するとトークン消費が膨らみます。直前のエラーだけを渡すか要約する工夫が必要です - スキーマのフィールド数が多すぎると(概ね15超)LLMの従順率が下がります。大きいスキーマは分割呼び出しを検討してください - response_formatはプロバイダ依存です。スキーマ定義はPydanticやJSON Schemaなど中間表現で管理してください 🔧 実装方針 - 第1層(スキーマ検証)ではresponse_formatやfunction_callingでJSON Schemaに準拠させ、Pydanticモデルで型・値域を強制します - 第2層(ビジネスルール検証)では決定論的コードで日付範囲・ID存在・権限等のドメイン制約を検証します - 検証失敗時はエラー内容をコンテキストに追加して自己修正リトライを行い、予算(目安1-3回)で打ち切りfail-fastします - LLMの温度は0.0-0.3に設定し、構造化出力の従順率を確保します - スキーマ定義はPydanticやJSON Schemaなどプロバイダ非依存の中間表現で管理し、移植性を担保します #AIエージェント# #ソフトウェアアーキテクチャ#
もっと見る
# OpenAI Agent SDKの便利で実践的な使い方 🌍 エージェントの実行結果から、次のターン、UI表示、デバッグに必要な情報を正確に取り出せていますか? RunResultの各プロパティを理解して、実行結果を最大限に活用しましょう。 📌 タイトル:Results 🔗 URL: 🧩 概要 `RunResult`はエージェント実行の全成果を保持するオブジェクトです。ユーザーへの最終回答(`final_output`)、次ターンの入力構築(`to_input_list()`)、UI/監査用の全アイテム(`new_items`)、handoff後のエージェント(`last_agent`)、中断と再開(`interruptions`/`to_state()`)、デバッグ用の生レスポンス(`raw_responses`)など、多面的なサーフェスを提供します。 🛠 使い方 `Agent(name="assistant", instructions="You are a helpful assistant.")` を定義し、`result = await input="Pythonのasync/awaitについて教えてください")` で実行します。` で最終回答を取得し、` + [{"role": "user", "content": "具体的な例も教えてください"}]` で次のターンの入力を構築して再度 ` に渡します。` をイテレートして各アイテムの `item.type` と ` を確認できます。`result.last_agent` でhandoff後のエージェントを取得し、次のターンで使用します。`result.interruptions` がある場合は ` で状態を保存し、承認後に ` state=state)` で再開します。`result.raw_responses` でモデル名やトークン使用量を確認でき、`result.last_response_id` でResponses APIのチェーンが可能です。 🏗 実践的な使い方 **final_output — ユーザー向けレスポンス** `final_output`はエージェントの最終回答です。`output_type`を指定している場合はPydanticモデルのインスタンスが返り、指定していない場合は文字列が返ります。APIレスポンスやUI表示に直接使えます。 **to_input_list() — マルチターン会話の構築** `to_input_list()`は実行結果を次のターンの入力形式に変換します。ユーザーの新しいメッセージを追加して再度` **new_items — UI表示と監査ログ** `new_items`には今回の実行で生成された全アイテム(メッセージ、ツール呼び出し、handoff等)がメタデータ付きで格納されています。チャットUIでのステップバイステップ表示や、監査ログの記録に活用できます。どのエージェントがどのツールを呼んだかまで追跡できます。 **last_agent — handoff後の継続** handoffが発生した場合、`last_agent`は最後に処理を行ったエージェントを返します。次のターンでは`last_agent`を使って` **interruptions + to_state() — 中断と再開** human-in-the-loopのワークフローで、エージェントが中断された場合に`to_state()`で実行状態をスナップショットとして保存できます。人間の承認後、保存した状態から再開することで、実行の途中からやり直せます。 **raw_responses — プロバイダレベルのデバッグ** `raw_responses`にはプロバイダからの生のレスポンスが格納されています。モデル名、トークン使用量、レイテンシなどの情報にアクセスでき、コスト分析やパフォーマンスチューニングに役立ちます。 **last_response_id — Responses APIチェーン** OpenAIのResponses APIを使用している場合、`last_response_id`を次の実行の`previous_response_id`に渡すことで、サーバー側で会話を継続できます。最も軽量な会話継続方法です。 💡 ユースケース 💬 `final_output`: APIレスポンスやチャットUIへの最終回答表示 🔄 `to_input_list()`: マルチターン会話の履歴管理 📋 `new_items`: ステップバイステップのUI表示、監査ログ記録 🤖 `last_agent`: handoff後のエージェント継続 📸 `to_state()`: human-in-the-loop ワークフローの中断・再開 🔍 `raw_responses`: トークン使用量の監視、コスト分析 ⚠️ 注意点 - `final_output`が`None`になることがあります(handoffのみで終了した場合など)。必ずNullチェックをしてください。 - `to_input_list()`の結果にはツール呼び出しの履歴も含まれます。不要な場合は手動でフィルタリングしてください。 - `new_items`のアイテム数は実行の複雑さに比例して増加します。大量のツール呼び出しがある場合、メモリ使用量に注意してください。 - `to_state()`で保存した状態はシリアライズ可能ですが、長期保存する場合はSDKのバージョン互換性に注意してください。 - `last_response_id`はOpenAI固有の機能です。他のプロバイダでは利用できません。 ✨ RunResultの各サーフェスを使いこなして、エージェントの実行結果を余すことなく活用しましょう! #OpenAIAgentSDK# #AIAgent#
もっと見る
🚀 FastAPIを「最初のエンドポイント」から「本番でスケールするAIシステム」まで一気通貫で学べる電子書籍です。LLM/RAG serving まで踏み込み、各章末に面接問題が付くのが実用的です。 タイトル: FastAPI for AI Engineers: From First Endpoint to Production-Scale AI Systems URL: 🚀 概要 PythonでMLモデルやLLM/RAGを本番運用するAIエンジニア向けの実践書(初版・2026年、AI Engineering Insider)。全10章・計100問の面接問題に加え、実在の障害事例やコストモデルのコラムが織り込まれています。 ❓ 解決する課題 ・モデルは作れても、本番でスケールするAPIとして安全に配信するのは別スキル ・LLM/RAGの serving はストリーミング・ガードレール・コスト管理など固有の難しさがある 本書はFastAPIを「AI/MLの事実上の serving レイヤー」として体系化します。 💡 構成と扱う技術 ・基礎:ASGI/WSGI、Uvicorn、OpenAPI、Pydantic v2によるスキーマ分離と検証 ・実装:冪等性、適切なステータスコード、ページネーション、Router→Service→Repositoryのクリーンアーキテクチャ ・DB/セキュリティ:SQLAlchemy/SQLModel/Alembic、N+1、プールサイジング、JWT、BOLA対策、OWASP API Top 10 ・非同期:「イベントループを絶対にブロックしない」、def vs async defの使い分け、httpxのリトライ/サーキットブレーカー 🎯 核心(第9章 AI/RAG/LLM) ・lifespanで重みを一度だけロード、CPU推論はスレッドにオフロード ・LLMゲートウェイで認証・プロンプト・ガードレール・コスト計測を集約、SSEでトークンを逐次配信 ・埋め込み+ベクトルDB(pgvectorから開始)でRAGを構築し、出力はPydanticで検証→失敗なら差し戻して再試行 ・max_tokensを「支出上限」として型で強制 📊 注目ポイント ・実在の障害(Netflix、Stripe、GitLab、Optus、Air Canada)から学ぶ実践志向 ・第10章はGunicorn+Uvicorn、K8sのliveness/readiness、可観測性の3本柱(p99 vs p50)、SLOベースのアラートまでカバー #FastAPI# #AIエンジニアリング#
もっと見る
「なぜその判断をしたのか?」にAIエージェントが答えるには、フラットなチャットログではなく“つながった記憶”が必要でした🕸️ それを1コマンドで丸ごと立ち上げるツールの登場です。 タイトル: Introducing Create Context Graph URL: 🕸️ 概要 Create Context Graphは、グラフベースのメモリを備えたフルスタックのAIエージェントアプリを、たった1コマンドで生成するNeo4j LabsのCLIスキャフォールディングツールです。生成されるアプリには、FastAPIバックエンド、Next.jsフロントエンド、AIエージェントフレームワーク、Neo4jグラフデータベースが一式含まれます。 ❓ 解決する課題 AIエージェントは作りやすくなりましたが、関係性や因果を理解するのは依然として苦手です。 ・フラットなチャットログやベクトルストアでは、「なぜその判断をしたのか」「何がこの作業をブロックしているのか」といった構造的な問いに答えられません ・つまり、エージェントには関係を捉える「高度な記憶」が欠けていました 💡 方法論と仕組み ・データを「コンテキストグラフ」(つながったナレッジ構造)に変換し、チャット履歴・ベクトルコンテンツ・推論トレースの3種のメモリを整理します ・エンティティモデルはPOLE+O(Person, Organization, Location, Event, Object)に、ドメイン固有の型を重ねます ・エージェントが判断を下すと、その推論チェーンがDecisionTraceノードとして記録され、紐づくTraceStepで構成されるため、クエリ可能な来歴(provenance)が生まれます ・PydanticAI・LangGraph・Claude Agent SDKなど複数フレームワークに対応し、22の組み込みドメイン、Linear・Claude Code・GitHubのコネクタ、推論経路のリアルタイム可視化、シークレット自動リダクションを備えます 🌍 ユースケース ・課題の依存関係やチームのワークフローを開発者がクエリする ・Claude Codeのセッション履歴から個人の開発分析を行う ・判断・コミット・作業項目を組み合わせたマルチツールの相関分析 判断の来歴をクエリ可能にできるため、エージェントの説明可能性やデバッグ、チーム横断の知識統合に役立ちます。 #GraphRAG# #Neo4j#
もっと見る