在过去的几个月里,我们已经见证了围绕最新一波大语言模型掀起的讨论热潮。很多人以对话的方式与大模型进行交流,这也是最直接的方式。但这一方式面临一个问题:如何将这些模型最好地集成到现有的应用程序界面中仍然存在很大的问题。换句话说,我们如何利用人工智能将用户的请求转化为应用程序能够处理的内容?以及我们如何确保我们的应用程序是安全的,并且进行的工作可以让开发者和用户都信赖?为了解决上述问题,微软开源了一个名为 TypeChat 的实验性库,它可以很容易地获得类型良好的结构化数据, 其在自然语言与应用程序模式(application schema)和 API 之间建立起了一座桥梁。项目地址:https://github.com/Microsoft/TypeChat目前,TypeChat 已经与 OpenAI API 和 Azure OpenAI 服务进行了一些非常基本的集成。网友表示:「借助 TypeChat,AI 能输出准确的 JSON 以与人类研发的系统集成。」「TypeChat 将 prompt 工程替换为 schema 工程:无需编写非结构化的自然语言 prompt 来描述所需输出的格式,而是编写 TS 类型定义。」还有网友表示 TypeChat 是迈向未来的一大步。至于为何构建 TypeChat 库,微软表示,当前人们可以与 LLM 进行对话交流,在这当中,需要解析语言,然而,人类输入的语言和 LLM 理解的语言在结构上差别很大,典型的软件很难从原始文本中重建语言。TypeChat 可以帮助 LLM 以 JSON 的形式响应,并且响应结果非常合理:例如用户要求将这句话「我可以要一份蓝莓松饼和一杯特级拿铁咖啡吗?」转化成 JSON 格式,TypeChat 响应结果如下:微软表示,他们一直在提示符中使用 TypeScript 类型,可以说,给定一个提示和 TS 类型,聊天机器人就会使用这些类型构造一个新提示:以下是将 TypeChat 连接到 LLM 并确定句子是否定、中性还是肯定的基本代码。//./src/sentimentSchema.ts
// The following is a schema definition for determining the sentiment of a some user input.
export interface SentimentResponse {
/** The sentiment of the text. */
sentiment: "negative" | "neutral" | "positive";
}
//./src/main.ts
import * as fs from "fs";
import * as path from "path";
import dotenv from "dotenv";
import * as typechat from "typechat";
import {SentimentResponse} from "./sentimentSchema";
// Load environment variables.
dotenv.config ({ path: path.join (__dirname, "../.env") });
// Create a language model based on the environment variables.
const model = typechat.createLanguageModel (process.env);
// Load up the contents of our "Response" schema.
const schema = fs.readFileSync (path.join (__dirname, "sentimentSchema.ts"), "utf8");
const translator = typechat.createJsonTranslator<SentimentResponse>(model, schema, "SentimentResponse");
// Process requests interactively.
typechat.processRequests ("😀>", /*inputFile*/undefined, async (request) => {
const response = await translator.translate (request);
if (!response.success) {
console.log (response.message);
return;
}
console.log (`The sentiment is ${response.data.sentiment}`);
});
TypeChat 可以以多种不同的方式使用。目前微软讨论的方式主要是使用数据模式将用户意图转换为结构化响应;然而,TypeChat 还可以使用 API 模式来构建基本程序。https://microsoft.github.io/TypeChat/blog/introducing-typechat/