Awesome
ChatGPT.Net - .Net Library for ChatGPT [Discord]
Other versions [NodeJS Version]
Check the new Google Bard Chatbot!
The ChatGPT.Net is a C# library for ChatGPT using official OpenAI API that allows developers to access ChatGPT, a chat-based large language model. With this API, developers can send queries to ChatGPT and receive responses in real-time, making it easy to integrate ChatGPT into their own applications.
using ChatGPT.Net;
// ChatGPT Official API
var bot = new ChatGpt("<API_KEY>");
var response = await bot.Ask("What is the weather like today?");
Console.WriteLine(response);
Table of Contents
Features
- Easy to use.
- Using official OpenAI API.
- Supports both free and pro accounts.
- Supports multiple accounts, and multiple conversations.
- Support response streaming, so you can get response while the model is still generating it.
Getting Started
To install ChatGPT.Net, run the following command in the Package Manager Console:
Install-Package ChatGPT.Net
Alternatively, you can install it using the .NET Core command-line interface:
dotnet add package ChatGPT.Net
Usage
ChatGPT Official API
Here is a sample code showing how to use ChatGPT.Net:
using ChatGPT.Net;
// ChatGPT Official API
var bot = new ChatGpt("<API_KEY>");
// get response
var response = await bot.Ask("What is the weather like today?");
Console.WriteLine(response);
// stream response
await bot.AskStream(response => {
Console.WriteLine(response);
}, "What is the weather like today?");
// get response for a specific conversation
var response = await bot.Ask("What is the weather like today?", "conversation name");
Console.WriteLine(response);
// stream response for a specific conversation
await bot.AskStream(response => {
Console.WriteLine(response);
}, "What is the weather like today?", "conversation name");
// Set a system message
bot.SetConversationSystemMessage("conversation name", "You are a helpful assistant that provides clear and concise answers to questions.");
Some models can understand both text and images. To use this feature, you need to pass a list of content items that includes both text and images.
// To stream responses with both image and text input, create a list of content items
var contentItems = new List<ChatGptMessageContentItem>();
// Each content item can be either "Text" type or "Image" type. Let's add text to inquire about the image
contentItems.Add(new ChatGptMessageContentItem()
{
Type = ChatGptMessageContentType.TEXT,
Text = "what is this image about?"
});
// Now, create another content item of "Image" type
var contentItemWithImage = new ChatGptMessageContentItem()
{
Type = ChatGptMessageContentType.IMAGE
};
// Set image by path
contentItemWithImage.SetImageFromFile("<path-to-file>");
// Or set image by Url
contentItemWithImage.SetImageFromUrl("https://path-to-image.com/image.png");
// Or set base64 image url
contentItemWithImage.SetImageFromUrl("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA.....");
contentItems.Add(contentItemWithImage);
// Only specific models understand image input. Therefore, if you are using 'gpt-3.5-turbo' or similar model, switch or override the model before calling 'AskStream'. More details about `ChatGptOptions` (config) are covered in the next section.
config.Model = ChatGptModels.GPT_4_Vision_Preview;
var response = await bot.AskStream(response => {
Console.WriteLine(response);
}, contentItems, "conversation name");
ChatGPT Unofficial API
Here is a sample code showing how to integrate (chat.openai.com) with your applications using ChatGPT.Net:
using ChatGPT.Net;
// ChatGPT Official API
var bot = new ChatGptUnofficial("<SESSION_TOKEN>");
// get response
var response = await bot.Ask("What is the weather like today?");
Console.WriteLine(response);
// stream response
await bot.AskStream(response => {
Console.WriteLine(response);
}, "What is the weather like today?");
// get response for a specific conversation
var response = await bot.Ask("What is the weather like today?", "conversation name");
Console.WriteLine(response);
// stream response for a specific conversation
await bot.AskStream(response => {
Console.WriteLine(response);
}, "What is the weather like today?", "conversation name");
Configuration options
ChatGPT Official API
ChatGptOptions
{
string BaseUrl; // Default: https://api.openai.com
string Model; // Default: gpt-3.5-turbo
double Temperature; // Default: 0.9;
double TopP; // Default: 1.0;
long MaxTokens; // Default: 64;
string[]? Stop; // Default: null;
double PresencePenalty; // Default: 0.0;
double FrequencyPenaltyl; // Default: 0.0;
}
ChatGPT Unofficial API
ChatGptUnofficialOptions
{
string BaseUrl; // Default: https://api.pawan.krd
string Model; // Default: text-davinci-002-render-sha
}
Examples
ChatGPT Console App
This is a simple console app that uses ChatGPT.Net to interact with ChatGPT.
using ChatGPT.Net;
// ChatGPT Official API
var bot = new ChatGpt("<API_KEY>");
var prompt = string.Empty;
while (true)
{
Console.Write("You: ");
prompt = Console.ReadLine();
if (prompt is null) break;
if (string.IsNullOrWhiteSpace(prompt)) break;
if (prompt == "exit") break;
Console.Write("ChatGPT: ");
await bot.AskStream(Console.Write, prompt, "default");
Console.WriteLine();
}
Use a different model
You can use a different model by passing the model name to the constructor.
var bot = new ChatGpt("<API_KEY>", new ChatGptOptions
{
Model = "text-davinci-002-render-paid"
});
Using ChatGPT Official API For Free
you can use ChatGPT Official API by setting the base url to a free reverse proxy server like ChatGPT Free Reverse Proxy
var bot = new ChatGpt("<API_KEY>", new ChatGptOptions
{
BaseUrl = "https://api.pawan.krd"
});
License
This project is licensed under the MIT License - see the LICENSE file for details