TypeChat
微软开源的类型安全 LLM 接口库,用 TypeScript 构建可靠的自然语言交互
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
微软开源的类型安全 LLM 接口库,用 TypeScript 构建可靠的自然语言交互
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
你是否曾经为 AI 聊天机器人写 Prompt 写到头疼?prompt engineering 听起来高大上,实际上却像在和大模型下一盘永远猜不透的棋。TypeChat 换了一个思路:与其在 Prompt 里费力描述你想要什么,不如直接告诉 AI 你期望的数据长什么样。
构建自然语言交互界面,传统方式依赖复杂的决策树——开发者要提前预判用户可能说的话,然后穷举每种情况下的处理逻辑。大语言模型(LLM)的出现让自然语言理解变得简单,但同时也带来了新问题:LLM 的回复是自由的、不可预测的,如何确保它的输出格式是你程序能够处理的? 2023 年 6 月,微软 TypeScript 团队推出了 TypeChat,用 TypeScript 类型系统来约束 AI 的输出。你定义类型,TypeChat 自动帮你构造 Prompt、验证 AI 回复、修复格式错误,整个流程不需要写一行 prompt。
TypeChat 的工作流只有三个步骤: 第一步:定义类型。用 TypeScript 的 interface 或 type 定义应用支持的所有意图(Intent)。例如一个情感分析工具,只需要定义一个联合类型:
const sentimentSchema = z.union([
z.object({ sentiment: z.literal("positive"), reason: z.string() }),
z.object({ sentiment: z.literal("negative"), reason: z.string() }),
z.object({ sentiment: z.literal("neutral"), reason: z.string() })
]);
第二步:调用 TypeChat。传入 schema 和用户输入,TypeChat 自动构造 Prompt 并发送给 LLM:
const session = createTypeChatSession<T>(model, sentimentSchema);
const response = await session.userMessage("The movie was fantastic!");
// response 自动推断为上述联合类型之一
第三步:自动验证与修复。如果 AI 回复不符合 schema 定义,TypeChat 会自动发起修复请求,直到输出格式正确为止。这解决了 AI 输出格式不稳定(hallucination 的一种)的核心痛点。
TypeChat 的核心洞察是:TypeScript 的类型系统本身就是一种形式化规范。用类型定义意图,比写自然语言 Prompt 更精确、更易维护。 架构上,TypeChat 由几层组成:类型定义层(开发者提供的 schema)、Prompt 生成层(将类型转换为 LLM 指令)、验证层(用 Zod 做类型验证)、修复层(当验证失败时触发重试)。支持多种模型后端:OpenAI GPT 系列、Azure OpenAI、本地模型(如 Ollama)等。 项目本身用 TypeScript 编写,零外部依赖(除 LLM SDK),适合嵌入到任何 TypeScript/Node.js 项目中。同时提供了 Python 绑定和 C# 绑定,覆盖主流开发语言。
TypeChat 不是独立服务,而是一个 SDK 包:
# TypeScript/JavaScript
npm install typechat
# Python
pip install typechat
没有 Dockerfile、没有 docker-compose,因为它不需要部署。通过 npm install 或 pip install 即可获得自然语言解析能力。
TypeChat 解决了一个真实痛点:在生产环境中,AI 的不可预测性是最大的工程障碍。TypeChat 通过类型约束,把 AI 输出变成了可控的、类型安全的结构化数据,让 AI 从一个神奇的问答机器变成了一个可靠的数据转换函数。 局限性在于:对于非常开放的对话场景(如闲聊),schema 定义会变得过于复杂甚至不可行。TypeChat 适合意图明确、输出结构化的场景(如表单填写、API 调用、数据录入),而不适合开放式对话。
TypeChat 代表了 AI 编程工具的一种新范式:用静态类型系统的确定性,对冲 LLM 输出的不确定性。它不是要替代 Prompt Engineering,而是用 Schema Engineering 在更高层次解决问题。对开发者来说,这是目前将 LLM 自然语言能力安全集成到应用中的最佳实践之一。 数据来源:GitHub (microsoft/TypeChat),截至 2026 年 6 月,8,658 Stars,MIT 开源协议。