Skip to content

Framework adapters

vstack.adapters wraps all 34 patterns as native tools for the major AI agent / LLM frameworks. Same registry, same input model, same detection output — only the framework wrapper differs.

# LangChain
from vstack.adapters.langchain import as_langchain_tools
tools = as_langchain_tools()

# LangGraph
from vstack.adapters.langgraph import as_langgraph_nodes
nodes = as_langgraph_nodes()

# CrewAI
from vstack.adapters.crewai import as_crewai_tools
tools = as_crewai_tools()

# AutoGen (no autogen import required)
from vstack.adapters.autogen import as_autogen_function_manifest, as_autogen_callables
manifest = as_autogen_function_manifest()
callables = as_autogen_callables()

# LlamaIndex
from vstack.adapters.llamaindex import as_llamaindex_tools
tools = as_llamaindex_tools()

# Pydantic AI
from vstack.adapters.pydantic_ai import as_pydantic_ai_tools
tools = as_pydantic_ai_tools()

# OpenAI Assistants + Anthropic Messages (pure JSON)
from vstack.adapters.openai import as_openai_tool_schemas, as_anthropic_tool_schemas

# Open WebUI plugin manifest
from vstack.adapters.openwebui import as_openwebui_manifest
manifest = as_openwebui_manifest(api_base_url="http://127.0.0.1:8000")

Install

Each adapter is import-gated; install only the framework extras you need:

pip install 'valanistack[langchain]'
pip install 'valanistack[langgraph]'
pip install 'valanistack[crewai]'
pip install 'valanistack[llamaindex]'
pip install 'valanistack[pydantic_ai]'
pip install 'valanistack[adapters]'   # all five gated adapters

The autogen, openai, and openwebui adapters need no extra — they're pure JSON / Python.

Architecture

Every adapter consumes a PatternToolSpec derived from vstack.mcp._registry:

from vstack.adapters import list_pattern_tool_specs, pattern_tool_spec_for
specs = list_pattern_tool_specs()          # 34 specs
lewin_spec = pattern_tool_spec_for("lewin")
print(lewin_spec.name, lewin_spec.input_schema)

The shared run_pattern_dispatch() function is the single chunk of logic every adapter shares: validate input against the pattern's Pydantic model → resolve an LLM client → run the analyzer → return the detection as a JSON-safe dict.

Running demos

See examples/ for end-to-end demo scripts (one per framework).