Typechat.net bringt die Ideen von typechat zu .net.
Typechat.net bietet Cross -Plattform -Bibliotheken, mit denen Sie natürliche Sprachschnittstellen mit Sprachmodellen mit starken Typen, Typvalidierung und einfachen Typ -Safe -Programmen (Plänen) erstellen können. Eine starke Typisierung kann dazu beitragen, Software zu gestalten, die Sprachmodelle deterministischer und zuverlässigeres verwendet.
// 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 befindet sich in aktiver Entwicklung mit häufigen Aktualisierungen. Das Framework wird sich entwickeln, wenn das Team den Raum untersucht und Feedback enthält. Unterstützte Szenarien werden in den enthaltenen Beispielen angezeigt. Die Dokumentation wird sich auch weiter verbessern. Wenn Sie Zweifel haben, schauen Sie sich bitte den Code an.
Typechat.net besteht derzeit aus den folgenden Baugruppen:
Microsoft.Typechat : Klassen, die die Benutzerabsicht in stark getippte und validierte Objekte übersetzen.
Microsoft.typechat.programm : Klassen zum Synthese, Validieren und Ausführen von JSON -Programmen .
Microsoft.Typechat.Semantickernel : Integration mit Microsoft Semantic Kernel für Modelle, Plugins, Einbettungen und andere Funktionen.
Typechat verwendet Sprachmodelle, um die Benutzerabsicht in JSON zu übersetzen, das einem Schema entspricht. Dieser JSON wird dann validiert und in ein typisiertes Objekt deserialisiert. Bei Bedarf werden zusätzliche Einschränkungen geprüft. Validierungsfehler werden an das Sprachmodell zurückgesandt, mit dem sie den ursprünglich zurückgegebenen JSON reparieren .
Typechat bietet:
[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 übersetzt natürliche Sprachanfragen in einfache Programme ( Pläne ), die als JSON dargestellt werden.
JSON -Programme können als DSL oder Plan angesehen werden, das in JSON mit einer zugehörigen Grammatik ausgedrückt wird, die durchgesetzt wird. JSON -Programme können mit den APIs überprüft werden, auf die sie abzielen. Sie können dann mit einem Interpreter ausgeführt oder in .NET -Code kompiliert werden.
Typechat.Program enthält:
// 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 verwendet den semantischen Kernel 1.0. Es enthält Klassen für:
Frühere Versionen von typechat.net verwendeten das Programmiermodell vor der Veröffentlichung des semantischen Kernels. Sie können auf diese veraltete Version mit der SK_PRERelease -Filiale zugreifen.
dotnet add package Microsoft.TypeChat
dotnet add package Microsoft.TypeChat.Program
dotnet add package Microsoft.TypeChat.SemanticKernel
Um typechat.net in Aktion anzuzeigen, untersuchen Sie die Beispielprojekte und die Bibliothek typechat.xamples.
Jedes Beispiel enthält eine Eingabe.txt mit Beispieleingabe. Geben Sie die Eingabedatei als Argument zum Ausführen des Beispiels im Stapelmodus .
Die folgenden Abschnitte beschreiben, welche Beispiele am besten das Konzept vorstellen werden. Einige Beispiele oder Szenarien funktionieren am besten mit GPT-4 .
Das Sentiment -Beispiel ist die Hello World von Tychat und eine minimale Einführung in JsonTranslator.
Die folgenden Beispiele zeigen, wie JSONTRANSLATOR, Schemas und Vokabulare verwendet werden:
Um typechat.net zu verwenden oder die Beispiele auszuführen, benötigen Sie entweder :
Eine typische Appsettings.development.json sieht folgendermaßen aus:
// 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
}
}
Beispiele für typechat greifen auf Sprachmodelle zu, die unter Verwendung der LanguageModel -Klasse. Die Openaiconfig -Klasse liefert Konfiguration für Languagemodel. Sie initialisieren openaiconfig aus der Konfiguration Ihrer Anwendung, aus einer JSON -Datei oder aus Umgebungsvariablen.
Eine Liste von: Openaiconfig.cs finden Sie: eine Liste von:
// Your configuration
OpenAIConfig config = Config.LoadOpenAI();
// Or Json file
OpenAIConfig config = OpenAIConfig.LoadFromJsonFile(...);
// Or from config
config = OpenAIConfig.FromEnvironment();
var model = new LanguageModel(config);
Mit dem Semantickernel -Kernel -Objekt, das Sie mit einem Kernelbuilder erstellt haben, können Sie auch auf ein Languagemodel zugreifen.
const string modelName = "gpt-35-turbo";
new ChatLanguageModel(_kernel.GetService<IChatCompletionService>(modelName), modelName);
Taptechat greift mit der Ilanguagemodel -Schnittstelle auf Sprachmodelle zu. Languagemodel implementiert Ilanguagemodel.
Sie können Ihren eigenen Modell Client verwenden, indem Sie Ilanguagemodel implementieren. Wenn Sie eines der oben aufgeführten offenen KI -Modelle nicht verwenden, müssen Sie wahrscheinlich auch JSONTRANSLatorPrompts liefern, die am besten mit Ihrem Modell passen.
Dieses Projekt hat den Microsoft Open Source -Verhaltenscode übernommen. Weitere Informationen finden Sie im FAQ oder wenden Sie sich an [email protected] mit zusätzlichen Fragen oder Kommentaren.
Copyright (C) Microsoft Corporation. Alle Rechte vorbehalten.
Lizenziert unter der MIT -Lizenz.
Dieses Projekt kann Marken oder Logos für Projekte, Produkte oder Dienstleistungen enthalten. Die autorisierte Verwendung von Microsoft -Marken oder Logos unterliegt den Marken- und Markenrichtlinien von Microsoft und muss folgen. Die Verwendung von Microsoft -Marken oder Logos in geänderten Versionen dieses Projekts darf keine Verwirrung verursachen oder Microsoft -Sponsoring implizieren. Jede Verwendung von Marken oder Logos von Drittanbietern unterliegt den Richtlinien dieses Drittanbieters.