- Category
- Developer Tools
- Rank
- No. 465Tools index
Previous survey · No. 459 ·
- Pricing
- Open Source
- Type
- TOOL
- Builder
- microsoft
- GitHub
- 8.7k stars
- Date
About
Microsoft's library for building natural language interfaces using TypeScript types — LLMs respond in JSON conforming to your schema.
What it does
TypeChat turns supported user intents into a schema-driven translation process. It builds model prompts from declared types, parses the returned object, validates it, and can send validation errors back for one repair attempt. Applications may add validation beyond the schema or remove unwanted null values.
Why it's ranked here
The appeal is concrete: schemas replace growing decision trees and much manual prompt construction, while validation creates a clear boundary before application code consumes model output. Repair diagnostics, custom checks, and configurable model access make it practical. Its built-in provider support and extra repair request still narrow the fit.
What's good
Validation is central rather than decorative. Invalid objects can trigger a focused correction request containing the diagnostic, and applications can apply domain checks after schema validation. Model requests include retries, timeouts, response-size limits, proxy support, and multimodal prompt content. Hierarchical schemas can route requests among narrower intent sets.
Tradeoffs
A failed validation may require another model request, adding latency and model usage, and the implementation permits only one repair pass per translation. Built-in model factories target OpenAI and Azure OpenAI endpoints. Python use is described from source, while C# support lives in a separate repository. Intent confirmation is generated without another model, but applications still own execution safety.
How to use it well
Use it when a typed application must convert varied user wording into a bounded set of intents or structured actions. Start with small discriminated unions, add domain validation, and use hierarchical schemas as the intent surface grows. It handles translation and validation, not the safe execution, authorization, or business logic behind accepted actions.
Technical notes+
typescript/src/typechat.ts implements createJsonTranslator, extracts text between the first { and last }, parses it, validates it, optionally strips nulls, and performs at most one diagnostic repair. typescript/src/model.ts defines the model abstraction, multimodal prompt shapes, OpenAI Chat Completions and Responses API routing, Azure OpenAI access, proxy handling, retries, per-request timeouts, and response-size limits. typescript/src/index.ts exposes the core modules, while typescript/src/ts/index.ts and typescript/src/zod/index.ts expose separate validation surfaces. python/src/typechat/__init__.py exports the Python API, and python/src/typechat/_internal/ts_conversion/__init__.py converts Python declarations into TypeScript schema text. python/tests/__init__.py and python/tests/utilities.py show a pytest and snapshot-testing structure.
Observed
- License
- MIT, identified by SPDX headers in Python source and tooling code.
- Primary languages
- TypeScript and Python.
- Installation
- The TypeScript and JavaScript package installs from npm as typechat.
- Interface
- Library APIs for TypeScript, JavaScript, and Python; no end-user CLI is documented in the supplied text.
- Model providers
- Built-in TypeScript model access supports OpenAI and Azure OpenAI REST endpoints.
- Testing structure
- The repository includes a python/tests directory using pytest and snapshot utilities.
Read from README.md, site/.eleventy.js, typescript/src/index.ts, typescript/src/model.ts, typescript/src/result.ts, typescript/src/typechat.ts, tools/scripts/fix-dependabot-alerts.mjs, typescript/src/ts/index.ts, typescript/src/zod/index.ts, python/src/typechat/__init__.py, typescript/src/interactive/index.ts, python/src/typechat/_internal/ts_conversion/__init__.py, python/tests/__init__.py, python/tests/utilities.py.
What it can do
Convert natural language requests to JSON
Natural language text → JSON conforming to TypeScript schema
Validate LLM responses against TypeScript types
LLM response and TypeScript schema → Validated JSON or error message
Define structured data schemas for AI responses
TypeScript type definitions → JSON schema for LLM responses
Build natural language interfaces for applications
Application requirements and TypeScript types → Natural language interface library
Parse user intent into structured data
User natural language query → Structured data object matching defined schema
Tags
Tech Stack
Comments (0)
No comments yet
Editorially curated, with community endorsements as a secondary signal. Corrections welcome.
