Typechat.net trae las ideas de Typechat a .NET.
Typechat.net proporciona bibliotecas de plataforma cruzada que lo ayudan a construir interfaces de lenguaje natural con modelos de lenguaje que utilizan tipos fuertes, validación de tipo y programas (planes) de tipo simple. La mecanografía fuerte puede ayudar a que el software que utilice modelos de lenguaje sea más determinista y confiable.
// 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 está en desarrollo activo con actualizaciones frecuentes. El marco evolucionará a medida que el equipo explora el espacio e incorpora retroalimentación. Los escenarios compatibles se muestran en los ejemplos incluidos. La documentación también continuará mejorando. En caso de duda, mire el código.
Typechat.net actualmente consta de los siguientes ensamblajes:
Microsoft.TyPeChat : clases que traducen la intención del usuario en objetos fuertemente tipados y validados.
Microsoft.TyPeChat.Program : clases para sintetizar, validar y ejecutar programas JSON .
Microsoft.TyPeChat.Semantickernel : Integración con Microsoft Semantic Kernel para modelos, complementos, incrustaciones y otras características.
Typechat utiliza modelos de idioma para traducir la intención del usuario en JSON que se ajusta a un esquema. Este JSON se valida y se deserializa en un objeto escrito. La verificación de restricciones adicionales se aplica según sea necesario. Los errores de validación se devuelven al modelo de idioma, que los usa para reparar el JSON que originalmente regresó.
Typechat proporciona:
[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 traduce las solicitudes de lenguaje natural en programas simples ( planes ), representados como JSON.
Los programas JSON pueden considerarse como un DSL o plan, expresados en JSON, con una gramática asociada que se aplica. Los programas JSON se pueden verificar de tipo con las API a las que se dirigen. Luego se pueden ejecutar usando un intérprete o compilarse en el código .NET.
Typechat.program incluye:
// 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 usa el núcleo semántico 1.0. Incluye clases para:
Las versiones anteriores de Typechat.net utilizaron el modelo de programación previo al liberación del núcleo semántico. Puede acceder a esta versión desapercibida utilizando la rama SK_PERELEASE.
dotnet add package Microsoft.TypeChat
dotnet add package Microsoft.TypeChat.Program
dotnet add package Microsoft.TypeChat.SemanticKernel
Para ver typechat.net en acción, explore los proyectos de ejemplo y la biblioteca typechat.examples.
Cada ejemplo incluye una entrada.txt con entrada de muestra. Pase el archivo de entrada como argumento para ejecutar el ejemplo en modo por lotes .
Las secciones a continuación describen qué ejemplos introducirán mejor qué concepto. Algunos ejemplos o escenarios pueden funcionar mejor con GPT-4 .
El ejemplo del sentimiento es Hello World de Typechat y una introducción mínima a Jsontranslator.
Los siguientes ejemplos demuestran cómo usar jsontranslator, esquemas y vocabularios:
Para usar typechat.net o ejecutar los ejemplos, necesita :
Un típico appSettings.development.json se verá así:
// 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
}
}
Ejemplos de typechat accede a modelos de lenguaje utilizando la clase LanguageModel. La clase OpenAiConfig suministra configuración para LanguageModel. Inicializa OpenAiConFig desde la configuración de su aplicación, desde un archivo JSON o desde variables de entorno.
Consulte OpenAiConfig.cs para obtener una lista de:
// Your configuration
OpenAIConfig config = Config.LoadOpenAI();
// Or Json file
OpenAIConfig config = OpenAIConfig.LoadFromJsonFile(...);
// Or from config
config = OpenAIConfig.FromEnvironment();
var model = new LanguageModel(config);
También puede acceder a un languageModel utilizando el objeto de núcleo Semantickernel que creó usando un KernelBuilder.
const string modelName = "gpt-35-turbo";
new ChatLanguageModel(_kernel.GetService<IChatCompletionService>(modelName), modelName);
Typechat accede a modelos de lenguaje utilizando la interfaz ILanguageModel. LanguageModel implementa ilanguagemodel.
Puede usar su propio cliente modelo implementando ilanguageModel. Si no utiliza uno de los modelos de IA abiertos enumerados anteriormente, es probable que también necesite suministrar a JSONTRANSLATORPROMPTS que funcionen mejor con su modelo.
Este proyecto ha adoptado el Código de Conducta Open Open Microsoft. Para obtener más información, consulte el Código de Conducta Preguntas frecuentes o comuníquese con [email protected] con cualquier pregunta o comentario adicional.
Copyright (c) Microsoft Corporation. Reservados todos los derechos.
Licenciado bajo la licencia del MIT.
Este proyecto puede contener marcas comerciales o logotipos para proyectos, productos o servicios. El uso autorizado de marcas o logotipos de Microsoft está sujeto y debe seguir las pautas de marca y marca de Microsoft. El uso de marcas registradas de Microsoft o logotipos en versiones modificadas de este proyecto no debe causar confusión o implicar el patrocinio de Microsoft. Cualquier uso de marcas comerciales o logotipos de terceros está sujeto a las políticas de esas partes de terceros.