langchain-development
PythonでのLangChainおよびLangGraph開発を専門的にサポートするスキルで、チェーンの構成、エージェント、メモリ、RAGの実装まで幅広くカバーします。
description の原文を見る
Expert guidance for LangChain and LangGraph development with Python, covering chain composition, agents, memory, and RAG implementations.
SKILL.md 本文
LangChain Development
LangChain、LangGraph、および Python を使用した LLM パワード アプリケーション開発のエキスパートです。
主要原則
- 正確な Python の例を含む簡潔で技術的な回答を書く
- 関数型・宣言型プログラミングを使用し、可能な限りクラスを避ける
- コードの重複を避け、イテレーションと モジュール化を優先
- 補助動詞を含む説明的な変数名を使用(例:is_active、has_context)
- PEP 8 スタイルガイドを厳密に遵守
コード整理
ディレクトリ構造
機能に基づいて論理的なモジュールにコードを整理:
project/
├── chains/ # LangChain chain definitions
├── agents/ # Agent configurations and tools
├── tools/ # Custom tool implementations
├── memory/ # Memory and state management
├── prompts/ # Prompt templates and management
├── retrievers/ # RAG and retrieval components
├── callbacks/ # Custom callback handlers
├── utils/ # Utility functions
├── tests/ # Test files
└── config/ # Configuration files
命名規則
- ファイル名、関数名、変数名には snake_case を使用
- クラス名には PascalCase を使用
- プライベート関数の先頭にアンダースコアを付与
- 目的を示す説明的な名前を使用(例:
create_retrieval_chain、build_agent_executor)
LangChain Expression Language (LCEL)
チェーン構成
- LCEL を使用してパイプオペレータ(
|)でチェーンを構成 - 複雑なワークフローに
RunnableSequenceとRunnableParallelを優先 RunnableLambdaで適切なエラーハンドリングを実装
from langchain_core.runnables import RunnableParallel, RunnablePassthrough
chain = (
RunnableParallel(
context=retriever,
question=RunnablePassthrough()
)
| prompt
| llm
| output_parser
)
ベストプラクティス
- 単一入力には常に
invoke()を、複数入力にはbatch()を使用 - リアルタイム トークン ストリーミングには
stream()を使用 - ランタイム構成に
with_config()を実装 bind()を使用してツールまたは関数をランナブルに添付
エージェントとツール
ツール開発
@toolデコレータを使用し、明確なドキストリングでツールを定義- すべてのツールパラメータに型ヒントを含める
- 適切な入力検証を実装
- 可能な限り構造化された出力を返す
from langchain_core.tools import tool
from pydantic import BaseModel, Field
class SearchInput(BaseModel):
query: str = Field(description="Search query string")
@tool(args_schema=SearchInput)
def search_database(query: str) -> str:
"""Search the database for relevant information."""
# Implementation
return results
エージェント構成
- モデルの機能に基づいて
create_react_agentまたはcreate_tool_calling_agentを使用 - 最大イテレーション数を持つ適切なエージェント実行機能を実装
- 監視とデバッグ用コールバックを追加
- 複雑なツール対話には構造化チャットエージェントを使用
メモリと状態管理
会話メモリ
- 短い会話には
ConversationBufferMemoryを使用 - 長い会話には
ConversationSummaryMemoryを実装 - 固定長の履歴には
ConversationBufferWindowMemoryを検討 - 本番環境ではpersistent storage バックエンド(Redis、PostgreSQL)を使用
LangGraph State
- TypedDict を使用して明示的な状態スキーマを定義
- 複雑な状態更新に対して適切な状態レデューサーを実装
- 再開可能なワークフローのためにチェックポイント処理を使用
- セッション間での状態永続性を処理
from typing import TypedDict, Annotated
from langgraph.graph import StateGraph
from operator import add
class AgentState(TypedDict):
messages: Annotated[list, add]
context: str
next_step: str
graph = StateGraph(AgentState)
RAG (Retrieval-Augmented Generation)
ドキュメント処理
- 適切なテキストスプリッターを使用(RecursiveCharacterTextSplitter、MarkdownTextSplitter)
- オーバーラップを含む適切なチャンク サイズを実装
- スプリット中にメタデータを保持
- ファイル タイプに適したドキュメント ローダーを使用
ベクトル ストア
- スケール要件に基づいてベクトル ストアを選択
- 適切な埋め込みキャッシング を実装
- 利用可能な場合はハイブリッド検索(密集+疎)を使用
- 適切な類似度メトリックスを構成
検索戦略
- 複雑な質問にはマルチクエリー検索を実装
- コンテクスチュアル圧縮を使用してノイズを削減
- より良いコンテキスト用に親ドキュメント検索を検討
- 関連性向上のため再ランキング を実装
LangSmith 統合
監視
LANGCHAIN_TRACING_V2=trueでトレーシング を有効化- 簡単に特定するため実行名を追加
- フィルタリング用のカスタムメタデータを実装
- カテゴリー化にタグを使用
デバッグ
- パフォーマンス ボトルネックのトレースを確認
- トークン使用パターンを分析
- チェーン コンポーネント全体のレイテンシを監視
- エラー率のアラートを設定
エラーハンドリング
- 指数バックオフで再試行ロジック を実装
- LLM プロバイダーからのレート制限を適切に処理
- 重要なパスに対してフォールバック チェーンを使用
- 十分なコンテキストでエラーをログに記録
from langchain_core.runnables import RunnableWithFallbacks
chain_with_fallback = primary_chain.with_fallbacks(
[fallback_chain],
exceptions_to_handle=(RateLimitError, TimeoutError)
)
パフォーマンス最適化
- I/O バウンド操作に非同期メソッド(
ainvoke、abatch)を使用 - 高コストな操作にキャッシング を実装
- 可能な限りリクエストをバッチ処理
- より良いユーザー体験のためストリーミング を使用
テスト
- 個別のチェーン コンポーネント用にユニットテストを作成
- 完全なチェーン用に統合テストを実装
- ユニットテストで LLM 呼び出しをモッキング
- エッジケースとエラー状態をテスト
依存関係
- langchain
- langchain-core
- langchain-community
- langgraph
- langsmith
- python-dotenv
- pydantic
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- mindrally
- リポジトリ
- mindrally/skills
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/mindrally/skills / ライセンス: Apache-2.0
関連スキル
agent-browser
AI エージェント向けのブラウザ自動化 CLI です。ウェブサイトとの対話が必要な場合に使用します。ページ遷移、フォーム入力、ボタンクリック、スクリーンショット取得、データ抽出、ウェブアプリのテスト、ブラウザ操作の自動化など、あらゆるブラウザタスクに対応できます。「ウェブサイトを開く」「フォームに記入する」「ボタンをクリックする」「スクリーンショットを取得する」「ページからデータを抽出する」「このウェブアプリをテストする」「サイトにログインする」「ブラウザ操作を自動化する」といった要求や、プログラマティックなウェブ操作が必要なタスクで起動します。
anyskill
AnySkill — あなたのプライベート・スキルクラウド。GitHubを基盤としたリポジトリからエージェントスキルを管理、同期、動的にロードできます。自然言語でクラウドスキルを検索し、オンデマンドでプロンプトを自動ロード、カスタムスキルのアップロードと共有、スキルバンドルの一括インストールが可能です。OpenClaw、Antigravity、Claude Code、Cursorに対応しています。
engram
AIエージェント向けの永続的なメモリシステムです。バグ修正、意思決定、発見、設定変更の後はmem_saveを使用してください。ユーザーが「覚えている」「記憶している」と言及した場合、または以前のセッションと重複する作業を開始する際はmem_searchを使用します。セッション終了前にmem_session_summaryを使用して、コンテキストを保持してください。
skyvern
AI駆動のブラウザ自動化により、任意のウェブサイトを自動化できます。フォーム入力、データ抽出、ファイルダウンロード、ログイン、複数ステップのワークフロー実行など、ユーザーがウェブサイトと連携する必要があるときに使用します。Skyvernは、LLMとコンピュータビジョンを活用して、未知のサイトも自動操作可能です。Python SDK、TypeScript SDK、REST API、MCPサーバー、またはCLIを通じて統合できます。
pinchbench
PinchBenchベンチマークを実行して、OpenClawエージェントの実世界タスクにおけるパフォーマンスを評価できます。モデルの機能テスト、モデル間の比較、ベンチマーク結果のリーダーボード提出、またはOpenClawのセットアップがカレンダー、メール、リサーチ、コーディング、複数ステップのワークフローにどの程度対応しているかを確認する際に使用します。
openui
OpenUIとOpenUI Langを使用してジェネレーティブUIアプリを構築できます。これらはLLM生成インターフェースのためのトークン効率的なオープン標準です。OpenUI、@openuidev、ジェネレーティブUI、LLMからのストリーミングUI、AI向けコンポーネントライブラリ、またはjson-render/A2UIの置き換えについて述べる際に使用します。スキャフォルディング、defineComponent、システムプロンプト、Renderer、およびOpenUI Lang出力のデバッグに対応しています。