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赞助。任何使用第三方商标或徽标都遵守这些第三方政策。