フッターコンテンツにスキップ
IRONPDFの使用

C#開発者向けのIronPDFとChatGPTの使用法

1.0 ChatGPTとは何ですか?

ChatGPTはOpenAIによって作成された人工知能(AI)チャットボットです。 "ChatGPT"という用語は、"チャットボット機能"を意味する"Chat"という言葉と、大規模言語モデル(LLM)の一種である"生成型事前学習トランスフォーマー"を意味する"GPT"を組み合わせたものです。 ChatGPTは、OpenAIの基本的なGPTモデル、具体的にはGPT-3.5とGPT-4を基にしており、会話アプリケーションのために、監督学習と強化学習方法の組み合わせを利用してチューニングされています。これには機械学習、自然言語処理、人工知能が含まれます。 ChatGPTは、人間のようなテキストを理解し生成できます。

この記事では、OpenAI ChatGPT APIを利用してメッセージを取り込み、ユーザーのクエリに基づいた結果を提供し、その結果をIronPDFを使用して後で使用するためにPDFファイルとしてエクスポートするMAUIアプリケーションを開発する方法を示します。

1.1 OpenAIアカウントのセットアップ

OpenAIアカウントに登録するには、次の手順を実行してください:

  • 公式のOpenAIウェブサイトを訪問します。
  • ウェブサイトのホームページで、サインアップボタンを見つけてクリックします。 これにより、アカウント作成フォームに移動します。
  • サインアップフォームの必須項目を入力します。
  • 登録済みのメールアカウントに送られる確認リンクをクリックして、メールアドレスを確認します。
  • 登録が成功すると、登録時に入力したログイン情報を入力することでOpenAIアカウントにアクセスできるようになります。

1.2 OpenAI APIキーの取得

  • OpenAIにアクセスするには、ウェブサイトにアクセスしてアカウント情報でログインしてください。

IronPDFを使用したC#開発者向けのChatGPTの使用方法 図1: OpenAIウェブサイトへのアクセス OpenAIウェブサイトへのアクセス

  • OpenAIプラットフォームのAPIセクションに移動します。 アカウント設定 > APIキーの表示 でこれを見つけることができます。
  • ここで新しい秘密のAPIキーを作成することができます。

IronPDFを使用したC#開発者向けのChatGPTの使用方法 図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アプリテンプレートを選択します。 それを選択した後、適切な名前を付けてプロジェクトの場所を選択します。 設定が完了したら、"次へ"をクリックします。

IronPDFを使用したC#開発者向けのChatGPTの使用方法 図3: Visual Studioで新しい.NET MAUIアプリを作成 Visual Studioで新しい.NET MAUIアプリを作成

2.3 フレームワークを選択

必要なフレームワークを選択してください; それにもかかわらず、例えば最新の.NET Frameworkを選択することを推奨します。 フレームワークのバージョンを選択した後、Visual Studioで作成ボタンを押します。

IronPDFを使用したC#開発者向けのChatGPTの使用方法 図4: 新しいプロジェクトの設定 新しいプロジェクトの設定

Visual Studio 2022に新しい.NET MAUIプロジェクトが作成されます。 デフォルトでは、.NET MAUIは簡単なカウンターアプリケーションを開発します。

IronPDFを使用したC#開発者向けのChatGPTの使用方法 図5: .NET Frameworkの選択 .NETフレームワークの選択

.NET MAUIアプリケーションを修正することで、ChatGPT OpenAIが統合され、IronPDF C# PDFライブラリを使用してこのプラットフォームのバリアントに結果をPDFファイルとしてエクスポートすることができます。

2.4 OpenAIパッケージのインストール

NuGetパッケージマネージャコンソールに次のコマンドを入力してください。

Install-Package OpenAI

このコマンドは、C#を使用してChatGPTと対話するために必要なAPIへのアクセスを提供するOpenAIパッケージをインストールします。

2.5 IronPDFのインストール

IronPDFパッケージをインストールするために次のコマンドを入力してください:

Install-Package IronPdf

上記のコマンドは、IronPDFをMAUIプロジェクトにインストールします。 IronPDFはHTMLコンテンツをPDFファイルにレンダリングするために使用され、アプリからデータをPDFドキュメントにエクスポートする際の重要な部分です。

3.0 IronPDFとは何ですか?

IronPDFは、開発者が迅速にPDFドキュメントを作成、読み込み、編集できるようにする強力なPDF SDK基盤です。 HTMLをPDFに変換するためにChromeエンジンを使用しています。 ライブラリがサポートする多くのWebコンポーネントには、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ライブラリには、PDFに対処できる強力なHTMLから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
});
builder.Services.AddChatGpt(Sub(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
End Sub)
$vbLabelText   $csharpLabel

このコードスニペットは、アプリケーション内の他のクラスまたはページで使用できるChatGPT APIのサービスを登録します。

ページロードメソッドでアプリケーションのメインページに次のコードを追加してください。 これにより、ChatGPTサーバインスタンスを取得し、ローカルオブジェクトに保存できます。

_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService<IChatGptClient>();
_chatGptClient = Handler.MauiContext.Services.GetService(Of 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>
                        <!-- TableSection can be populated with dynamic data -->
                    </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>
                        <!-- TableSection can be populated with dynamic data -->
                    </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レイアウトを定義しています。 ユーザーはクエリを入力し、"Send Query"ボタンをちょっとしてChatGPT APIとやり取りし、"Export"ボタンを使って結果を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;
    }
}
Private Sub OnExportClicked(ByVal sender As Object, ByVal e As EventArgs)
	Dim db As New StringBuilder()

	For Each tableSection In Table_View.Root.ToList()
		For Each cell In tableSection
			Dim tempVar As Boolean = TypeOf cell Is TextCell
			Dim textCell As TextCell = If(tempVar, CType(cell, TextCell), Nothing)
			If tempVar Then
				db.Append("<p style='color:red;text-align:left;'>" & textCell.Text & "</p>")
				db.Append("<p style='color:black;text-align:justify;'>" & textCell.Detail & "</p>")
			End If
		Next cell
	Next tableSection

	' Create and save the PDF
	Dim renderer = New IronPdf.ChromePdfRenderer()
	Dim pdf = renderer.RenderHtmlAsPdf(db.ToString())
	pdf.SaveAs("F:\Download\Demo.pdf")
End Sub

Private Async Sub SendqueryClicked(ByVal sender As Object, ByVal e As EventArgs)
	If Not String.IsNullOrEmpty(Userquest.Text) Then
		Dim query = Userquest.Text
		Userquest.Text = ""
		Dim tableSection = AddQueryToTable(query)
		Dim response As ChatGptResponse = Await _chatGptClient.AskAsync(_sessionGuid, query)
		Dim resp = response.GetMessage()
		AddResponseToTable(tableSection, resp)
	End If
End Sub

Private Function AddQueryToTable(ByVal query As String) As TableSection
	Dim textCell As New TextCell With {
		.Text = query,
		.TextColor = Colors.Red,
		.DetailColor = Colors.WhiteSmoke,
		.Detail = ""
	}

	Dim tableSection As New TableSection From {textCell}
	Table_View.Root.Add(tableSection)
	Return tableSection
End Function

Private Sub AddResponseToTable(ByVal section As TableSection, ByVal response As String)
	Dim tempVar As Boolean = TypeOf section.FirstOrDefault() Is TextCell
	Dim textCell As TextCell = If(tempVar, CType(section.FirstOrDefault(), TextCell), Nothing)
	If tempVar Then
		textCell.Detail = response
	End If
End Sub
$vbLabelText   $csharpLabel

説明:

  • OnExportClickedメソッドは、UIから収集したHTMLコンテンツからPDFを作成し、IronPDFを使用して保存します。 生成されたPDFは指定された場所に保存されます。

  • SendqueryClickedメソッドは、ユーザーのクエリを取得し、_chatGptClientを使用してOpenAI APIに送信し、応答を表示します。 また、クエリと応答をTableViewに追加します。

  • ユーザーのクエリとチャットボットのレスポンスでUIコンポーネントを更新するためのヘルパーメソッドAddQueryToTableAddResponseToTableもあります。

上記のコードを追加した後、ソリューションを実行してみてください。 クエリを入力して"Send Query"ボタンをクリックすることで結果を取得します。 それはユーザーのクエリをChatGPT APIに送信し、結果を取得し、画面にメッセージを表示します。

IronPDFを使用したC#開発者向けのChatGPTの使用方法 図7: アプリケーションにテキストクエリを追加 アプリケーションにテキストクエリを追加

"Export"ボタンをクリックして、結果をPDFにエクスポートします。

IronPDFを使用したC#開発者向けのChatGPTの使用方法 図8: エクスポートされたPDFファイル エクスポートされたPDFファイル

これで、ChatGPTを使用したチャットボットを作成し、IronPDFを使用してMAUIアプリでそのチャットをエクスポートすることができました。上記の概念を使用すると、ChatGPT APIから画像、音声、およびビデオを含めることができ、より正確な結果を得ることができます。

5.0 結論

この記事の目的は、OpenAI ChatGPT APIを利用してメッセージを取得し、ユーザーのクエリに基づいた結果を提供し、その結果をPDFファイルとしてエクスポートするMAUIアプリケーションを開発することです。提案の質を向上させるために、質問を変更することで自由に探索してください。 さまざまなモデルがより良い結果を生成するかどうかを確認するために、"MauiProgram.cs"のAddChatGptメソッド内のChatGptModels列挙値を変更して実験することもできます。

ChatGPT APIは、ユーザーのクエリに基づいて結果を提供できる強力なAIプログラムです。 ChatGPT APIの料金は送信されるリクエストの数に基づいて計算されます。 IronPDFはAPIリクエストを行い、結果をPDFにエクスポートして将来使用することができ、同じAPI要求を繰り返し問い合わせることを避けることができます。

IronPDFを使用すると、数行のコードでPDFを作成することができます。 このアプリケーションは初心者に適しており、使用するための基礎的な知識しか必要ありません。 IronPDFには別のパッケージは依存していません。 例えば、1つのパッケージで構成されているライブラリです。 IronPDFの開発者は、要件に応じたさまざまなライセンスを選択できます。 無料トライアルも利用可能です。 IronPDFの完全な価格およびライセンス情報については、IronPDFライセンシングページを参照してください。

よくある質問

ChatGPTを.NET MAUIアプリケーションに統合するにはどうすればよいですか?

ChatGPTを.NET MAUIアプリケーションに統合するには、最初にOpenAIアカウントをセットアップし、APIキーを取得します。次に、NuGetを介してプロジェクトにOpenAIパッケージをインストールし、アプリケーション内でAPIを構成してユーザーのクエリを処理します。

MAUIアプリでAPI結果をPDFに変換する方法は?

MAUIアプリでAPI結果をPDFに変換するには、IronPDFを使用します。ChatGPT APIから回答を取得した後、IronPDFのメソッドを使用してHTMLコンテンツをPDFとしてレンダリングします。

ChatGPT対応のMAUIアプリをセットアップするのに必要なステップは?

ChatGPT対応のMAUIアプリをセットアップするには、Visual Studioで新しい.NET MAUIプロジェクトを作成し、OpenAIとIronPDFパッケージをインストールし、コード内でAPI設定を構成し、クエリを処理しPDFに出力するロジックを書きます。

IronPDFはPDF作成時にHTML、JavaScript、CSSコンテンツを処理できますか?

はい、IronPDFはPDF作成時にHTML、JavaScript、CSSコンテンツを処理できます。Chromeレンダリングエンジンを使用してHTMLコンテンツをPDFドキュメントとして変換します。

アプリケーション内でChatGPT API設定をカスタマイズすることは可能ですか?

はい、'MauiProgram.cs'ファイル内でモデルタイプ、メッセージ制限、期限などのパラメータを調整することで、アプリケーション内のChatGPT API設定をカスタマイズできます。

MAUIアプリケーションでIronPDFを使用する利点は何ですか?

IronPDFはPDFの作成、読み取り、編集を行うための強力なSDKを提供します。HTMLコンテンツをPDFに変換し、テキスト抽出をサポートし、PDF処理を強化するためのさまざまな機能を提供します。

IronPDFの無料試用版はありますか?

はい、IronPDFは無料トライアルを提供しており、開発者がライセンシングプランを検討する前にその機能を試すことができます。

MAUIでChatGPT PDFプロジェクトに必要なパッケージをどのようにインストールしますか?

Visual StudioのNuGetパッケージマネージャーコンソールを使用して、OpenAIとIronPDFパッケージをインストールします。Install-Package OpenAIおよびInstall-Package IronPDFを実行してプロジェクトに追加します。

PDFドキュメントを処理する上でのIronPDFの役割は何ですか?

IronPDFはPDFドキュメントの作成、編集、変換に使用されます。開発者はウェブコンテンツをPDFに変換し、テキスト検索を実行し、画像を抽出することができます。PDF機能を必要とするアプリケーションにとって理想的です。

IronPDF は .NET 10 と完全に互換性がありますか?

はい、IronPDFは.NET 10と完全に互換性があります。すべての主要な.NETバージョン(.NET 10、9、8、7、6、Core、.NET Framework)をサポートしており、特別な設定なしで.NET 10プロジェクトでそのまま動作するように設計されています。

カーティス・チャウ
テクニカルライター

Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。

開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。