跳過到頁腳內容
使用IRONPDF

如何在C#開發人員中使用ChatGPT與IronPDF

1.0 什麼是 ChatGPT?

ChatGPT是由OpenAI開發的人工智慧(AI)聊天機器人。 "ChatGPT"一詞由"Chat"(指系統的聊天機器人功能)和"GPT"(代表生成式預訓練轉換器,是一種大型語言模型)組合而成。 OpenAI 的基本 GPT 模型,即 GPT-3.5 和 GPT-4,是 ChatGPT 的基礎,ChatGPT 經過改進(一種遷移學習方法),利用監督學習和強化學習技術的組合,用於對話應用,其中包括機器學習、自然語言處理和人工智慧。 ChatGPT能夠理解並產生類似人類的文字。

本文將示範如何開發一個 MAUI 應用程式,該應用程式利用 OpenAI ChatGPT API 接收訊息,根據使用者查詢提供結果,然後將這些結果匯出為 PDF 檔案以便稍後使用 IronPDF 進行使用。

1.1 設定 OpenAI 帳戶

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

  • 造訪 OpenAI 官方網站。
  • 在網站首頁上,找到並點選"註冊"按鈕。 這將帶您進入帳戶建立表單。
  • 請填寫報名表中的所有必填欄位。
  • 點擊發送到您註冊郵箱的驗證鏈接,以確認您的郵箱地址。
  • 如果您的註冊成功,您應該能夠透過輸入註冊時提供的登入資訊來存取您的 OpenAI 帳戶。

1.2 取得 OpenAI 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 中選擇框架版本後,按下"建立"按鈕。

如何在 IronPDF 中使用 ChatGPT(面向 C# 開發人員),圖 4:配置新項目 配置新項目

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

如何在 IronPDF 中使用 ChatGPT(針對 C# 開發人員),圖 5:.NET Framework 選擇 .NET Framework 選擇

透過修改 .NET MAUI 應用程式,可以將 ChatGPT OpenAI 整合到此平台版本中,並使用 IronPDF C# PDF 庫將結果匯出為 PDF 檔案。

2.4 安裝 OpenAI 軟體包

在 NuGet 套件管理器控制台中輸入以下命令。

Install-Package OpenAI

此命令將安裝 OpenAI 軟體包,該軟體包提供存取使用 C# 與 ChatGPT 互動所需的 API 的權限。

2.5 安裝 IronPDF

輸入以下指令安裝 IronPDF 軟體包:

Install-Package IronPdf

上述指令將 IronPDF 安裝到 MAUI 專案中。 IronPDF 用於將 HTML 內容渲染成 PDF 文件,是應用程式資料匯出到 PDF 文件的關鍵部分。

3.0 IronPDF是什麼?

透過 IronPDF(一個強大的 PDF SDK 基礎,用於 PDF 處理),開發人員可以快速建立、讀取和編輯 PDF 文件。 IronPDF 庫使用 Chrome 引擎將 HTML 轉換為 PDF。 該程式庫支援的幾種 Web 元件包括 MAUI、Xamarin、Blazor、Unity、HoloLens 應用程式、Windows Forms、HTML、ASPX、Razor HTML、.NET Core、ASP.NET 和 WPF。 Microsoft.NET 和 .NET Core 程式設計既可用於傳統的 Windows 應用程式,也可用於 ASP.NET Web 應用程式。

IronPDF 使用 HTML5、JavaScript、CSS 和圖像,讓您能夠建立具有標題和頁腳的精美 PDF。 API 庫包含一個強大的 HTML 到 PDF 轉換器,可以處理 PDF 文件,以及一個獨立於任何外部來源的 PDF 轉換工具和引擎。

要了解有關 IronPDF 的更多信息,請參閱HTML 轉 PDF 轉換教學頁面

4.0 使用 IronPDF 匯出 ChatGPT API 結果

在"MauiProgram.cs"檔案中加入以下程式碼:

builder.Services.AddChatGpt(options =>
{
    options.UseOpenAI("API key here"); // Replace with your actual OpenAI API key
    options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo; // Set the default model
    options.MessageLimit = 10; // Limit number of messages per session
    options.MessageExpiration = TimeSpan.FromMinutes(5); // Set message expiration time
});
builder.Services.AddChatGpt(options =>
{
    options.UseOpenAI("API key here"); // Replace with your actual OpenAI API key
    options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo; // Set the default model
    options.MessageLimit = 10; // Limit number of messages per session
    options.MessageExpiration = TimeSpan.FromMinutes(5); // Set message expiration time
});
builder.Services.AddChatGpt(Sub(options)
	options.UseOpenAI("API key here") ' Replace with your actual OpenAI API key
	options.DefaultModel = OpenAIChatGptModels.Gpt35Turbo ' Set the default model
	options.MessageLimit = 10 ' Limit number of messages per session
	options.MessageExpiration = TimeSpan.FromMinutes(5) ' Set message expiration time
End Sub)
$vbLabelText   $csharpLabel

這段程式碼片段註冊了一個 ChatGPT API 服務,然後應用程式中的其他類別或頁面就可以使用該服務。

在應用程式主頁的頁面載入方法中新增以下程式碼。 這有助於取得 ChatGPT 服務實例並將其儲存到本機物件中。

_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService(Of IChatGptClient)()
$vbLabelText   $csharpLabel

此程式碼從服務提供者檢索 ChatGPT 用戶端實例,允許主頁與 ChatGPT API 進行互動。

接下來,建立一個類似於以下 XAML 程式碼中所示的使用者介面:

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

                    </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="Send 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 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>

                    </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="Send 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

上面的 ContentPage 定義了應用程式的 UI 佈局。 使用者可以輸入查詢,透過"發送查詢"按鈕與 ChatGPT API 進行交互,並使用"匯出"按鈕將結果匯出為 PDF。 結果顯示在 TableView

接下來是處理按鈕點擊事件和匯出資料的程式碼邏輯:

private void OnExportClicked(object sender, EventArgs e)
{
    StringBuilder db = new();

    foreach (var tableSection in Table_View.Root.ToList())
    {
        foreach (var cell in tableSection)
        {
            if (cell is TextCell textCell)
            {
                db.Append("<p style='color:red;text-align:left;'>" + textCell.Text + "</p>");
                db.Append("<p style='color:black;text-align:justify;'>" + textCell.Detail + "</p>");
            }
        }
    }

    // Create and save the PDF
    var renderer = new IronPdf.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))
    {
        var query = Userquest.Text;
        Userquest.Text = "";
        var tableSection = AddQueryToTable(query);
        ChatGptResponse response = await _chatGptClient.AskAsync(_sessionGuid, query);
        var resp = response.GetMessage();
        AddResponseToTable(tableSection, resp);
    }
}

private TableSection AddQueryToTable(string query)
{
    var textCell = new TextCell
    {
        Text = query,
        TextColor = Colors.Red,
        DetailColor = Colors.WhiteSmoke,
        Detail = ""
    };

    var tableSection = new TableSection { textCell };
    Table_View.Root.Add(tableSection);
    return tableSection;
}

private void AddResponseToTable(TableSection section, string response)
{
    if (section.FirstOrDefault() is TextCell textCell)
    {
        textCell.Detail = response;
    }
}
private void OnExportClicked(object sender, EventArgs e)
{
    StringBuilder db = new();

    foreach (var tableSection in Table_View.Root.ToList())
    {
        foreach (var cell in tableSection)
        {
            if (cell is TextCell textCell)
            {
                db.Append("<p style='color:red;text-align:left;'>" + textCell.Text + "</p>");
                db.Append("<p style='color:black;text-align:justify;'>" + textCell.Detail + "</p>");
            }
        }
    }

    // Create and save the PDF
    var renderer = new IronPdf.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))
    {
        var query = Userquest.Text;
        Userquest.Text = "";
        var tableSection = AddQueryToTable(query);
        ChatGptResponse response = await _chatGptClient.AskAsync(_sessionGuid, query);
        var resp = response.GetMessage();
        AddResponseToTable(tableSection, resp);
    }
}

private TableSection AddQueryToTable(string query)
{
    var textCell = new TextCell
    {
        Text = query,
        TextColor = Colors.Red,
        DetailColor = Colors.WhiteSmoke,
        Detail = ""
    };

    var tableSection = new TableSection { textCell };
    Table_View.Root.Add(tableSection);
    return tableSection;
}

private void AddResponseToTable(TableSection section, string response)
{
    if (section.FirstOrDefault() is TextCell textCell)
    {
        textCell.Detail = response;
    }
}
Private Sub OnExportClicked(ByVal sender As Object, ByVal e As EventArgs)
	Dim db As New StringBuilder()

	For Each tableSection In Table_View.Root.ToList()
		For Each cell In tableSection
			Dim tempVar As Boolean = TypeOf cell Is TextCell
			Dim textCell As TextCell = If(tempVar, CType(cell, TextCell), Nothing)
			If tempVar Then
				db.Append("<p style='color:red;text-align:left;'>" & textCell.Text & "</p>")
				db.Append("<p style='color:black;text-align:justify;'>" & textCell.Detail & "</p>")
			End If
		Next cell
	Next tableSection

	' Create and save the PDF
	Dim renderer = New IronPdf.ChromePdfRenderer()
	Dim pdf = renderer.RenderHtmlAsPdf(db.ToString())
	pdf.SaveAs("F:\Download\Demo.pdf")
End Sub

Private Async Sub SendqueryClicked(ByVal sender As Object, ByVal e As EventArgs)
	If Not String.IsNullOrEmpty(Userquest.Text) Then
		Dim query = Userquest.Text
		Userquest.Text = ""
		Dim tableSection = AddQueryToTable(query)
		Dim response As ChatGptResponse = Await _chatGptClient.AskAsync(_sessionGuid, query)
		Dim resp = response.GetMessage()
		AddResponseToTable(tableSection, resp)
	End If
End Sub

Private Function AddQueryToTable(ByVal query As String) As TableSection
	Dim textCell As New TextCell With {
		.Text = query,
		.TextColor = Colors.Red,
		.DetailColor = Colors.WhiteSmoke,
		.Detail = ""
	}

	Dim tableSection As New TableSection From {textCell}
	Table_View.Root.Add(tableSection)
	Return tableSection
End Function

Private Sub AddResponseToTable(ByVal section As TableSection, ByVal response As String)
	Dim tempVar As Boolean = TypeOf section.FirstOrDefault() Is TextCell
	Dim textCell As TextCell = If(tempVar, CType(section.FirstOrDefault(), TextCell), Nothing)
	If tempVar Then
		textCell.Detail = response
	End If
End Sub
$vbLabelText   $csharpLabel

解釋:

  • OnExportClicked 方法使用 IronPDF 從 UI 收集的 HTML 內容建立 PDF。 產生的PDF檔案將儲存到指定位置。

  • SendqueryClicked 方法接收使用者的查詢,使用 _chatGptClient 將其傳送至 OpenAI API,並顯示回應。 它還將查詢和回應添加到 TableView

  • 輔助方法 AddQueryToTableAddResponseToTable 有助於使用使用者查詢和聊天機器人回應更新 UI 元件。

添加上述程式碼後,請嘗試運行您的解決方案。 輸入查詢語句,然後點選"傳送查詢"按鈕以取得結果。 它會將使用者的查詢傳送到 ChatGPT API,檢索結果,並將訊息顯示在螢幕上。

如何在 IronPDF 中使用 ChatGPT(面向 C# 開發人員),圖 7:在應用程式中新增文字查詢 在應用程式中新增文字查詢

點擊"匯出"按鈕,將結果匯出為PDF文件。

如何在 IronPDF 中使用 ChatGPT(面向 C# 開發人員),圖 8:匯出的 PDF 文件 匯出的PDF文件

現在,我們已經能夠使用 ChatGPT 建立聊天機器人,並使用 MAUI 應用程式上的 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 的完整定價和許可信息,請參閱IronPDF 許可頁面

常見問題解答

如何將ChatGPT集成到.NET MAUI應用中?

要將ChatGPT集成到.NET MAUI應用中,首先設置OpenAI帳戶並獲得API密鑰。然後,通過NuGet在您的項目中安裝OpenAI包並在您的應用中配置API以處理用戶查詢。

如何在MAUI應用中將API結果轉換為PDF?

您可以使用IronPDF在MAUI應用中將API結果轉換為PDF。從ChatGPT API檢索響應後,使用IronPDF的方法將HTML內容渲染為PDF。

設置ChatGPT驅動的MAUI應用需要哪些步驟?

要設置ChatGPT驅動的MAUI應用,在Visual Studio中新建.NET MAUI項目,安裝OpenAI和IronPDF包,配置代碼中的API設置,並編寫邏輯以處理查詢和輸出到PDF。

IronPDF在創建PDF時能處理HTML、JavaScript和CSS內容嗎?

是的,IronPDF能處理HTML、JavaScript和CSS內容並創建PDF。它使用Chrome渲染引擎將HTML內容轉換為PDF文件。

是否可以在我的應用中自定義ChatGPT API設置?

是的,您可以在應用中通過調整MauiProgram.cs文件中的各種參數如模型類型、消息限制和到期時間來自定義ChatGPT API設置。

在MAUI應用中使用IronPDF有什麼好處?

IronPDF提供了一個強大的SDK來創建、閱讀和編輯PDF。它支持將HTML內容轉換為PDF,支持文本提取,並提供多種功能來增強MAUI應用中的PDF處理。

IronPDF 有免費試用版嗎?

是的,IronPDF提供免費試用,允許開發者在承諾購買許可計劃之前探索其功能。

如何安裝MAUI中的ChatGPT PDF項目所需的包?

在Visual Studio中使用NuGet包管理器控制台安裝OpenAI和IronPDF包。執行Install-Package OpenAIInstall-Package IronPDF將其添加到您的項目中。

IronPDF在處理PDF文檔中起什麼作用?

IronPDF用於創建、編輯和轉換PDF文檔。它允許開發者將網頁內容轉換為PDF,執行文本搜索並提取圖像,非常適合需要PDF功能的應用。

IronPDF 是否與 .NET 10 完全相容?

是的,IronPDF完全支持.NET 10。它支持所有主流.NET版本,包括.NET 10、9、8、7、6、Core及.NET Framework,並且可在.NET 10專案中開箱即用,無需特殊配置。

Curtis Chau
技術作家

Curtis Chau 擁有卡爾頓大學計算機科學學士學位,專注於前端開發,擅長於 Node.js、TypeScript、JavaScript 和 React。Curtis 熱衷於創建直觀且美觀的用戶界面,喜歡使用現代框架並打造結構良好、視覺吸引人的手冊。

除了開發之外,Curtis 對物聯網 (IoT) 有著濃厚的興趣,探索將硬體和軟體結合的創新方式。在閒暇時間,他喜愛遊戲並構建 Discord 機器人,結合科技與創意的樂趣。

鋼鐵支援團隊

我們每週 5 天,每天 24 小時在線上。
聊天
電子郵件
打電話給我