Tool Directory / AI

Wire AI into your app without the ceremony

The AI layer accumulated more unnecessary abstraction than any other part of the stack. Most features that ship do so through a plain HTTPS call to a model provider, and the frameworks that promised to simplify that often added more concepts than they removed.

Reviewed August 2026. Back to the tool directory.

What this layer decides

Two things that matter and one that does not. What matters: where inference runs, because that sets your per-request cost and your data boundary, and how easily you can swap models, because the leader changes every few months and you do not want a rewrite each time.

What does not matter nearly as much as the discourse suggests: which framework you use to orchestrate calls. A well-typed function that sends messages and parses a structured response covers the large majority of production AI features. Reach for orchestration when you actually have multi-step agents with tools and retries, not before.

Model providers

Claude API

Anthropic - long context and tool use

Strongest current option for code generation, long-document reasoning, and agentic tool use, with prompt caching that cuts the cost of a large fixed system prompt substantially. Structured outputs and tool calling are first class. Pricing is per token with meaningful discounts for cached input, so measure your cache hit rate before estimating spend. anthropic.com

OpenAI API

The broadest surface area

Beyond chat you get embeddings, image generation, speech to text, text to speech, and realtime voice from one account and one billing relationship. Its request format became the de facto standard, which means most other providers and local runtimes expose an OpenAI-compatible endpoint - a genuinely useful portability property. platform.openai.com

Ollama

Local models, zero per-token cost

One command pulls an open-weight model and serves it on localhost behind an OpenAI-compatible API, so switching between local and hosted is a base URL change. Excellent for development, for privacy-sensitive workloads, and for high-volume classification where a small model is sufficient. You trade output quality and pay in hardware and operations instead. ollama.com

SDKs and orchestration

Vercel AI SDK

v6 - the TypeScript default

One typed interface across dozens of providers, so switching models is a one-line change rather than a refactor. Streaming, tool calling, and structured output via schema all work the same way regardless of who is serving the tokens. Version 6 added durable workflows, a sandbox for agent code execution, and prebuilt chat UI elements. Not tied to hosting on Vercel. ai-sdk.dev

Official provider SDKs

Fewest layers between you and the model

Anthropic and OpenAI both ship well-maintained TypeScript and Python clients that expose new capabilities the day they launch, with no abstraction lag. If you are committed to one provider and want the newest features immediately, use their SDK directly. You give up cheap model switching, which may be a fine trade.

LangChain

1.x - use it deliberately or not at all

It reached a 1.0 line and cleaned up a great deal of the early sprawl, and LangGraph is a reasonable state machine for genuinely multi-step agents. But the abstraction tax is real: chains, runnables, and retrievers wrapped around what is ultimately an HTTP request, and debugging means unwinding several layers to see the prompt that was sent. langchain.com

When to skip the framework entirely

Skip orchestration when your feature is one prompt, one response, and one parse. That describes summarization, classification, extraction, rewriting, and most chat interfaces - which is to say most shipped AI features. A single typed function with a retry and a timeout is easier to debug, cheaper to test, and never breaks on a framework upgrade.

Adopt orchestration when you have branching multi-step agents, tool loops that need supervision, human-in-the-loop approval steps, or long-running workflows that must survive a process restart. That is a real category of problem and a state machine genuinely helps. It is just far smaller than the tutorials imply.

Retrieval is the same story. If you have fewer than a few million embeddings, pgvector inside the Postgres you already run beats adding a dedicated vector database, and it keeps your embeddings in the same backup as the rows they describe. See the database layer for the vector options worth considering.

Our pick

Vercel AI SDK against Claude, with Ollama locally

Build on the Vercel AI SDK v6. It is the thinnest useful abstraction in TypeScript: typed streaming, tool calls, and schema-validated structured output, with model switching as a single line change. That last property matters more than any current benchmark, because the best model for your task will not be the best model in six months.

Point it at the Claude API for reasoning, code, and agentic work; at OpenAI when you need embeddings, audio, or images from the same vendor. Run Ollama in development so nobody burns tokens on a hot reload loop. Add LangGraph only when you have a real multi-step agent, and store your embeddings in pgvector until you have measured a reason not to.