Typechat.net將Typechat的想法帶到.NET。
Typechat.net提供了跨平台庫,可幫助您使用強大類型,類型驗證和簡單類型安全程序(計劃)構建自然語言界面。強大的打字可能有助於製造使用語言模型更確定性和可靠的軟件。
// Translates user intent into strongly typed Calendar Actions
var model = new LanguageModel(Config.LoadOpenAI());
var translator = new JsonTranslator<CalendarActions>(model);
// Translate natural language request
CalendarActions actions = await translator.TranslateAsync(requestText);
typechat.net處於主動開發,並頻繁更新。當團隊探索空間並結合反饋時,該框架將不斷發展。隨附的示例中顯示了支持的方案。文檔也將繼續改善。如有疑問,請查看代碼。
typechat.net當前由以下組件組成:
Microsoft.typechat :將用戶意圖轉化為強烈鍵入和驗證的對象的類。
Microsoft.typechat.program :綜合,驗證和運行JSON程序的類。
Microsoft.typechat.semantickernel :與Microsoft語義內核集成,用於型號,插件,嵌入和其他功能。
Typechat使用語言模型將用戶意圖轉化為符合模式的JSON。然後,將此JSON驗證並進行驗證為打字對象。根據需要進行其他約束檢查。驗證錯誤將發送回該語言模型,該模型使用它們來修復其最初返回的JSON。
Typechat提供:
[Comment("Milks currently in stock")]
public class Milks
{
[JsonVocab("whole milk | two percent milk | nonfat milk | soy milk | almond milk")]
public string Name { get; set; }
}
TypeChat.Program將自然語言請求轉換為簡單程序(計劃),表示為JSON。
可以將JSON程序視為在JSON中表達的DSL或計劃,並具有相關的語法。 JSON程序可以按照其針對目標的API進行檢查。然後可以使用解釋器運行它們,也可以將其編譯到.NET代碼中。
typechat.program包括:
// Translates user intent into typed Programs that call methods on a Math API
var model = new LanguageModel(Config.LoadOpenAI());
var api = new MathAPI();
var translator = new ProgramTranslator<IMathAPI>(model, api);
// Translate natural language request
Program program = await translator.TranslateAsync(requestText);
// Run the program
program.Run(api);
typechat.semantickernel使用語義內核1.0。它包括:
Typechat.net的先前版本使用了語義內核的預釋放編程模型。您可以使用SK_PRERELEASE分支訪問此棄用版本。
dotnet add package Microsoft.TypeChat
dotnet add package Microsoft.TypeChat.Program
dotnet add package Microsoft.TypeChat.SemanticKernel
要查看“行動中的Typechat.net”,請探索示例項目和Typechat.examples庫。
每個示例都包含一個帶有示例輸入的Input.txt 。將輸入文件作為參數傳遞以在批處理模式下運行示例。
下面的節描述了哪些示例將最好地介紹哪些概念。一些示例或場景可能與GPT-4最有效。
情感示例是Typechat的Hello World,也是Jsontranslator的最小介紹。
以下示例演示瞭如何使用jsontranslator,架構和詞彙:
要使用typechat.net或運行示例,您都需要:
典型的appsettings.development.json看起來像這樣:
// For Azure OpenAI service
{
"OpenAI": {
"Azure": true,
"ApiKey": "YOUR API KEY",
"Endpoint": "https://YOUR_RESOURCE_NAME.openai.azure.com",
"Model": "gpt-35-turbo" // Name of Azure deployment
}
}
// For Azure OpenAI service with Azure Identity: DefaultCredentials
{
"OpenAI": {
"Azure": true,
"ApiKey": "identity",
"Endpoint": "https://YOUR_RESOURCE_NAME.openai.azure.com",
"Model": "gpt-35-turbo" // Name of Azure deployment
}
}
// For OpenAI Service:
{
"OpenAI": {
"Azure": false,
"ApiKey": "YOUR API KEY",
"Endpoint": "https://api.openai.com/v1/chat/completions",
"Model": "gpt-3.5-turbo" // Name of OpenAI model
}
}
Typechat示例使用LanguageModel類訪問語言模型。 Openaiconfig類為LanguageModel提供配置。您可以從應用程序的配置,JSON文件或環境變量初始化OpenAiConfig。
有關:
// Your configuration
OpenAIConfig config = Config.LoadOpenAI();
// Or Json file
OpenAIConfig config = OpenAIConfig.LoadFromJsonFile(...);
// Or from config
config = OpenAIConfig.FromEnvironment();
var model = new LanguageModel(config);
您還可以使用使用內核構造器創建的SemantickerNel內核對象訪問LanguageModel。
const string modelName = "gpt-35-turbo";
new ChatLanguageModel(_kernel.GetService<IChatCompletionService>(modelName), modelName);
Typechat使用IlanguageModel接口訪問語言模型。 LanguageModel實現IlanguageModel。
您可以通過實現IlanguageModel來使用自己的模型客戶端。如果您不使用上面列出的開放AI模型之一,則可能還需要提供最適合您模型的JSONTRANSLATORPROMPTS。
該項目採用了Microsoft開源的行為代碼。有關更多信息,請參見《行為守則常見問題守則》或與其他問題或評論聯繫[email protected]。
版權(C)Microsoft Corporation。版權所有。
根據MIT許可獲得許可。
該項目可能包含用於項目,產品或服務的商標或徽標。 Microsoft商標或徽標的授權使用受到了Microsoft的商標和品牌準則的約束。在此項目的修改版本中使用Microsoft商標或徽標不得引起混亂或暗示Microsoft贊助。任何使用第三方商標或徽標都遵守這些第三方政策。