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が動作しているのを確認するには、Projectsの例と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を初期化します。
次のリストについては、openaiconfig.csを参照してください。
// Your configuration
OpenAIConfig config = Config.LoadOpenAI();
// Or Json file
OpenAIConfig config = OpenAIConfig.LoadFromJsonFile(...);
// Or from config
config = OpenAIConfig.FromEnvironment();
var model = new LanguageModel(config);
また、カーネルビルダーを使用して作成したsemantichernelカーネルオブジェクトを使用してLanguageModelにアクセスすることもできます。
const string modelName = "gpt-35-turbo";
new ChatLanguageModel(_kernel.GetService<IChatCompletionService>(modelName), modelName);
TypeChatは、IlanguageModelインターフェイスを使用して言語モデルにアクセスします。 LanguageModelはIlanguageModelを実装します。
IlanguageModelを実装して、独自のモデルクライアントを使用できます。上記のオープンAIモデルのいずれかを使用しない場合は、モデルで最適なJSONTranslatorPromptsを提供する必要もあります。
このプロジェクトは、Microsoftのオープンソース行動規範を採用しています。詳細については、FAQのコードを参照するか、追加の質問やコメントについては[email protected]にお問い合わせください。
著作権(c)Microsoft Corporation。無断転載を禁じます。
MITライセンスに基づいてライセンスされています。
このプロジェクトには、プロジェクト、製品、またはサービスの商標またはロゴが含まれる場合があります。 Microsoftの商標またはロゴの承認された使用は、Microsoftの商標およびブランドガイドラインに従うものであり、従わなければなりません。このプロジェクトの変更されたバージョンでのMicrosoft商標またはロゴの使用は、混乱を引き起こしたり、Microsoftのスポンサーシップを暗示したりしてはなりません。サードパーティの商標またはロゴの使用は、これらのサードパーティのポリシーの対象となります。