跳過到頁腳內容
使用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 接收訊息,根據使用者查詢提供結果,然後使用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應用程式入門

要建立用 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應用程式範本。 選定項目後,給它一個好名字,然後選擇項目地點。 配置完成後,點選"下一步"。

如何將 ChatGPT 與IronPDF結合使用(針對 C# 開發人員),圖 3:在 Visual Studio 中建立一個新的.NET MAUI應用程式 在 Visual Studio 中建立一個新的.NET MAUI應用程式

2.3 選擇框架

選擇必要的框架; 然而,例如,建議選擇最新的.NET Framework。 在 Visual Studio 中選擇框架版本後,按下"建立"按鈕。

如何將 ChatGPT 與IronPDF結合使用(針對 C# 開發人員),圖 4:設定新專案 配置新項目

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

如何將 ChatGPT 與IronPDF結合使用(針對 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
});
$vbLabelText   $csharpLabel

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

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

_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<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;
    }
}
$vbLabelText   $csharpLabel

解釋:

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

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

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

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

如何將 ChatGPT 與IronPDF結合使用(針對 C# 開發人員),圖 7:在應用程式中新增文字查詢 在應用程式中新增文字查詢

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

如何將 ChatGPT 與IronPDF結合使用(針對 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 機器人,結合科技與創意的樂趣。

Iron Support Team

We're online 24 hours, 5 days a week.
Chat
Email
Call Me