AI Providers
import { openaiProvider } from '@intentform/provider-openai'
const provider = openaiProvider({ apiKey: process.env.OPENAI_API_KEY!, model: 'gpt-4o-mini',})Available providers
Section titled “Available providers”OpenAI
Section titled “OpenAI”pnpm add @intentform/provider-openaiimport { openaiProvider } from '@intentform/provider-openai'
openaiProvider({ apiKey: process.env.OPENAI_API_KEY!, model: 'gpt-4o-mini', // default})Anthropic
Section titled “Anthropic”pnpm add @intentform/provider-anthropicimport { anthropicProvider } from '@intentform/provider-anthropic'
anthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY!, model: 'claude-sonnet-4-6', // default})pnpm add @intentform/provider-googleimport { googleProvider } from '@intentform/provider-google'
googleProvider({ apiKey: process.env.GOOGLE_API_KEY!, model: 'gemini-2.0-flash', // default})Ollama (local)
Section titled “Ollama (local)”pnpm add @intentform/provider-ollamaimport { ollamaProvider } from '@intentform/provider-ollama'
ollamaProvider({ model: 'llama3.2', baseUrl: 'http://localhost:11434', // default})Custom provider
Section titled “Custom provider”Implement the AiProvider interface to integrate any AI backend:
import type { AiProvider, GenerateInput } from '@intentform/core'
const myProvider: AiProvider = { async generateStructured(input: GenerateInput) { const response = await fetch('/api/intent', { method: 'POST', body: JSON.stringify(input), }) const json = await response.json() return { data: json.data, confidence: json.confidence, usage: { tokensIn: json.usage?.input_tokens ?? 0, tokensOut: json.usage?.output_tokens ?? 0, }, } },}This pattern is useful for keeping API keys server-side. See Keep API Key Server-Side.
Provider interface
Section titled “Provider interface”interface AiProvider { generateStructured(input: GenerateInput): Promise<{ data: unknown confidence: number usage?: { tokensIn: number; tokensOut: number; cost?: number } }>}