# ChatGPT.Net - ChatGPT的.Net库 [[Discord](https://discord.pawan.krd)]
其他版本 [NodeJS版本]
查看新的Google Bard Chatbot!
The ChatGPT.Net是一个使用官方OpenAI API的C#库,允许开发人员访问基于聊天的大型语言模型ChatGPT。通过该API,开发人员可以实时向ChatGPT发送查询并接收响应,从而轻松地将ChatGPT集成到自己的应用程序中。
using ChatGPT.Net;
// ChatGPT官方API
var bot = new ChatGpt("<API_KEY>");
var response = await bot.Ask("今天的天气怎么样?");
Console.WriteLine(response);
目录
功能
- 易于使用。
- 使用官方OpenAI API。
- 支持免费和专业账号。
- 支持多个账号和多个对话。
- 支持响应流式传输,因此您可以在模型仍在生成响应时获取响应。
入门
要安装ChatGPT.Net,请在程序包管理器控制台中运行以下命令:
Install-Package ChatGPT.Net
或者,您可以使用.NET Core命令行界面进行安装:
dotnet add package ChatGPT.Net
用法
ChatGPT 官方 API
这是一个显示如何使用ChatGPT.Net的示例代码:
using ChatGPT.Net;
// ChatGPT官方API
var bot = new ChatGpt("<API_KEY>");
// 获取响应
var response = await bot.Ask("今天的天气怎么样?");
Console.WriteLine(response);
// 流式传输响应
await bot.AskStream(response => {
Console.WriteLine(response);
}, "今天的天气怎么样?");
// 获取特定对话的响应
var response = await bot.Ask("今天的天气怎么样?", "对话名称");
Console.WriteLine(response);
// 流式传输特定对话的响应
await bot.AskStream(response => {
Console.WriteLine(response);
}, "今天的天气怎么样?", "对话名称");
// 设置系统消息
bot.SetConversationSystemMessage("对话名称", "你是一个提供清晰简明回答的有帮助的助手。");
某些模型可以理解文本和图片。要使用此功能,您需要传递包含文本和图片的内容项列表。
// 要流式传输包含图像和文本输入的响应,请创建一个内容项列表
var contentItems = new List<ChatGptMessageContentItem>();
// 每个内容项可以是“文本”类型或“图片”类型。让我们添加文本来询问图像
contentItems.Add(new ChatGptMessageContentItem()
{
Type = ChatGptMessageContentType.TEXT,
Text = "这张图片是关于什么的?"
});
// 现在,创建另一个“图片”类型的内容项
var contentItemWithImage = new ChatGptMessageContentItem()
{
Type = ChatGptMessageContentType.IMAGE
};
// 通过路径设置图片
contentItemWithImage.SetImageFromFile("<文件路径>");
// 或通过Url设置图片
contentItemWithImage.SetImageFromUrl("https://path-to-image.com/image.png");
// 或设置base64图片url
contentItemWithImage.SetImageFromUrl("data:image/png;base64,iVBORw0KGgoAAA.....");
contentItems.Add(contentItemWithImage);
// 只有特定模型理解图像输入。因此,如果您使用的是“gpt-3.5-turbo”或类似模型,在调用“AskStream”之前,请切换或覆盖模型。有关`ChatGptOptions`(配置)的更多详细信息将在下一部分中介绍。
config.Model = ChatGptModels.GPT_4_Vision_Preview;
var response = await bot.AskStream(response => {
Console.WriteLine(response);
}, contentItems, "对话名称");
ChatGPT 非官方 API
这是一个显示如何使用ChatGPT.Net将(chat.openai.com)集成到您的应用程序中的示例代码:
using ChatGPT.Net;
// ChatGPT官方API
var bot = new ChatGptUnofficial("<SESSION_TOKEN>");
// 获取响应
var response = await bot.Ask("今天的天气怎么样?");
Console.WriteLine(response);
// 流式传输响应
await bot.AskStream(response => {
Console.WriteLine(response);
}, "今天的天气怎么样?");
// 获取特定对话的响应
var response = await bot.Ask("今天的天气怎么样?", "对话名称");
Console.WriteLine(response);
// 流式传输特定对话的响应
await bot.AskStream(response => {
Console.WriteLine(response);
}, "今天的天气怎么样?", "对话名称");
配置选项
ChatGPT 官方 API
ChatGptOptions
{
string BaseUrl; // 默认为: https://api.openai.com
string Model; // 默认为: gpt-3.5-turbo
double Temperature; // 默认为: 0.9;
double TopP; // 默认为: 1.0;
long MaxTokens; // 默认为: 64;
string[]? Stop; // 默认为: null;
double PresencePenalty; // 默认为: 0.0;
double FrequencyPenaltyl; // 默认为: 0.0;
}
ChatGPT 非官方 API
ChatGptUnofficialOptions
{
string BaseUrl; // 默认为: https://api.pawan.krd
string Model; // 默认为: text-davinci-002-render-sha
}
示例
ChatGPT 控制台应用程序
这是一个简单的控制台应用程序,通过ChatGPT.Net与ChatGPT互动。
using ChatGPT.Net;
// ChatGPT官方API
var bot = new ChatGpt("<API_KEY>");
var prompt = string.Empty;
while (true)
{
Console.Write("你:");
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();
}
使用不同的模型
您可以通过将模型名称传递给构造函数来使用不同的模型。
var bot = new ChatGpt("<API_KEY>", new ChatGptOptions
{
Model = "text-davinci-002-render-paid"
});
免费使用ChatGPT官方API
您可以通过设置基本网址为免费反向代理服务器,如ChatGPT Free Reverse Proxy来免费使用ChatGPT官方API
var bot = new ChatGpt("<API_KEY>", new ChatGptOptions
{
BaseUrl = "https://api.pawan.krd"
});
许可证
此项目受MIT许可证许可 - 有关详细信息,请参阅LICENSE文件