在实际环境中测试
在生产中测试无水印。
随时随地为您服务。
ChatGPT 是一款人工智能 (人工智能) 由 OpenAI 创建的聊天机器人。ChatGPT "一词由 "Chat "和 "GPT "组合而成,"Chat "暗指该系统的聊天机器人功能,而 "GPT "则代表 "Generative Pre-trained Transformer(生成预训练转换器)",是一种大型语言模型。 (法学硕士).来自 OpenAI 的基本 GPT 模型,即 GPT-3.5 和 GPT-4,是 ChatGPT 的基础。 (一种迁移学习的方法) ChatGPT 利用监督学习和强化学习技术(包括机器学习、自然语言处理和人工智能)的组合,为对话应用服务。ChatGPT 可以理解并生成类人文本。
本文将演示如何开发一个 MAUI 应用程序,利用 OpenAI ChatGPT API 接收消息,根据用户查询提供结果,然后使用 IronPDF 将这些结果导出为 PDF 文件以供日后使用。
要注册 OpenAI 账户,请执行以下操作:
要访问 OpenAI,请访问网站并使用账户信息登录。
访问 OpenAI 网站
现在,你可以创建一个新的秘密 API 密钥。
创建应用程序接口密钥
要创建用 C# 编写的 .NET MAUI 应用程序,您需要安装 Visual Studio 2022 和 .NET 7 Framework。然后,按照以下步骤创建和编写 .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框架选择
通过修改 .NET MAUI 应用程序,可以集成 ChatGPT OpenAI,并在该平台上使用 IronPDF C# PDF 库将结果导出为 PDF 文件。
在 NuGet 软件包管理器控制台中输入下一条命令。
Install-Package OpenAI
在 "软件包管理器控制台 "中输入上述代码,这将有助于安装 OpenAI 软件包。
Install-Package IronPdf
上述代码有助于将 IronPDF 安装到 MAUI 代码中。
IronPDF 是用于 PDF 处理的强大 PDF SDK 基础,开发人员可借助它快速创建、阅读和编辑 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 的更多信息,请参阅 教程页面.
在 "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 交互并产生结果的查询。结果将显示在 "表格视图 "中。
作为 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 创建一个聊天机器人,并在 MAUI 应用程序上使用 IronPDF 导出聊天内容。利用上述概念,我们可以在 ChatGPT API 中加入图片、音频和视频,以获得更准确的结果。
本文的目的是开发一个 MAUI 应用程序,利用 OpenAI ChatGPT API 接收消息,根据用户询问提供结果,并将结果导出为 PDF 文件。为了提高建议的质量,可以通过改变问题来进行探索。要查看各种模型是否能产生更好的结果,还可以尝试修改 "MauiProgram.cs "中 "AddChatGpt "方法中的 "ChatGptModels "枚举值。
ChatGPT API 是一个功能强大的人工智能程序,它允许我们根据用户查询提供结果。ChatGPT API 的费用根据发送请求的数量计算。IronPDF 用于发出 API 请求,并将结果导出为 PDF 格式以供将来使用,从而避免重复查询相同的 API 请求。
使用 IronPDF,我们只需几行代码就能创建 PDF。该应用程序适合初学者,只需具备基本知识即可使用。其他软件包在任何方面都不依赖于 IronPDF。例如,它是一个单独的软件包库。IronPDF 开发人员可以根据自己的需求选择不同的许可证。此外,还提供免费试用版。有关 IronPDF 的完整定价和许可信息,请参阅 许可页面.