使用 IRONPDF

如何使用 ChatGPT 與 IronPDF 給 C# 開發者

已更新 2024年3月17日
分享:

1.0 什麼是ChatGPT?

ChatGPT是一種人工智慧 (人工智慧) 由OpenAI創建的聊天機器人。「ChatGPT」這個術語結合了「Chat」,指的是系統的聊天機器人功能,以及「GPT」,即生成式預訓練變壓器,這是一種大型語言模型。 (LLM)OpenAI 基本的 GPT 模型,即 GPT-3.5 和 GPT-4,是 ChatGPT 的基礎,並已經過改進。 (遷移學習方法) 用於會話應用程序結合監督學習和強化學習技術,包括機器學習、自然語言處理和人工智慧。ChatGPT 能夠理解和生成類似人類的文字。

本文將演示如何開發一個 MAUI 應用程序,利用 OpenAI ChatGPT API 接收訊息,根據用戶查詢提供結果,然後使用 IronPDF 將這些結果導出為 PDF 文件以供以後使用。

1.1 建立 OpenAI 帳戶

要註冊 OpenAI 帳戶,請執行以下操作:

  • 訪問 OpenAI 官方網站。
  • 在網站首頁,找到並點擊註冊按鈕。這將帶您進入創建帳戶的頁面。
  • 填寫註冊表單中的必要欄位。
  • 點擊發送到您註冊電子郵件帳戶的驗證鏈接來確認您的電子郵件地址。
  • 如果您的註冊成功,您應該可以通過輸入註冊時提供的登錄信息來訪問您的 OpenAI 帳戶。

1.2 獲取 OpenAI API 金鑰

  • 要訪問 OpenAI,請前往網站並使用您的帳戶信息登入。

    如何使用 ChatGPT 與 IronPDF 給 C# 開發者,圖 1:訪問 OpenAI 網站

    存取 OpenAI 網站

  • 瀏覽至 OpenAI 平台的 API 區域。然後前往帳戶設定 > 查看 API 金鑰,您可以在此找到這個。
  • 現在您可以創建一個新的秘密 API 金鑰。

    如何將 ChatGPT 與 IronPDF 結合使用於C# 開發人員,圖2:創建 API 密鑰

    創建 API 金鑰

2.0 開始使用 .NET MAUI 應用程式

您需要安裝 Visual Studio 2022 和 .NET 7 框架來創建用C#編寫的 .NET MAUI 應用程式。然後,按照以下步驟創建和編寫 .NET MAUI 應用程式。

2.1 開啟 Visual Studio

開啟 Visual Studio,然後從菜單中選擇「建立新專案」,並在搜尋欄中輸入「.NET MAUI」。

2.2 選擇 .NET MAUI 應用程式

在 Visual Studio 中,從搜尋結果列表中選擇 .NET MAUI 應用程式範本。選擇後,給它取一個合適的名稱並選擇專案的位置。配置完成後,點擊「下一步」。

如何在 C# 開發人員用 IronPDF 使用 ChatGPT,第 3 圖:在 Visual Studio 中建立新的 .NET MAUI 應用程式

在Visual Studio中創建一個新的 .NET MAUI 應用程式

2.3 選擇框架

選擇必要的框架;不過,建議選擇最新的 .NET Framework。選擇框架版本後,在 Visual Studio 中按下Create按鈕。

如何使用 ChatGPT 與 IronPDF 對於 C# 開發人員,圖4:配置新項目

配置新專案

在 Visual Studio 2022 中,將會建立一個新的 .NET MAUI 專案。預設情況下,.NET MAUI 會開發一個簡單的計數應用程式。

如何與 IronPDF 一起使用 ChatGPT 對於 C# 開發人員,圖 5:.NET Framework 選擇

.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?

開發人員可以迅速創建、閱讀和編輯 PDF 文檔,這要歸功於 IronPDF 這個強大的 PDF SDK 基礎,用於 PDF 處理。IronPDF 庫使用 Chrome 引擎將 HTML 轉換為 PDF。該庫支持的眾多網頁組件包括 MAUI、Xamarin、Blazor、Unity、HoloLens 應用程序、Windows Forms、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 轉換工具和引擎,無需依賴任何外部資源。

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 創建一個服務,然後可以被其他類別/頁面檢索和使用。

在應用程式的主頁面上的 page load 方法中添加下面的內容。這有助於立即獲取 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 結合用於 C# 開發人員,圖 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

上述代码有助于设计和实现UI页面。在设计页面中,文本框允许用户输入查询。一旦输入了他们需要的文本,当点击按钮时,会发送一个查询与ChatGPT API进行交互并产生结果。结果将显示在Tableview中。

作为演示版本的ChatGPT服务,每分钟限制不超过3个请求。UI还有一个名为“导出”的按钮,可以将用户查询和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給C#開發者,圖7:將文字查詢添加到應用程式中

將文字查詢添加到應用程式中

點擊匯出按鈕以將結果匯出到 PDF,如下圖所示。

如何使用 ChatGPT 與 IronPDF 給 C# 開發者,圖 8:導出的 PDF 文件

匯出的 PDF 文件

現在,我們可以使用 ChatGPT 在 MAUI App 上創建一個聊天機器人,並使用 IronPDF 來匯出該聊天。使用上述概念,可以從 ChatGPT API 中導入圖片、音訊和視頻,以獲得更準確的結果。

5.0 結論

本文的目標是開發一個MAUI應用程式,利用OpenAI ChatGPT API來接收消息,根據用戶查詢提供結果,並將這些結果導出為PDF檔案。為了提高建議的質量,可以通過修改問題進行探索。您也可以通過修改"MauiProgram.cs"中的AddChatGpt方法內的ChatGptModels枚舉值來實驗不同模型是否能產生更好的結果。

ChatGPT API是一個強大的AI程式,讓我們可以根據用戶查詢提供結果。ChatGPT API的費用是根據發送請求的數量計算的。IronPDF被用來進行API請求並將結果導出為PDF,以便以後使用,避免重複查詢相同的API請求。

我們只需幾行程式碼就可以使用IronPDF創建PDF。這個應用程式適合初學者,並且僅需要基礎知識來使用。IronPDF不依賴於任何其他套件。舉個例子,它是一個單獨的套件庫。IronPDF開發者可以選擇多種許可證來滿足需求,也提供免費試用。關於IronPDF的完整價格和許可證資訊,請參考 授權頁面.

< 上一頁
如何在C#中使用Fluent Validation與IronPDF
下一個 >
如何在 .NET 中建立 PDF 簽名

準備開始了嗎? 版本: 2024.10 剛剛發布

免費 NuGet 下載 總下載次數: 10,993,239 查看許可證 >