langchain-patterns
LangChain、LangGraph、LiteLLMのパターン — チェーン構成(LCEL)、モデルサイズ横断的な構造化出力、RAG、モデルルーティング、Ollmaローカルモデル、およびプロバイダーに依存しない設計に対応しています。これらのツールを活用することで、複数のLLMモデルを組み合わせた複雑なワークフローの構築、様々なサイズのモデルからの一貫性のある出力形式の取得、検索拡張生成(RAG)による精度の高い回答生成、用途に応じた最適なモデルの自動選択、ローカル環境でのモデル実行、そして特定のLLMプロバイダーに縛られない柔軟なシステム設計が可能になります。
description の原文を見る
LangChain, LangGraph, LiteLLM patterns — chain composition (LCEL), structured output across model sizes, RAG, model routing, Ollama local models, and provider-agnostic design
SKILL.md 本文
重要: 使用前に必ず langchain-docs MCP に対してインポートとメソッドシグネチャを確認してください。LangChain API は頻繁に変更されます。
チェーン構成 (LCEL)
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnablePassthrough, RunnableParallel
from langchain_core.output_parsers import StrOutputParser
prompt = ChatPromptTemplate.from_messages([
("system", "You are a {role}."),
("human", "{input}")
])
chain = prompt | llm | StrOutputParser()
# Parallel execution
parallel = RunnableParallel(summary=summary_chain, keywords=keyword_chain)
# Branching
from langchain_core.runnables import RunnableBranch
branch = RunnableBranch(
(lambda x: x["type"] == "code", code_chain),
default_chain,
)
構造化出力 (デュアルモデル)
from pydantic import BaseModel, Field
class Entity(BaseModel):
"""Keep flat for small models. Use Field descriptions as implicit instructions."""
name: str = Field(description="Entity name as it appears in text")
entity_type: str = Field(description="One of: person, place, organization")
confidence: float = Field(ge=0.0, le=1.0)
# Works across all providers (preferred)
structured = llm.with_structured_output(Entity, method="json_schema")
# For small Ollama models — force JSON mode:
from langchain_ollama import ChatOllama
small_llm = ChatOllama(model="qwen3:4b-instruct", format="json", temperature=0)
重要なポイント: method="json_schema" (JSON_MODE) は Ollama を含むすべてのプロバイダーで確実に動作します。method="function_calling" (TOOL) は小規模モデルの複雑なスキーマでは None を返す可能性があります。
LiteLLM ルーティング
# LiteLLM プロキシ経由 (マルチモデル構成に推奨)
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(base_url="http://litellm-proxy:4000", model="claude-sonnet-4-20250514")
# フォールバック付きダイレクト
from litellm import completion
response = completion(
model="claude-sonnet-4-20250514",
messages=messages,
fallbacks=["gpt-4o", "ollama/qwen3:8b"],
)
Ollama / ローカルモデル
from langchain_ollama import ChatOllama
llm = ChatOllama(
model="qwen3:4b-instruct",
base_url="http://ollama:11434",
temperature=0,
format="json", # Essential for structured output on small models
# num_ctx=8192, # Set explicitly if needed
)
ローカルモデルの重要なポイント:
- 4B 命令チューニングモデルは、制約付き生成により 8B 以上のモデルより構造化タスクで優れたパフォーマンスを発揮できます。
- 構造化出力の場合は思考モードを無効化してください。
- VRAM を監視してください: 並行リクエストは OOM を引き起こします。
- 命令チューニング済みのバリアントを使用し、ベースモデルは決して使わないでください。
LangGraph (ステートフルワークフロー)
from langgraph.graph import StateGraph, END
from typing import TypedDict
class State(TypedDict):
input: str
draft: str
iteration: int
graph = StateGraph(State)
graph.add_node("generate", generate_node)
graph.add_node("review", review_node)
graph.set_entry_point("generate")
graph.add_conditional_edges("review", should_revise, {"revise": "generate", "accept": END})
app = graph.compile()
よくある落とし穴
- シンプルな API 呼び出しで十分な場合に LangChain を使わないでください。
- 常に
max_tokensを明示的に設定してください。 OutputParserExceptionを処理してください — 構造化出力は時々失敗します。- オブザーバビリティには コールバックまたは LangSmith を使用してください。
- 決定論的な呼び出し (temp=0, 同じ入力) をキャッシュしてください。
- LangChain のインポートは安定していないと仮定しないでください — 常にドキュメントに対して確認してください。
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- pvliesdonk
- リポジトリ
- pvliesdonk/agents.md
- ライセンス
- MIT
- 最終更新
- 2026/3/21
Source: https://github.com/pvliesdonk/agents.md / ライセンス: MIT
関連スキル
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出力のデバッグに対応しています。