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 프로그램은 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은 Semantic Kernel 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에서 가장 잘 작동 할 수 있습니다.
감정 예는 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 예제는 언어 모델 클래스를 사용하여 언어 모델에 액세스합니다. OpenAiconfig 클래스는 LangageModel의 구성을 공급합니다. 응용 프로그램의 구성, 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);
KernelBuilder를 사용하여 만든 Semantickernel Kernel 객체를 사용하여 LangageModel에 액세스 할 수도 있습니다.
const string modelName = "gpt-35-turbo";
new ChatLanguageModel(_kernel.GetService<IChatCompletionService>(modelName), modelName);
TypeChat은 Ilanguagemodel 인터페이스를 사용하여 언어 모델에 액세스합니다. 언어 모델은 ilanguagemodel을 구현합니다.
Ilanguagemodel을 구현하여 자신의 모델 클라이언트를 사용할 수 있습니다. 위에 나열된 Open AI 모델 중 하나를 사용하지 않으면 모델과 가장 잘 맞는 JSONTRANSLATORPROMPTS를 제공해야 할 수도 있습니다.
이 프로젝트는 Microsoft 오픈 소스 행동 강령을 채택했습니다. 자세한 내용은 추가 질문이나 의견이 있으면 행동 강령 FAQ 또는 [email protected]에 문의하십시오.
저작권 (C) Microsoft Corporation. 모든 권리 보유.
MIT 라이센스에 따라 라이센스.
이 프로젝트에는 프로젝트, 제품 또는 서비스에 대한 상표 또는 로고가 포함될 수 있습니다. Microsoft 상표 또는 로고의 승인 된 사용에는 Microsoft의 상표 및 브랜드 지침이 적용되며 따라야합니다. 이 프로젝트의 수정 된 버전에서 Microsoft 상표 또는 로고를 사용한다고해서 혼란을 일으키거나 Microsoft 후원을 암시해서는 안됩니다. 타사 상표 또는 로고를 사용하면 타사 정책이 적용됩니다.