tekimax-omat
v0.4.1
Published
Open Multimodal Assessment Toolkit — a type-safe AI SDK for building human-centered, multimodal AI applications.
Downloads
206
Maintainers
Readme
🌍 OMAT — Open Multimodal Assessment Toolkit
tekimax-omat is the Open Multimodal Assessment Toolkit (OMAT) — an open-source framework enabling K-12 edtech developers to build, evaluate, and improve AI-powered formative assessments using multimodal student inputs: text, speech, drawing, and structured responses.
OMAT provides three interrelated public goods:
| Component | Description | License | |-----------|-------------|---------| | Assessment Pipeline SDK | Configurable rubric schemas, feedback generation pipelines, and model-agnostic evaluation interfaces validated against learning science constructs. | Apache 2.0 | | Formative Assessment Benchmark Suite | Standardized evaluation measuring AI performance across accuracy, fairness, learning progression alignment, and actionability. | Apache 2.0 | | Multimodal Student Response Dataset | De-identified student work across written, spoken, and drawn modalities — annotated by expert educators and aligned to Common Core and NGSS standards. | CC-BY-4.0 |
Coming to tekimax-omat
AssessmentPipelinemodule — Configurable claim–evidence–task schemas in TypeScript/Zod for structured formative assessment- Multimodal student input — Process text, speech, handwriting, and drawings as assessment evidence
useAssessment()React hook — Real-time streaming formative feedback in your UIFairnessAuditPlugin— Automated demographic performance reporting across student subgroupsRubricValidatorPlugin— Validate AI feedback against rubric schemas and learning progressionsLearningProgressionPlugin— Map student responses to developmental learning sequences- Formative benchmarks — Run standardized evaluations for accuracy, fairness, actionability, and alignment
- Provider-agnostic evaluation — Benchmark any AI system, regardless of provider
- Multimodal dataset access — Load annotated student response data directly from the SDK
Equity-Centered by Design — OMAT centers multilingual learners, students with disabilities, and underserved communities at every level. Speech and drawing inputs ensure students who can't yet write can still demonstrate what they know.
OMAT follows the vision set forward by Digital Promise and the K-12 AI Infrastructure Program — that AI in education deserves shared, open infrastructure built for the students who need it most.
🚀 The Universal Standard
The Tekimax SDK solves the fragmentation of AI APIs. Instead of rewriting your integration code for every provider (handling different request formats, streaming implementations, and error types), you use one standard interface.
- Write Once, Run Anywhere: Switch between OpenAI (Cloud) and Ollama (Local) with a single line of config.
- Type-Safe: Full TypeScript support with Zod validation for inputs and outputs.
- Multi-Modal: Text, images, audio, video, and embeddings through a unified namespace API.
- OpenResponses Catalog: Fuses
models.devmetadata into standardModelDefinitionobjects for reasoning, modalities, and token limits. - Middleware Plugins: Built-in architecture for Security (
PIIFilterPlugin), Scalability (MaxContextOverflowPlugin), and Telemetry (LoggerPlugin). - React Ready: Includes a
useChathook for instant UI integration, complete with SSE streaming. - Redis Adapter (optional): Response caching, rate limiting, token budgets, and session storage with any Redis client.
💻 Installation
npm install tekimax-omatMigrating from tekimax-ts? The package has been renamed. Simply run
npm install tekimax-omat— the API is identical.
💻 Usage
1. Initialize the Client
The Tekimax client is the unified entry point. It wraps any provider (OpenAI, Anthropic, Ollama, etc.) and exposes a consistent multi-modal interface.
import {
Tekimax,
OpenAIProvider,
AnthropicProvider,
OllamaProvider,
GeminiProvider
} from 'tekimax-omat'
// OpenAI
const client = new Tekimax({
provider: new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY })
})
// Anthropic
const claude = new Tekimax({
provider: new AnthropicProvider({ apiKey: process.env.ANTHROPIC_API_KEY })
})
// Ollama (Local)
const local = new Tekimax({
provider: new OllamaProvider({ baseUrl: 'http://localhost:11434' })
})2. Multi-Modal Interfaces
The client is organized into cohesive namespaces:
Text (Chat)
const response = await client.text.chat.completions.create({
model: 'gpt-4o',
messages: [{ role: 'user', content: 'Hello!' }]
})
console.log(response.message.content)Images (Generation & Vision)
// Generate
const image = await client.images.generate({
model: 'dall-e-3',
prompt: 'A cyberpunk city',
size: '1024x1024'
})
// Analyze (Vision)
const analysis = await client.images.analyze({
model: 'gpt-4o',
image: 'https://example.com/image.png',
prompt: 'Describe this scene'
})Audio (TTS)
const audio = await client.audio.speak({
model: 'tts-1',
input: 'Hello world',
voice: 'alloy'
})Video (Analysis)
const analysis = await client.videos.analyze({
model: 'gemini-1.5-flash',
video: 'https://example.com/video.mp4',
prompt: 'Summarize this clip'
})Embeddings
const vectors = await client.text.embed({
model: 'text-embedding-3-small',
input: ['Hello world', 'Tekimax SDK is awesome']
})
console.log(vectors.embeddings)3. Cross-Provider Model Catalog
The SDK strictly implements the OpenResponses schema, optionally fusing metadata from models.dev so your application always knows what capabilities the active provider supports.
// Returns standard ModelDefinition[] populated with reasoning levels, modal limits, and costs
const models = await client.provider.getModels?.()
if (models) {
console.log(models.find(m => m.id === 'gpt-4o')?.modalities.input) // ['text', 'image', 'audio', 'video']
}⚡ Optional Redis Adapter
No extra dependency — bring your own ioredis, @upstash/redis, or node-redis:
import { ResponseCache, RateLimiter, TokenBudget, SessionStore } from 'tekimax-omat'
import Redis from 'ioredis'
const redis = new Redis(process.env.REDIS_URL)
// Cache AI responses (avoid repeat API costs)
const cache = new ResponseCache(redis, { ttl: 3600 })
// Enforce rate limits per provider
const limiter = new RateLimiter(redis, { maxRequests: 60, windowSeconds: 60 })
// Track daily token spend
const budget = new TokenBudget(redis, { maxTokens: 100_000, periodSeconds: 86400 })
// Conversation state for serverless
const sessions = new SessionStore(redis, { ttl: 1800 })🗺️ Roadmap
| Feature | Description | Status |
|---------|-------------|--------|
| Middleware Plugins | Pre-built and custom lifecycle hooks for Security, Telemetry, and Scalability. | ✅ Shipped |
| OpenResponses Catalog | Provider abstraction parsing models.dev metadata for token limits, reasoning capabilities, and allowed modalities. | ✅ Shipped |
| Real-time SSE Streaming | Native SDK token streaming, StreamChunk event typing, and full React hooks support (useChat). | ✅ Shipped |
| Redis Adapter | Optional response caching, rate limiting, token budget tracking, and session storage with any Redis client. | ✅ Shipped |
| Observability | Telemetry and tracing via plugins architecture. | ✅ Shipped |
| ProvisionPlugin | Endpoint-agnostic API gateway client with deployment-scoped auth. | ✅ Shipped |
| OCR Service | Multi-model document extraction (Gemini, PaddleOCR, Ollama GLM-OCR). | ✅ Shipped |
| OMAT Assessment Pipeline | Rubric schemas, feedback generation, model-agnostic evaluation. | 🔨 In Development |
| OMAT Benchmark Suite | Accuracy, fairness, actionability, learning progression alignment. | 🔨 In Development |
| OMAT Multimodal Dataset | Annotated student responses across text, speech, and drawing. | 🔨 In Development |
| useAssessment() Hook | Real-time formative feedback React hook. | 🔨 In Development |
| FairnessAuditPlugin | Automated demographic performance reporting. | 🔨 In Development |
| Batch API | Queue thousands of requests and retrieve results asynchronously. | 🔜 Planned |
| Edge Runtime | Cloudflare Workers / Deno support. | 🔜 Planned |
| Assistants / Threads | Stateful conversation management with persistence. | 🔜 Planned |
| Fine-tuning API | Programmatic fine-tuning via internal and integrated APIs. | 🔜 Planned |
Want to help? Pick a feature and open a PR, or join the discussion in GitHub Issues.
📜 License
- SDK & Code — Apache 2.0
- Dataset & Documentation — CC-BY-4.0
💖 Support
tekimax-omat is open source. If you find it valuable, please consider becoming a sponsor to support long-term maintenance.
