종속성 주입을 지원하여 Open AI API를 감싸는 간단한 가벼운 라이브러리.
지원되는 기능은 다음과 같습니다.
이 라이브러리에 구축 된 Blazor 웹 앱의 비디오 연습은 다음을 참조하십시오.
이것은 GitHub 페이지에 배포되며 다음에서 사용할 수 있습니다 : Open AI UI. Blazor 웹 앱의 소스는 whetstone.chatgpt.blazor.app에 있습니다.
예제는 다음과 같습니다.
services . Configure < ChatGPTCredentials > ( options =>
{
options . ApiKey = " YOURAPIKEY " ;
options . Organization = " YOURORGANIZATIONID " ;
} ) ;사용:
services . AddHttpClient ( ) ;또는:
services . AddHttpClient < IChatGPTClient , ChatGPTClient > ( ) ; IChatGPTClient 서비스 구성 :
services . AddScoped < IChatGPTClient , ChatGPTClient > ( ) ; 채팅 완료는 채팅에 최적화 된 특별한 유형의 완료입니다. 그들은 대화적인 맥락에서 사용되도록 설계되었습니다.
이것은 GPT-3.5 터보 모델의 사용을 보여줍니다.
using Whetstone . ChatGPT ;
using Whetstone . ChatGPT . Models ;
. . .
var gptRequest = new ChatGPTChatCompletionRequest
{
Model = ChatGPT35Models . Turbo ,
Messages = new List < ChatGPTChatCompletionMessage > ( )
{
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . System , " You are a helpful assistant. " ) ,
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . User , " Who won the world series in 2020? " ) ,
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . Assistant , " The Los Angeles Dodgers won the World Series in 2020. " ) ,
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . User , " Where was it played? " )
} ,
Temperature = 0.9f ,
MaxTokens = 100
} ;
using IChatGPTClient client = new ChatGPTClient ( " YOURAPIKEY " ) ;
var response = await client . CreateChatCompletionAsync ( gptRequest ) ;
Console . WriteLine ( response ? . GetCompletionText ( ) ) ;귀하의 계정에 제한된 베타에 대한 액세스 권한이 부여 된 경우 GPT-4 모델을 사용할 수도 있습니다.
완료는 모델을 사용하여 분류, 감정 분석, 질문에 답하는 등을 포함하여 이에 국한되지 않는 다양한 작업에 답변합니다.
이것은 프롬프트가없는 GPT-3.5-Turbo-instruct 모델의 직접적인 사용을 보여줍니다.
CreateCompletionAsync는 더 이상 사용되지 않습니다. ChatGptChatCompletionRequest , ChatGptChatCompletionResponse 및 CreateChatCompletionAsync 메소드를 사용하십시오.
using Whetstone . ChatGPT ;
using Whetstone . ChatGPT . Models ;
. . .
var gptRequest = new ChatGPTCompletionRequest
{
Model = ChatGPT35Models . Gpt35TurboInstruct ,
Prompt = " How is the weather? "
} ;
using IChatGPTClient client = new ChatGPTClient ( " YOURAPIKEY " ) ;
var response = await client . CreateCompletionAsync ( gptRequest ) ;
Console . WriteLine ( response . GetCompletionText ( ) ) ;GPT-3.5는 결정적이지 않습니다. 위의 샘플의 테스트 실행 중 하나가 반환되었습니다.
날씨는 위치에 따라 크게 다를 수 있습니다. 일반적으로 온도가 온화하고 기후가 편안 할 것으로 예상 할 수 있지만, 특정 영역에 대한 예측을 확인하는 것이 가장 좋습니다.
완성을 사용하는 AC# 콘솔 응용 프로그램은 다음과 같습니다.
whetstone.chatgpt.commandlinebot (chatgpt-marv)
이 샘플에는 다음이 포함됩니다.
새 미세 조정 파일을 업로드하는 방법.
List < ChatGPTTurboFineTuneLine > tuningInput = new ( )
{
new ChatGPTTurboFineTuneLine ( )
{
Messages = new List < ChatGPTTurboFineTuneLineMessage > ( )
{
new ( ChatGPTMessageRoles . System , " Marv is a factual chatbot that is also sarcastic. " ) ,
new ( ChatGPTMessageRoles . User , " What's the capital of France? " ) ,
new ( ChatGPTMessageRoles . Assistant , " Paris, as if everyone doesn't know that already. " )
} ,
} ,
new ChatGPTTurboFineTuneLine ( )
{
Messages = new List < ChatGPTTurboFineTuneLineMessage > ( )
{
new ( ChatGPTMessageRoles . System , " Marv is a factual chatbot that is also sarcastic. " ) ,
new ( ChatGPTMessageRoles . User , " Who wrote 'Romeo and Juliet'? " ) ,
new ( ChatGPTMessageRoles . Assistant , " Oh, just some guy named William Shakespeare. Ever heard of him? " )
} ,
} ,
. . .
} ;
byte [ ] tuningText = tuningInput . ToJsonLBinary ( ) ;
string fileName = " marvin.jsonl " ;
ChatGPTUploadFileRequest ? uploadRequest = new ChatGPTUploadFileRequest
{
File = new ChatGPTFileContent
{
FileName = fileName ,
Content = tuningText
}
} ;
ChatGPTFileInfo ? newTurboTestFile ;
using ( IChatGPTClient client = new ChatGPTClient ( " YOURAPIKEY " ) )
{
newTurboTestFile = await client . UploadFileAsync ( uploadRequest ) ;
} 파일이 생성되면 FileId를 가져 와서 새 미세 조정을 만들 때 참조하십시오.
IChatGPTClient client = new ChatGPTClient ( " YOURAPIKEY " ) ;
uploadedFileInfo = await client . UploadFileAsync ( uploadRequest ) ;
var fileList = await client . ListFilesAsync ( ) ;
var foundFile = fileList ? . Data ? . First ( x => x . Filename . Equals ( " marvin.jsonl " ) ) ;
ChatGPTCreateFineTuneRequest tuningRequest = new ChatGPTCreateFineTuneRequest
{
TrainingFileId = foundFile ? . Id ,
Model = " gpt-3.5-turbo-1106 "
} ;
ChatGPTFineTuneJob ? tuneResponse = await client . CreateFineTuneAsync ( tuningRequest ) ;
string ? fineTuneId = tuneResponse ? . Id ;미세 조정 요청을 처리하는 데 시간이 걸립니다. 마무리되면 상태는 "성공"을보고하고 완료 요청에 사용할 준비가되었습니다.
using IChatGPTClient client = new ChatGPTClient ( " YOURAPIKEY " ) ;
ChatGPTFineTuneJob ? tuneResponse = await client . RetrieveFineTuneAsync ( " FINETUNEID " ) ;
if ( tuneResponse . Status . Equals ( " succeeded " ) )
{
var gptRequest = new ChatGPTChatCompletionRequest
{
Model = " FINETUNEID " ,
Messages = new List < ChatGPTChatCompletionMessage > ( )
{
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . System , " You are a helpful assistant. " ) ,
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . User , " Who won the world series in 2020? " ) ,
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . Assistant , " The Los Angeles Dodgers won the World Series in 2020. " ) ,
new ChatGPTChatCompletionMessage ( ChatGPTMessageRoles . User , " Where was it played? " )
} ,
Temperature = 0.9f ,
MaxTokens = 100
} ;
var response = await client . CreateChatCompletionAsync ( gptRequest ) ;
Console . WriteLine ( response ? . GetCompletionText ( ) ) ; 다음은 1024x1024 이미지를 생성하는 예입니다.
ChatGPTCreateImageRequest imageRequest = new ( )
{
Prompt = " A sail boat " ,
Size = CreatedImageSize . Size1024 ,
ResponseFormat = CreatedImageFormat . Base64
} ;
using IChatGPTClient client = new ChatGPTClient ( " YOURAPIKEY " ) ;
ChatGPTImageResponse ? imageResponse = await client . CreateImageAsync ( imageRequest ) ;
var imageData = imageResponse ? . Data ? [ 0 ] ;
if ( imageData != null )
{
byte [ ] ? imageBytes = await client . DownloadImageAsync ( imageData ) ;
} 그녀는 Whisper를 사용하여 오디오 파일을 전사하는 예입니다.
string audioFile = @"audiofilestranscriptiontest.mp3" ;
byte [ ] fileContents = File . ReadAllBytes ( audioFile ) ;
ChatGPTFileContent gptFile = new ChatGPTFileContent
{
FileName = audioFile ,
Content = fileContents
} ;
ChatGPTAudioTranscriptionRequest ? transcriptionRequest = new ChatGPTAudioTranscriptionRequest
{
File = gptFile
} ;
using IChatGPTClient client = new ChatGPTClient ( " YOURAPIKEY " ) ;
ChatGPTAudioResponse ? audioResponse = await client . CreateTranscriptionAsync ( transcriptionRequest , true ) ;
Console . WriteLine ( audioResponse ? . Text ) ;