在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
ChatGPT 是一種人工智慧(人工智慧)由 OpenAI 創建的聊天機器人。 「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 中選擇框架版本後,按下 Create 按鈕。
配置新專案
在 Visual Studio 2022 中,將創建一個新的 .NET MAUI 專案。 .NET MAUI 預設開發一個簡單的計數器應用程式。
.NET Framework 選擇
通過修改 .NET MAUI 應用程式,可以整合 ChatGPT OpenAI,並使用 IronPDF C# PDF 庫將結果匯出為 PDF 文件於此平台的這個變體上。
在 NuGet 封裝管理器主控台輸入下一個命令。
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到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 應用程式的 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>
上述程式碼有助於設計和實現 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 授權頁面.