使用IRONPDF

如何在C#开发中将ChatGPT与IronPDF结合使用

更新 2024年三月17日
分享:

1.0 什么是 ChatGPT?

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 文件以供日后使用。

1.1 设置 OpenAI 账户

要注册 OpenAI 账户,请执行以下操作:

  • 访问 OpenAI 官方网站。
  • 在网站主页上找到并点击 "注册 "按钮。这将带您进入创建账户的页面。
  • 填写注册表的必填字段。
  • 点击发给您注册电子邮件账户的验证链接,确认您的电子邮件地址。

  • 如果注册成功,您就可以输入注册时提供的登录信息,访问 OpenAI 账户。

1.2 获取 OpenAI API 密钥

  • 要访问 OpenAI,请访问网站并使用账户信息登录。

    如何使用 ChatGPT 与 IronPDF for C# Developer,图 1:访问 OpenAI 网站

    访问 OpenAI 网站

  • 导航至 OpenAI 平台的 API 区域。然后是 "账户设置">"查看 API 密钥",在这里你可以找到这个。
  • 现在,你可以创建一个新的秘密 API 密钥。

    如何使用 ChatGPT 与 IronPDF for C# Developer,图 2:创建 API 密钥

    创建应用程序接口密钥

2.0 .NET MAUI 应用程序入门

要创建用 C# 编写的 .NET MAUI 应用程序,您需要安装 Visual Studio 2022 和 .NET 7 Framework。然后,按照以下步骤创建和编写 .NET MAUI 应用程序。

2.1 打开 Visual Studio

打开 Visual Studio,然后从菜单中选择 "创建新项目",并在搜索栏中输入".NET MAUI"。

2.2 选择 .NET MAUI 应用程序

在 Visual Studio 中,从搜索结果列表中选择 .NET MAUI 应用程序模板。选择后,给它起一个合适的名字,并选择项目的位置。配置完成后点击 "下一步"。

如何在 IronPDF 中使用 ChatGPT 对于 C# 开发人员,图 3:在 Visual Studio 中创建新的 .NET MAUI 应用程序

在 Visual Studio 中创建新的 .NET MAUI 应用程序

2.3 选择框架

选择必要的框架,例如,建议选择最新的 .NET Framework。选择好框架版本后,在 Visual Studio 中按下创建按钮。

如何使用 ChatGPT 与 IronPDF for C# Developer,图 4:配置新项目

配置新项目

在 Visual Studio 2022 中,将创建一个新的 .NET MAUI 项目。.NET MAUI 默认开发一个直接的计数器应用程序。

如何在 IronPDF 中使用 ChatGPT 对于 C# 开发人员,图 5:.NET 框架选择

.NET框架选择

通过修改 .NET MAUI 应用程序,可以集成 ChatGPT OpenAI,并在该平台上使用 IronPDF C# PDF 库将结果导出为 PDF 文件。

2.4 安装 OpenAI 软件包

在 NuGet 软件包管理器控制台中输入下一条命令。

Install-Package OpenAI

在 "软件包管理器控制台 "中输入上述代码,这将有助于安装 OpenAI 软件包。

Install-Package IronPdf

上述代码有助于将 IronPDF 安装到 MAUI 代码中。

3.0 什么是 IronPDF?

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 的更多信息,请参阅 教程页面.

4.0 使用 IronPDF 导出 ChatGPT API 结果

在 "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)
VB   C#

这有助于为 ChatGPT API 创建一个服务,然后其他类/页面就可以检索和使用它。

在应用程序主页面的页面加载方法中添加以下内容。这有助于即时获取 ChatGPT 服务并将其存储到本地对象中。

_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService(Of IChatGptClient)()
VB   C#

然后为用户界面创建 UI,如下图所示。

如何使用 ChatGPT 与 IronPDF for C# Developer,图 6:MAUI 应用程序的用户界面

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>
XML

上述代码有助于设计和实现用户界面页面。在设计页面上,文本框允许用户输入查询。用户输入所需的文本后,点击按钮,就会发送一个与 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
VB   C#

使用 for 循环逐一检索输入数据,然后将 HTML 字符串添加到字符串中,以格式化显示文本。然后就可以使用 IronPDF 将结果导出为 PDF 格式,并保存到所需位置。

添加上述代码后,尝试运行解决方案。然后输入查询,点击 "发送查询 "按钮获取结果。它将向用户发送查询以获取结果,并在屏幕上显示如下图所示的信息。

如何使用 ChatGPT 和 IronPDF for C# Developer,图 7:在应用程序中添加文本查询

在应用程序中添加文本查询

点击导出按钮,将结果导出为 PDF 格式,如下图所示。

如何使用 ChatGPT 与 IronPDF for C# Developer,图 8:导出的 PDF 文件

导出的 PDF 文件

现在,我们可以使用 ChatGPT 创建一个聊天机器人,并在 MAUI 应用程序上使用 IronPDF 导出聊天内容。利用上述概念,我们可以在 ChatGPT API 中加入图片、音频和视频,以获得更准确的结果。

5.0 结论

本文的目的是开发一个 MAUI 应用程序,利用 OpenAI ChatGPT API 接收消息,根据用户询问提供结果,并将结果导出为 PDF 文件。为了提高建议的质量,可以通过改变问题来进行探索。要查看各种模型是否能产生更好的结果,还可以尝试修改 "MauiProgram.cs "中 "AddChatGpt "方法中的 "ChatGptModels "枚举值。

ChatGPT API 是一个功能强大的人工智能程序,它允许我们根据用户查询提供结果。ChatGPT API 的费用根据发送请求的数量计算。IronPDF 用于发出 API 请求,并将结果导出为 PDF 格式以供将来使用,从而避免重复查询相同的 API 请求。

使用 IronPDF,我们只需几行代码就能创建 PDF。该应用程序适合初学者,只需具备基本知识即可使用。其他软件包在任何方面都不依赖于 IronPDF。例如,它是一个单独的软件包库。IronPDF 开发人员可以根据自己的需求选择不同的许可证。此外,还提供免费试用版。有关 IronPDF 的完整定价和许可信息,请参阅 许可页面.

< 前一页
如何在C#中使用Fluent Validation与IronPDF
下一步 >
如何在 .NET 中创建 PDF 签名

准备开始了吗? 版本: 2024.9 刚刚发布

免费NuGet下载 总下载量: 10,731,156 查看许可证 >