微軟開源TypeChat庫,給大語言模型換種提示,一行代碼安裝
在過去的幾個月里,我們已經(jīng)見證了圍繞最新一波大語言模型掀起的討論熱潮。很多人以對話的方式與大模型進行交流,這也是最直接的方式。
但這一方式面臨一個問題:如何將這些模型最好地集成到現(xiàn)有的應用程序界面中仍然存在很大的問題。
換句話說,我們?nèi)绾卫萌斯ぶ悄軐⒂脩舻恼埱筠D(zhuǎn)化為應用程序能夠處理的內(nèi)容?以及我們?nèi)绾未_保我們的應用程序是安全的,并且進行的工作可以讓開發(fā)者和用戶都信賴?
為了解決上述問題,微軟開源了一個名為 TypeChat 的實驗性庫,它可以很容易地獲得類型良好的結(jié)構(gòu)化數(shù)據(jù), 其在自然語言與應用程序模式(application schema)和 API 之間建立起了一座橋梁。
圖片
項目地址:https://github.com/Microsoft/TypeChat
目前,TypeChat 已經(jīng)與 OpenAI API 和 Azure OpenAI 服務進行了一些非常基本的集成。
網(wǎng)友表示:「借助 TypeChat,AI 能輸出準確的 JSON 以與人類研發(fā)的系統(tǒng)集成。」
圖片
「TypeChat 將 prompt 工程替換為 schema 工程:無需編寫非結(jié)構(gòu)化的自然語言 prompt 來描述所需輸出的格式,而是編寫 TS 類型定義?!?/p>
圖片
還有網(wǎng)友表示 TypeChat 是邁向未來的一大步。
圖片
TypeChat 介紹
只需一行代碼就能啟動并運行 TypeChat:
圖片
至于為何構(gòu)建 TypeChat 庫,微軟表示,當前人們可以與 LLM 進行對話交流,在這當中,需要解析語言,然而,人類輸入的語言和 LLM 理解的語言在結(jié)構(gòu)上差別很大,典型的軟件很難從原始文本中重建語言。
TypeChat 可以幫助 LLM 以 JSON 的形式響應,并且響應結(jié)果非常合理:例如用戶要求將這句話「我可以要一份藍莓松餅和一杯特級拿鐵咖啡嗎?」轉(zhuǎn)化成 JSON 格式,TypeChat 響應結(jié)果如下:
圖片
微軟表示,他們一直在提示符中使用 TypeScript 類型,可以說,給定一個提示和 TS 類型,聊天機器人就會使用這些類型構(gòu)造一個新提示:
圖片
圖片
以下是將 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 可以以多種不同的方式使用。目前微軟討論的方式主要是使用數(shù)據(jù)模式將用戶意圖轉(zhuǎn)換為結(jié)構(gòu)化響應;然而,TypeChat 還可以使用 API 模式來構(gòu)建基本程序。
想要體驗的小伙伴,可以上手試試了。
參考鏈接:https://microsoft.github.io/TypeChat/blog/introducing-typechat/