在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
ChatGPT是一種人工智慧 (人工智慧) 由OpenAI創建的聊天機器人。「ChatGPT」這個術語結合了「Chat」,指的是系統的聊天機器人功能,以及「GPT」,即生成式預訓練變壓器,這是一種大型語言模型。 (LLM)OpenAI 基本的 GPT 模型,即 GPT-3.5 和 GPT-4,是 ChatGPT 的基礎,並已經過改進。 (遷移學習方法) 用於會話應用程序結合監督學習和強化學習技術,包括機器學習、自然語言處理和人工智慧。ChatGPT 能夠理解和生成類似人類的文字。
本文將演示如何開發一個 MAUI 應用程序,利用 OpenAI ChatGPT API 接收訊息,根據用戶查詢提供結果,然後使用 IronPDF 將這些結果導出為 PDF 文件以供以後使用。
要註冊 OpenAI 帳戶,請執行以下操作:
點擊發送到您註冊電子郵件帳戶的驗證鏈接來確認您的電子郵件地址。
要訪問 OpenAI,請前往網站並使用您的帳戶信息登入。
存取 OpenAI 網站
現在您可以創建一個新的秘密 API 金鑰。
創建 API 金鑰
您需要安裝 Visual Studio 2022 和 .NET 7 框架來創建用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 框架選擇
透過修改 .NET MAUI 應用程序,可以將 ChatGPT OpenAI 集成並使用 IronPDF C# PDF 庫在此變體平台上導出結果為 PDF 文件。
輸入以下命令至 NuGet 套件管理控制台。
Install-Package OpenAI
將上述程式碼行輸入套件管理器主控台,這將有助於安裝 OpenAI 套件。
Install-Package IronPdf
上面的程式碼有助於將IronPDF安裝到MAUI程式碼中。
開發人員可以迅速創建、閱讀和編輯 PDF 文檔,這要歸功於 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 轉換工具和引擎,無需依賴任何外部資源。
將以下程式碼添加到 "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 創建一個服務,然後可以被其他類別/頁面檢索和使用。
在應用程式的主頁面上的 page load 方法中添加下面的內容。這有助於立即獲取 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>
上述代码有助于设计和实现UI页面。在设计页面中,文本框允许用户输入查询。一旦输入了他们需要的文本,当点击按钮时,会发送一个查询与ChatGPT API进行交互并产生结果。结果将显示在Tableview
中。
作为演示版本的ChatGPT服务,每分钟限制不超过3个请求。UI还有一个名为“导出”的按钮,可以将用户查询和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 文件
現在,我們可以使用 ChatGPT 在 MAUI App 上創建一個聊天機器人,並使用 IronPDF 來匯出該聊天。使用上述概念,可以從 ChatGPT API 中導入圖片、音訊和視頻,以獲得更準確的結果。
本文的目標是開發一個MAUI應用程式,利用OpenAI ChatGPT API來接收消息,根據用戶查詢提供結果,並將這些結果導出為PDF檔案。為了提高建議的質量,可以通過修改問題進行探索。您也可以通過修改"MauiProgram.cs"中的AddChatGpt
方法內的ChatGptModels
枚舉值來實驗不同模型是否能產生更好的結果。
ChatGPT API是一個強大的AI程式,讓我們可以根據用戶查詢提供結果。ChatGPT API的費用是根據發送請求的數量計算的。IronPDF被用來進行API請求並將結果導出為PDF,以便以後使用,避免重複查詢相同的API請求。
我們只需幾行程式碼就可以使用IronPDF創建PDF。這個應用程式適合初學者,並且僅需要基礎知識來使用。IronPDF不依賴於任何其他套件。舉個例子,它是一個單獨的套件庫。IronPDF開發者可以選擇多種許可證來滿足需求,也提供免費試用。關於IronPDF的完整價格和許可證資訊,請參考 授權頁面.