LibreOpenAI 0.1.3
dotnet add package LibreOpenAI --version 0.1.3
NuGet\Install-Package LibreOpenAI -Version 0.1.3
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LibreOpenAI" Version="0.1.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add LibreOpenAI --version 0.1.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: LibreOpenAI, 0.1.3"
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
// Install LibreOpenAI as a Cake Addin #addin nuget:?package=LibreOpenAI&version=0.1.3 // Install LibreOpenAI as a Cake Tool #tool nuget:?package=LibreOpenAI&version=0.1.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
Libre-OpenAI (Beta)
An Open AI Nuget for .NET applications (.NET 8 or higher), It is "Libre" (free and for free). Libre-OpenAI is under construction, for now we are working only in Text Content generation.
The current Beta version is 0.1.3.
Please, see these unit tests to learn how to use this Nuget:
https://github.com/maxiunlm/Libre-OpenAI/blob/main/LibreOpenAIUnitTestProject/OpenAiUnitTest.cs
How to use Libre Open AI
Create Completions
Using IRequestBody
IRequestBody request = new RequestBody
{
Model = defaultModel,
MaxCompletionTokens = defaultMaxCompletionTokens,
Messages = new List<MessageRequest> {
new MessageRequest {
Role = defaultRole,
Content = "What is the capital of France?" // NOTE: complete here your request question
}
}
};
IOpenAI openAi = new OpenAI();
IChatCompletionResponse result = await openAi.Chat.Completions.Create(request);
string contentResult = result.Choices.First().Message.Content;
Using JSON
string request = "{\"max_completion_tokens\":50,\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of France?\"}],\"n\":1}";
IOpenAI openAi = new OpenAI();
IChatCompletionResponse result = await openAi.Chat.Completions.Create(request);
string contentResult = result.Choices.First().Message.Content;
Using dynamic type
dynamic request = new {
model = defaultModel,
max_completion_tokens = defaultMaxCompletionTokens,
messages = new[] {
new {
role = defaultRole,
content = ResponseFakes.whatIsTheCapitalOfFrance
}
}
};
IOpenAI openAi = new OpenAI();
IChatCompletionResponse result = await openAi.Chat.Completions.Create(request);
string contentResult = result.Choices.First().Message.Content;
Returning Dynamic type
Using IRequestBody
IRequestBody request = new RequestBody
{
Model = defaultModel,
MaxCompletionTokens = defaultMaxCompletionTokens,
Messages = new List<MessageRequest> {
new MessageRequest {
Role = defaultRole,
Content = "What is the capital of France?" // NOTE: complete here your request question
}
}
};
IOpenAI openAi = new OpenAI();
dynamic result = await openAi.Chat.Completions.CreateDynamic(request);
string contentResult = ((JValue)result["choices"][0]["message"]["content"]).Value;
Using JSON
string request = "{\"max_completion_tokens\":50,\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of France?\"}],\"n\":1}";
IOpenAI openAi = new OpenAI();
dynamic result = await openAi.Chat.Completions.CreateDynamic(request);
string contentResult = ((JValue)result["choices"][0]["message"]["content"]).Value;
Using dynamic type
dynamic request = new {
model = defaultModel,
max_completion_tokens = defaultMaxCompletionTokens,
messages = new[] {
new {
role = defaultRole,
content = ResponseFakes.whatIsTheCapitalOfFrance
}
}
};
IOpenAI openAi = new OpenAI();
dynamic result = await openAi.Chat.Completions.CreateDynamic(request);
string contentResult = ((JValue)result["choices"][0]["message"]["content"]).Value;
Returning JSON
Using IRequestBody
IRequestBody request = new RequestBody
{
Model = defaultModel,
MaxCompletionTokens = defaultMaxCompletionTokens,
Messages = new List<MessageRequest> {
new MessageRequest {
Role = defaultRole,
Content = "What is the capital of France?" // NOTE: complete here your request question
}
}
};
IOpenAI openAi = new OpenAI();
string result = await openAi.Chat.Completions.CreateJson(request);
// result will be a JSON
Using JSON
string request = "{\"max_completion_tokens\":50,\"model\":\"gpt-3.5-turbo\",\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of France?\"}],\"n\":1}";
IOpenAI openAi = new OpenAI();
string result = await openAi.Chat.Completions.CreateJson(request);
// result will be a JSON
Using dynamic type
dynamic request = new {
model = defaultModel,
max_completion_tokens = defaultMaxCompletionTokens,
messages = new[] {
new {
role = defaultRole,
content = ResponseFakes.whatIsTheCapitalOfFrance
}
}
};
IOpenAI openAi = new OpenAI();
string result = await openAi.Chat.Completions.CreateJson(request);
// result will be a JSON
Create Stream Completions
Using IRequestBody
IRequestBody request = new RequestBody
{
Model = "gpt-4o",
Messages = new List<MessageRequest> {
new MessageRequest {
Role = "system",
Content = "You are a helpful assistant." // NOTE: complete here your request question
},
new MessageRequest {
Role = "user",
Content = "Hello!" // NOTE: complete here your request question
}
},
Stream = true
};
IOpenAI openAi = new OpenAI();
List<IChatCompletionChunk> result = await sut.Chat.Completions.CreateStream(request);
// For ex.: contentResult will contain all the result prats separated by "\t" (TAB character).
string contentResult = string.Join('\t', result.SelectMany(o => o.Choices.Select(o => o.Delta.Content)).ToList());
Using JSON
string request = "{\"max_completion_tokens\":50,\"model\":\"gpt-4o\",\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of France?\"}],\"n\":1}";
IOpenAI openAi = new OpenAI();
List<IChatCompletionChunk> result = await sut.Chat.Completions.CreateStream(request);
// For ex.: contentResult will contain all the result prats separated by "\t" (TAB character).
string contentResult = string.Join('\t', result.SelectMany(o => o.Choices.Select(o => o.Delta.Content)).ToList());
Using dynamic type
dynamic request = new
{
model = "gpt-4o",
messages = new[]
{
new { role = "system", content = "You are a helpful assistant." },
new { role = "user", content = "Hello!" }
},
stream = true
};
IOpenAI openAi = new OpenAI();
List<IChatCompletionChunk> result = await sut.Chat.Completions.CreateStream(request);
// For ex.: contentResult will contain all the result prats separated by "\t" (TAB character).
string contentResult = string.Join('\t', result.SelectMany(o => o.Choices.Select(o => o.Delta.Content)).ToList());
Returning Dynamic type
Using IRequestBody
IRequestBody request = new RequestBody
{
Model = "gpt-4o",
Messages = new List<MessageRequest> {
new MessageRequest {
Role = "system",
Content = "You are a helpful assistant." // NOTE: complete here your request question
},
new MessageRequest {
Role = "user",
Content = "Hello!" // NOTE: complete here your request question
}
},
Stream = true
};
IOpenAI openAi = new OpenAI();
dynamic result = await sut.Chat.Completions.CreateStreamDynamic(request);
string firstPartOfResult = ((JValue)((JToken)result)[1]["choices"][0]["delta"]["content"]).Value;
Using JSON
string request = "{\"max_completion_tokens\":50,\"model\":\"gpt-4o\",\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of France?\"}],\"n\":1}";
IOpenAI openAi = new OpenAI();
dynamic result = await sut.Chat.Completions.CreateStreamDynamic(request);
string firstPartOfResult = ((JValue)((JToken)result)[1]["choices"][0]["delta"]["content"]).Value;
Using dynamic type
dynamic request = new
{
model = "gpt-4o",
messages = new[]
{
new { role = "system", content = "You are a helpful assistant." },
new { role = "user", content = "Hello!" }
},
stream = true
};
IOpenAI openAi = new OpenAI();
dynamic result = await sut.Chat.Completions.CreateStreamDynamic(request);
string firstPartOfResult = ((JValue)((JToken)result)[1]["choices"][0]["delta"]["content"]).Value;
Returning JSON
Using IRequestBody
IRequestBody request = new RequestBody
{
Model = "gpt-4o",
Messages = new List<MessageRequest> {
new MessageRequest {
Role = "system",
Content = "You are a helpful assistant." // NOTE: complete here your request question
},
new MessageRequest {
Role = "user",
Content = "Hello!" // NOTE: complete here your request question
}
},
Stream = true
};
IOpenAI openAi = new OpenAI();
string result = await sut.Chat.Completions.CreateStreamJson(request);
// result will be a JSON array
Using JSON
string request = "{\"max_completion_tokens\":50,\"model\":\"gpt-4o\",\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of France?\"}],\"n\":1}";
IOpenAI openAi = new OpenAI();
string result = await sut.Chat.Completions.CreateStreamJson(request);
// result will be a JSON array
Using dynamic type
dynamic request = new
{
model = "gpt-4o",
messages = new[]
{
new { role = "system", content = "You are a helpful assistant." },
new { role = "user", content = "Hello!" }
},
stream = true
};
IOpenAI openAi = new OpenAI();
string result = await sut.Chat.Completions.CreateStreamJson(request);
// result will be a JSON array
Expecting raw JSON
string request = "{\"max_completion_tokens\":50,\"model\":\"gpt-4o\",\"messages\":[{\"role\":\"user\",\"content\":\"What is the capital of France?\"}],\"n\":1}";
IOpenAI openAi = new OpenAI();
string result = await sut.Chat.Completions.CreateStreamJson(request, true);
// result will contain a list of "data: {...}" JSON objects that can't be parsed directly as JSON !
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
net8.0
- Microsoft.Extensions.Http (>= 8.0.1)
- Newtonsoft.Json (>= 13.0.3)
- System.Text.Json (>= 8.0.5)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.