Typechat.net membawa ide -ide TypeChat ke .net.
TypeChat.NET provides cross platform libraries that help you build natural language interfaces with language models using strong types, type validation and simple type safe programs (plans). Pengetikan yang kuat dapat membantu membuat perangkat lunak yang menggunakan model bahasa lebih deterministik dan dapat diandalkan.
// 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 is in active development with frequent updates. Kerangka kerja akan berkembang ketika tim mengeksplorasi ruang dan menggabungkan umpan balik. Skenario yang didukung ditampilkan dalam contoh yang disertakan. Dokumentasi juga akan terus meningkat. Jika ragu, silakan lihat kodenya.
Typechat.net saat ini terdiri dari majelis berikut:
Microsoft.TypeChat : Classes that translate user intent into strongly typed and validated objects.
Microsoft.TypeChat.Program : Classes to synthesize, validate and run JSON programs .
Microsoft.TypeChat.SemanticKernel : Integration with Microsoft Semantic Kernel for models, plugins, embeddings and other features.
Typechat menggunakan model bahasa untuk menerjemahkan niat pengguna ke dalam JSON yang sesuai dengan skema. JSON ini kemudian divalidasi dan deserialized menjadi objek yang diketik. Pemeriksaan kendala tambahan diterapkan sesuai kebutuhan. Validation errors are sent back to the language model, which uses them to repair the Json it originally returned.
Typechat menyediakan:
[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 translates natural language requests into simple programs ( Plans ), represented as JSON.
JSON programs can be thought of as a DSL or Plan, expressed in JSON, with an associated grammar that is enforced. Program JSON dapat tipe diperiksa terhadap API yang mereka targetkan. Mereka kemudian dapat dijalankan menggunakan juru bahasa, atau dikompilasi ke dalam kode .NET.
Typechat.Program meliputi:
// 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 menggunakan semantik kernel 1.0. Itu termasuk kelas untuk:
Versi sebelumnya dari Typechat.net menggunakan model pemrograman pra-rilis kernel semantik. Anda dapat mengakses versi yang sudah usang ini menggunakan cabang SK_PRERELEASE.
dotnet add package Microsoft.TypeChat
dotnet add package Microsoft.TypeChat.Program
dotnet add package Microsoft.TypeChat.SemanticKernel
Untuk melihat Typechat.net beraksi, jelajahi contoh proyek dan typeChat. Perpustakaan.
Each example includes an input.txt with sample input. Pass the input file as an argument to run the example in batch mode .
Bagian di bawah ini menjelaskan contoh mana yang paling baik memperkenalkan konsep mana. Some examples or scenarios may work best with gpt-4 .
Contoh sentimennya adalah Hello World TypeChat dan pengantar minimal untuk JSONTRANSLATOR.
Contoh -contoh berikut menunjukkan cara menggunakan JSONTRanslator, skema, dan kosa kata:
To use TypeChat.net or run the examples, you need either :
APPICAL APPSETTINGS.Development.json akan terlihat seperti ini:
// 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
}
}
Contoh Typechat mengakses model bahasa menggunakan kelas bahasa LanguageModel. Kelas OpenaiConfig memasok konfigurasi untuk bahasa LanguageModel. Anda menginisialisasi OpenAiconfig dari konfigurasi aplikasi Anda, dari file JSON atau dari variabel lingkungan.
Lihat openaiconfig.cs untuk daftar:
// Your configuration
OpenAIConfig config = Config.LoadOpenAI();
// Or Json file
OpenAIConfig config = OpenAIConfig.LoadFromJsonFile(...);
// Or from config
config = OpenAIConfig.FromEnvironment();
var model = new LanguageModel(config);
Anda juga dapat mengakses bahasa LanguageModel menggunakan objek kernel semantickernel yang Anda buat menggunakan pembuat kernel.
const string modelName = "gpt-35-turbo";
new ChatLanguageModel(_kernel.GetService<IChatCompletionService>(modelName), modelName);
Typechat mengakses model bahasa menggunakan antarmuka Ilanguagemodel. LanguageModel mengimplementasikan Ilanguagemodel.
Anda dapat menggunakan klien model Anda sendiri dengan mengimplementasikan Ilanguagemodel. Jika Anda tidak menggunakan salah satu model AI terbuka yang tercantum di atas, Anda mungkin juga perlu memasok JSONTRANSLATORPROMPTS yang paling cocok dengan model Anda.
Proyek ini telah mengadopsi kode perilaku open source Microsoft. Untuk informasi lebih lanjut, lihat FAQ Kode Perilaku atau hubungi [email protected] dengan pertanyaan atau komentar tambahan.
Hak Cipta (C) Microsoft Corporation. Semua hak dilindungi undang -undang.
Berlisensi di bawah lisensi MIT.
Proyek ini dapat berisi merek dagang atau logo untuk proyek, produk, atau layanan. Penggunaan resmi merek dagang atau logo Microsoft tunduk dan harus mengikuti pedoman merek dagang & merek Microsoft. Penggunaan merek dagang atau logo Microsoft dalam versi yang dimodifikasi dari proyek ini tidak boleh menyebabkan kebingungan atau menyiratkan sponsor Microsoft. Setiap penggunaan merek dagang atau logo pihak ketiga tunduk pada kebijakan pihak ketiga tersebut.