在生產環境中測試,無水印。
在任何需要的地方都能運行。
獲得 30 天的全功能產品。
在幾分鐘內上手運行。
試用產品期間完全訪問我們的支援工程團隊
ChatGPT 是由 OpenAI 創建的人工智慧 (AI) 聊天機器人。 “ChatGPT”一詞結合了“Chat”,指的是系統的聊天機器人功能,以及“GPT”,即生成型預訓練轉換器,是一種大型語言模型(LLM)。 OpenAI 的基本 GPT 模型,即 GPT-3.5 和 GPT-4,是 ChatGPT 的基礎,該模型已被優化(轉移學習的一種方法)用於對話應用,並結合使用監督學習和強化學習技術,其中包括機器學習、自然語言處理和人工智慧。 ChatGPT可以理解並生成類似人類的文本。
本文將演示如何開發一個使用 OpenAI ChatGPT API 的 MAUI 應用程式,來接收訊息、根據使用者查詢提供結果,然後使用 IronPDF 將這些結果匯出為 PDF 檔案以供日後使用。
要註冊一個 OpenAI 帳戶,請執行以下操作:
要訪問 OpenAI,請前往網站並使用您的帳號資訊登入。
訪問OpenAI網站
現在您可以建立一個新的秘密 API 金鑰。
建立 API 金鑰
您需要安裝 Visual Studio 2022 和 .NET 7 Framework 以使用 C# 創建 .NET MAUI 應用程式。 接下來,按照以下步驟來創建和編寫 .NET MAUI 應用程式。
打開 Visual Studio,然後從菜單中選擇「建立新專案」,在搜尋欄位中輸入「.NET MAUI」。
在 Visual Studio 中,從搜尋結果列表中選擇 .NET MAUI 應用程式範本。 選擇它後,給它一個合適的名稱並選擇專案的位置。 配置完成後,點擊「下一步」。
在 Visual Studio 中建立新的 .NET MAUI 應用程式
選擇所需的框架; 然而,例如,建議選擇最新的.NET Framework。 在選擇框架版本後,請按下 Visual Studio 中的建立按鈕。
配置新專案
在 Visual Studio 2022 中,將創建一個新的 .NET MAUI 專案。 .NET MAUI 預設開發一個簡單的計數器應用程式。
.NET Framework 選擇
通過修改 .NET MAUI 應用程式,可以整合 ChatGPT OpenAI,並使用 IronPDF C# PDF 庫將結果匯出為 PDF 文件於此平台的這個變體上。
在 NuGet 封裝管理器主控台輸入下一個命令。
Install-Package OpenAI
Install-Package OpenAI
將上述程式碼行輸入套件管理器主控台,這將有助於安裝 OpenAI 套件。
Install-Package IronPdf
上面的程式碼有助於將IronPDF安裝到MAUI程式碼中。
開發人員可以藉由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 轉換工具和引擎,無需依賴任何外部資源。
IronPDF 接受使用者名稱和密碼以獲取存取受密碼保護的 PDF 檔案的權限。
若要了解更多關於 IronPDF 的資訊,請參閱HTML-to-PDF 轉換指南頁面。
在「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)
這有助於為ChatGPT API創建一個服務,然後其他類別/頁面可以檢索和使用它。
在應用程式主頁的頁面載入方法中新增以下內容。 這有助於立即獲得ChatGPT服務並將其存儲到本地對象中。
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService(Of IChatGptClient)()
然後為用戶介面創建如下圖所示的 UI。
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 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>
上述程式碼有助於設計和實現 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
使用 for 迴圈逐一檢索輸入資料,然後將 HTML 字串添加到字串中以格式化顯示文字。 然後,IronPDF 可以用來將結果匯出為 PDF 並儲存在所需位置。
添加上述程式碼後,嘗試運行方案。 然後輸入查詢並點擊「發送查詢」按鈕來獲取結果。 它將發送用戶的查詢以檢索結果並在螢幕上顯示消息,如下圖所示。
將文字查詢加入應用程式
點擊匯出按鈕以匯出結果至 PDF,如下圖所示。
匯出的 PDF 檔案
現在,我們能夠在 MAUI 應用程式中使用 ChatGPT 創建聊天機器人,並使用 IronPDF 匯出該聊天。基於上述概念,可以從 ChatGPT API 中包含圖片、音頻和影片以獲得更準確的結果。
本文的目標是開發一個使用 OpenAI 聊天機器人 API 的 MAUI 應用程式,以接收消息、根據用戶查詢提供結果,並將這些結果導出為 PDF 文件。為了提高建議的質量,可以通過修改問題進行探索。 若要查看不同模型是否產生更好的結果,您也可以嘗試在「MauiProgram.cs」中的 AddChatGpt
方法內修改 ChatGptModels
列舉值。
ChatGPT API 是一個強大的人工智慧程式,能夠讓我們根據使用者查詢提供結果。 ChatGPT API 的費用是根據發送請求的數量來計算的。 IronPDF 用於進行 API 請求並將結果導出為 PDF,以便未來使用,避免重複查詢相同的 API 請求。
我們可以使用IronPDF僅幾行程式碼就建立PDF。 此應用程式適合初學者使用,僅需基本知識即可操作。 沒有其他套件以任何方式依賴IronPDF。 例如,它是一個整合在單一封裝中的庫。 IronPDF 開發者可以選擇多種許可證來滿足他們的需求。 另有免費試用版提供。 若需完整的 IronPDF 價格及授權資訊,請參閱 IronPDF 授權頁面。