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 Semantic ядро для моделей, плагинов, встроений и других функций.
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 можно рассматривать как DSL или план, выраженные в JSON, с соответствующей грамматикой , которая применяется. Программы 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);
Tpechat.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 .
Примером настроения является Hello World Typechat и минимальное введение в JSonTranslator.
Следующие примеры демонстрируют, как использовать jsontranslator, схемы и слова:
Чтобы использовать typechat.net или запустить примеры, вам нужно либо :
Типичные приложения.
// 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. Вы инициализируете OpenAiConfig из конфигурации вашего приложения, из файла JSON или из переменных среды.
См. 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);
Вы также можете получить доступ к языковой эфире, используя созданный вами объект ядра Semantickernel, который вы создали с помощью ядра.
const string modelName = "gpt-35-turbo";
new ChatLanguageModel(_kernel.GetService<IChatCompletionService>(modelName), modelName);
TypeChat обращается к языковым моделям, используя интерфейс IlangaageModel. LanguageModel реализует IlanguageModel.
Вы можете использовать свой собственный модельный клиент, внедрив IlangageModel. Если вы не используете одну из моделей Open AI, перечисленных выше, вам, вероятно, также потребуется предоставить JsonTranslatorPrompts, которые лучше всего работают с вашей моделью.
Этот проект принял Microsoft с открытым исходным кодом поведения. Для получения дополнительной информации см. Кодекс поведения FAQ или свяжитесь с [email protected] с любыми дополнительными вопросами или комментариями.
Copyright (C) Microsoft Corporation. Все права защищены.
Лицензирован по лицензии MIT.
Этот проект может содержать товарные знаки или логотипы для проектов, продуктов или услуг. Уполномоченное использование товарных знаков или логотипов Microsoft подлежит и должно следовать указаниям Microsoft по товарной марке и брендам. Использование товарных знаков Microsoft или логотипов в модифицированных версиях этого проекта не должно вызывать путаницу или подразумевать спонсорство Microsoft. Любое использование сторонних товарных знаков или логотипов подвержена политике сторонних сторон.