Home
Softono
ChatGPT.Net

ChatGPT.Net

Open source MIT C#
385
Stars
71
Forks
13
Issues
5
Watchers
1 year
Last Commit

About ChatGPT.Net

ChatGPT.Net is a C library that provides .NET developers with seamless access to OpenAI's ChatGPT through the official API. Available as a NuGet package, it enables integration of AI-powered conversational capabilities into .NET applications. The library also has a NodeJS counterpart for cross-platform development needs. Developers can use ChatGPT.Net to build chatbots, automate text generation, create intelligent assistants, and add natural language processing features to their applications. The project is actively maintained with community support available through GitHub and Discord channels for issue tracking and collaboration.

Platforms

Web Self-hosted Windows

Languages

C#

ChatGPT.Net - .Net Library for ChatGPT [Discord]

Other versions [NodeJS Version]

Nuget Package Nuget Package GitHub issues GitHub forks GitHub stars GitHub license Discord server

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