在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
ChatGPT 是一款人工智能(人工智能)聊天机器人由 OpenAI 创建。 ChatGPT "一词由 "Chat "和 "GPT "组合而成,"Chat "暗指系统的聊天机器人功能,而 "GPT "则代表生成式预训练转换器,是一种大型语言模型。(法学硕士). 来自 OpenAI 的基本 GPT 模型,即 GPT-3.5 和 GPT-4,是 ChatGPT 的基础。(一种迁移学习的方法)我们将利用监督学习和强化学习技术(包括机器学习、自然语言处理和人工智能)为会话应用程序提供支持。 ChatGPT 可以理解并生成类人文本。
本文将演示如何开发一个 MAUI 应用程序,利用 OpenAI ChatGPT API 接收消息,根据用户查询提供结果,然后使用 IronPdf 将这些结果导出为 PDF 文件以供日后使用。
要注册 OpenAI 帐户,请执行以下操作:
要访问 OpenAI,请访问网站并使用您的账户信息登录。
访问 OpenAI 网站
现在您可以创建一个新的秘密 API 密钥。
创建 API 密钥
您需要安装 Visual Studio 2022 和 .NET 7 Framework,以创建用 C# 编写的 .NET MAUI 应用程序。 然后,按照以下步骤创建和编写 .NET MAUI 应用程序。
打开 Visual Studio,然后从菜单中选择 "创建新项目",并在搜索栏中输入".NET MAUI"。
在 Visual Studio 中,从搜索结果列表中选择 .NET MAUI 应用程序模板。 选择好之后,给它起一个得体的名字,并选择项目的位置。 配置完成后点击 "下一步"。
在 Visual Studio 中创建一个新的 .NET MAUI 应用程序
选择必要的框架; 不过,举例来说,建议选择最新的 .NET Framework。 选择框架版本后,在 Visual Studio 中按创建按钮。
配置新项目
在 Visual Studio 2022 中,将创建一个新的 .NET MAUI 项目。 .NET MAUI 默认开发一个直接的计数器应用程序。
*.NET Framework 选择***
通过修改 .NET MAUI 应用程序,可以集成 ChatGPT OpenAI,并在该变体平台上使用 IronPDF C# PDF 库将结果导出为 PDF 文件。
在 NuGet 软件包管理器控制台中输入下一条命令。
Install-Package OpenAI
在 "软件包管理器控制台 "中输入上述代码,这将有助于安装 OpenAI 软件包。
Install-Package IronPdf
上面的代码有助于将 IronPDF 安装到 MAUI 代码中。
IronPDF 是用于 PDF 处理的强大 PDF SDK 基础,开发人员可以借助 IronPDF 迅速创建、阅读和编辑 PDF 文档。 IronPdf 库使用 Chrome 引擎将 HTML 转换为 PDF。 该库支持的多个网络组件包括 MAUI、Xamarin、Blazor、Unity、HoloLens 应用程序、Windows 窗体、HTML、ASPX、Razor HTML、.NET Core、ASP.NET 和 WPF。 Microsoft.NET 和 .NET Core 编程既可用于传统的 Windows 应用程序,也可用于 ASP.NET 网络应用程序。
通过使用 HTML5、JavaScript、CSS 和图像,IronPDF 可让您创建具有标题和页脚的精美 PDF。 API 库包括一个强大的 HTML 到 PDF 转换器(可处理 PDF),以及一个独立的 PDF 转换工具和引擎(独立于任何外部资源)。
IronPdf 接受用户名和密码作为交换条件访问受密码保护的 PDF 文件.
要了解有关 IronPDF 的更多信息,请参阅HTML 转 PDF 教程页面.
在 "MauiProgram.cs "文件中添加以下代码:
builder.Services.AddChatGpt(options =>
{
options.UseOpenAI("API key here");
options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo;
options.MessageLimit = 10;
options.MessageExpiration = TimeSpan.FromMinutes(5);
}
);
builder.Services.AddChatGpt(options =>
{
options.UseOpenAI("API key here");
options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo;
options.MessageLimit = 10;
options.MessageExpiration = TimeSpan.FromMinutes(5);
}
);
builder.Services.AddChatGpt(Sub(options)
options.UseOpenAI("API key here")
options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo
options.MessageLimit = 10
options.MessageExpiration = TimeSpan.FromMinutes(5)
End Sub)
这有助于为 ChatGPT API 创建一个服务,然后它可以被其他类/页面检索和使用。
在应用程序主页面的页面加载方法中添加以下内容。 这有助于即时获取 ChatGPT 服务并将其存储到本地对象中。
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService(Of IChatGptClient)()
然后为用户界面创建 UI,如下图所示。
MAUI 应用程序的用户界面
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="ChatGPT_MauiApp.MainPage"
BackgroundColor="black">
<StackLayout>
<StackLayout Orientation="Horizontal" Spacing="25"
Padding="30,0">
<ScrollView WidthRequest="700" HeightRequest="200" x:Name="scrollView">
<TableView Intent="Data" WidthRequest="700" x:Name="Table_View" BackgroundColor="DarkSlateGrey">
<TableRoot>
<!--<TableSection >
--><!--<TextCell Text="test" Detail="test">
</TextCell>--><!--
</TableSection>-->
</TableRoot>
</TableView>
</ScrollView>
</StackLayout>
<StackLayout Padding="30,0">
<Editor
x:Name="Userquest"
Text=""
HorizontalOptions="Start"
FontSize="12"
Placeholder=" Enter your Queries"
HeightRequest="25" WidthRequest="700"
/>
</StackLayout>
<StackLayout Padding="30,10,10,0">
<FlexLayout >
<Button
x:Name="Sendquery"
Text="Sent Query"
SemanticProperties.Hint="Click to send query to BOT"
Clicked="SendqueryClicked"
HorizontalOptions="Center"
BackgroundColor="Green"
TextColor="WhiteSmoke"
/>
<Button
x:Name="Export"
Text="Export"
SemanticProperties.Hint="click to export data"
Clicked="OnExportClicked"
HorizontalOptions="Center"
BackgroundColor="DodgerBlue"
TextColor="WhiteSmoke"
/>
</FlexLayout>
</StackLayout>
</StackLayout>
</ContentPage>
上述代码有助于设计和实现用户界面页面。 在设计页面上,文本框允许用户输入查询。 一旦他们输入所需的文本,点击按钮后,就会发送一个查询,该查询会与 ChatGPT API 交互并产生结果。 翻译结果将在 Tableview
中显示。
作为 ChatGPT 的演示版本,该服务每分钟可阻止不超过 3 个请求。 用户界面上还有一个名为 "导出 "的按钮,可以将用户查询和 ChatGPT API 回复导出为 PDF 文档,供将来参考使用。
下面的代码示例用于导出到 Excel。
private void OnExportClicked(object sender, EventArgs e)
{
celldata = null;
db = new StringBuilder();
foreach (var table_section in Table_View.Root.ToList().Select(s => new TableSection { s }).ToList())
{
if (table_section.Count > 0)
{
celldata = null;
celldata = table_section.Select(s => (Microsoft.Maui.Controls.TextCell)s).FirstOrDefault();
db.Append("<p style='color:red;text-align:left;'>" + celldata.Text + "</p>");
db.Append("<p style='color:black;text-align:justify;'>" + celldata.Detail + "</p>");
}
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(db.ToString());
pdf.SaveAs("F:\\Download\\Demo.pdf");
}
}
private async void SendqueryClicked(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Userquest.Text.ToString()))
{
var query = Userquest.Text;
Userquest.Text = "";
var tablesec = SetGetTextCell(query);
ChatGptResponse response = await _chatGptClient.AskAsync(_sessionGuid, query);
var resp = response.GetMessage();
tablesec.Detail = resp.ToString();
}
}
private Microsoft.Maui.Controls.TextCell SetGetTextCell(string Setvalue)
{
celldata = null;
if (!string.IsNullOrEmpty(Setvalue))
{
celldata = new TextCell
{
Text = Setvalue,
TextColor = Colors.Red,
DetailColor = Colors.WhiteSmoke,
Detail = ""
};
Table_View.Root.Add(new TableSection()
{
celldata
});
}
return celldata;
}
private void OnExportClicked(object sender, EventArgs e)
{
celldata = null;
db = new StringBuilder();
foreach (var table_section in Table_View.Root.ToList().Select(s => new TableSection { s }).ToList())
{
if (table_section.Count > 0)
{
celldata = null;
celldata = table_section.Select(s => (Microsoft.Maui.Controls.TextCell)s).FirstOrDefault();
db.Append("<p style='color:red;text-align:left;'>" + celldata.Text + "</p>");
db.Append("<p style='color:black;text-align:justify;'>" + celldata.Detail + "</p>");
}
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(db.ToString());
pdf.SaveAs("F:\\Download\\Demo.pdf");
}
}
private async void SendqueryClicked(object sender, EventArgs e)
{
if (!string.IsNullOrEmpty(Userquest.Text.ToString()))
{
var query = Userquest.Text;
Userquest.Text = "";
var tablesec = SetGetTextCell(query);
ChatGptResponse response = await _chatGptClient.AskAsync(_sessionGuid, query);
var resp = response.GetMessage();
tablesec.Detail = resp.ToString();
}
}
private Microsoft.Maui.Controls.TextCell SetGetTextCell(string Setvalue)
{
celldata = null;
if (!string.IsNullOrEmpty(Setvalue))
{
celldata = new TextCell
{
Text = Setvalue,
TextColor = Colors.Red,
DetailColor = Colors.WhiteSmoke,
Detail = ""
};
Table_View.Root.Add(new TableSection()
{
celldata
});
}
return celldata;
}
Private Sub OnExportClicked(ByVal sender As Object, ByVal e As EventArgs)
celldata = Nothing
db = New StringBuilder()
For Each table_section In Table_View.Root.ToList().Select(Function(s) New TableSection From {s}).ToList()
If table_section.Count > 0 Then
celldata = Nothing
celldata = table_section.Select(Function(s) CType(s, Microsoft.Maui.Controls.TextCell)).FirstOrDefault()
db.Append("<p style='color:red;text-align:left;'>" & celldata.Text & "</p>")
db.Append("<p style='color:black;text-align:justify;'>" & celldata.Detail & "</p>")
End If
Dim renderer = New ChromePdfRenderer()
Dim pdf = renderer.RenderHtmlAsPdf(db.ToString())
pdf.SaveAs("F:\Download\Demo.pdf")
Next table_section
End Sub
Private Async Sub SendqueryClicked(ByVal sender As Object, ByVal e As EventArgs)
If Not String.IsNullOrEmpty(Userquest.Text.ToString()) Then
Dim query = Userquest.Text
Userquest.Text = ""
Dim tablesec = SetGetTextCell(query)
Dim response As ChatGptResponse = Await _chatGptClient.AskAsync(_sessionGuid, query)
Dim resp = response.GetMessage()
tablesec.Detail = resp.ToString()
End If
End Sub
Private Function SetGetTextCell(ByVal Setvalue As String) As Microsoft.Maui.Controls.TextCell
celldata = Nothing
If Not String.IsNullOrEmpty(Setvalue) Then
celldata = New TextCell With {
.Text = Setvalue,
.TextColor = Colors.Red,
.DetailColor = Colors.WhiteSmoke,
.Detail = ""
}
Table_View.Root.Add(New TableSection() From {celldata})
End If
Return celldata
End Function
使用 for 循环逐个检索输入数据,然后将 HTML 字符串添加到字符串中,格式化显示文本。 然后可以使用 IronPDF 将结果导出为 PDF,并保存到所需位置。
添加上述代码后,尝试运行解决方案。 然后输入查询,点击 "发送查询 "按钮即可获取结果。 它将发送用户的查询以检索结果,并在屏幕上显示如下图所示的信息。
在应用程序中添加文本查询
单击导出按钮可将结果导出为 PDF 格式,如下图所示。
导出的 PDF 文件
现在,我们能够使用 ChatGPT 创建一个聊天机器人,并使用 IronPDF 在 MAUI App 上导出该聊天内容。利用上述概念,我们可以在 ChatGPT API 中加入图片、音频和视频,以获得更准确的结果。
本文的目标是开发一个 MAUI 应用程序,利用 OpenAI ChatGPT API 接收消息,根据用户查询提供结果,并将这些结果导出为 PDF 文件。为提高建议的质量,请随时通过更改问题进行探索。 要查看各种模型是否能产生更好的结果,您还可以尝试修改 "MauiProgram.cs "中 "AddChatGpt "方法中的 "ChatGptModels "枚举值。
ChatGPT API 是一个功能强大的人工智能程序,我们可以根据用户的查询提供结果。 ChatGPT API 的费用根据发送请求的数量计算。 IronPDF 用于提出 API 请求,并将结果导出为 PDF 以备将来使用,避免重复查询相同的 API 请求。
我们只需使用 IronPDF 编写几行代码即可创建 PDF。 该应用程序适合初学者,只需具备基本知识即可使用。 其他软件包不以任何方式依赖于 IronPDF。 例如,它是一个单独包装的库。 IronPdf 开发人员可以根据自己的要求选择不同的许可证。 还提供免费试用版。 有关 IronPDF 的完整定价和许可信息,请参阅 IronPDF 网站。IronPDF许可页面.