使用 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可以理解並生成類似人類的文本。

本文將演示如何開發一個使用 OpenAI ChatGPT API 的 MAUI 應用程式,來接收訊息、根據使用者查詢提供結果,然後使用 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 Framework 以使用 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 Framework 選擇

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

在應用程式主頁的頁面載入方法中新增以下內容。 這有助於立即獲得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 應用程式的 UI

<?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 次請求。 使用者介面還有一個名為“export”的按鈕,可將使用者查詢和 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文件

現在,我們能夠在 MAUI 應用程式中使用 ChatGPT 創建聊天機器人,並使用 IronPDF 匯出該聊天。基於上述概念,可以從 ChatGPT API 中包含圖片、音頻和影片以獲得更準確的結果。

5.0 結論

本文的目標是開發一個使用 OpenAI 聊天機器人 API 的 MAUI 應用程式,以接收消息、根據用戶查詢提供結果,並將這些結果導出為 PDF 文件。為了提高建議的質量,可以通過修改問題進行探索。 若要查看不同模型是否產生更好的結果,您還可以嘗試在 "MauiProgram.cs" 中的 AddChatGpt 方法內修改 ChatGptModels 枚舉值。

ChatGPT API 是一個強大的人工智慧程式,能夠讓我們根據使用者查詢提供結果。 ChatGPT API 的費用是根據發送請求的數量來計算的。 IronPDF 用於進行 API 請求並將結果導出為 PDF,以便未來使用,避免重複查詢相同的 API 請求。

我們可以使用IronPDF僅幾行程式碼就建立PDF。 此應用程式適合初學者使用,僅需基本知識即可操作。 沒有其他套件以任何方式依賴IronPDF。 例如,它是一個整合在單一封裝中的庫。 IronPDF 開發者可以選擇多種許可證來滿足他們的需求。 另有免費試用版提供。 如需取得 IronPDF 的完整價格與授權資訊,請參考IronPDF 授權頁面.

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

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

免費 NuGet 下載 總下載次數: 11,622,374 查看許可證 >