扫一扫分享
微软团队,包括 TypeScript 创始人 Anders Heljsberg 在内,推出 TypeChat,旨在解决自然语言界面开发过程中面临的复杂问题。简单来说,TypeChat 是一个可以用 “人话” 来构建类型安全 UI 的工具库。
TypeChat 是一个革命性的库,它简化了使用 TypeScript 构建自然语言模型界面的过程。传统模式下,创建自然语言模型界面是一项复杂的任务,通常依赖复杂的决策树来确定意图并收集行动所需的输入。随着大型语言模型(LLM)的出现,这个过程变得更加容易,但它也带来了新的挑战,例如限制模型回复的安全性、构建响应以供进一步处理以及确保模型回复的有效性。
TypeChat 通过用 schema 工程取代 prompt 工程来应对这些挑战。它允许开发者定义代表其自然语言模型应用程序支持的意图的类型。这适用于从简单的情感分类到复杂的购物车或音乐应用场景。一旦定义了类型,TypeChat 就会处理剩下的事情,使用类型构建对 LLM 的 prompt,根据 schema 验证 LLM 响应,总结实例来确保与用户意图保持一致。
TypeChat 的主要目的是抹平自然语言与应用程序可以使用的结构化数据之间的差距。它的目的是让开发者更容易地将自然语言界面集成到他们的应用程序中。通过提供具有 shema(某些类型)和请求的模型,开发者可以处理类型良好的结构化数据,从而使将自然语言集成到应用程序中的过程更加简化和高效。
要检验 TypeChat 代码的实际效果,让我们思考一个示例。假设我们有一个咖啡店应用程序,我们希望将用户意图转换为咖啡订单项目列表。我们可以为咖啡订单项目定义一个类型,并使用 TypeChat 处理自然语言输入并将其映射到经过验证的 JSON 作为输出。通过这种方式,我们可以轻松地将用户的自然语言请求转换为我们的应用程序可以理解和处理的结构化数据。
以下是咖啡订单的 TypeScript 类型定义:
interface CoffeeOrder {
type: string;
size: string;
extras: string[];
}
要使用 TypeChat,我们可以创建一个新实例并将 CoffeeOrder 类型传递给它:
import { TypeChat } from 'typechat';
const typeChat = new TypeChat<CoffeeOrder>();
// 用户输入
const userInput = "I would like a large cappuccino with extra foam and a shot of vanilla.";
// 使用 TypeChat 获取一个结构化的数据
const order = typeChat.process(userInput);
console.log(order);
// 输出: { type: 'cappuccino', size: 'large', extras: ['extra foam', 'shot of vanilla'] }
在此示例中,TypeChat 获取用户的自然语言输入并将其转换为我们的应用程序可以轻松处理的结构化数据CoffeeOrder
手机预览