Skip to content

Commit e78660d

Browse files
Merge pull request #2 from SyncfusionExamples/AISmartPaste
DataForm OpenAI-powered smart paste sample added.
2 parents da66227 + 1bdde84 commit e78660d

9 files changed

+63
-88
lines changed

MAUIDataForm/MAUIDataForm/App.xaml.cs

+1-2
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ public partial class App : Application
55
public App()
66
{
77
InitializeComponent();
8-
9-
MainPage = new AppShell();
8+
MainPage = new MainPage();
109
}
1110
}

MAUIDataForm/MAUIDataForm/AppShell.xaml

-14
This file was deleted.

MAUIDataForm/MAUIDataForm/AppShell.xaml.cs

-9
This file was deleted.

MAUIDataForm/MAUIDataForm/MAUIDataForm.csproj

+1-1
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@
6363
<PackageReference Include="Microsoft.Maui.Controls" Version="$(MauiVersion)" />
6464
<PackageReference Include="Microsoft.Maui.Controls.Compatibility" Version="$(MauiVersion)" />
6565
<PackageReference Include="Microsoft.Extensions.Logging.Debug" Version="8.0.0-rc.2.23479.6" />
66-
<PackageReference Include="Azure.AI.OpenAI" Version="1.0.0-beta.15" />
66+
<PackageReference Include="Microsoft.SemanticKernel" Version="1.0.1" />
6767
<PackageReference Include="Newtonsoft.Json" Version="13.0.2" />
6868
<PackageReference Include="Syncfusion.Maui.DataForm" Version="*" />
6969
</ItemGroup>

MAUIDataForm/MAUIDataForm/MainPage.xaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
MaximumHeightRequest="550"
1818
VerticalOptions="Start"
1919
HorizontalOptions="Center"
20-
WidthRequest="550"
20+
WidthRequest="{OnPlatform MacCatalyst=550, WinUI=450, iOS=400, Android=350}"
2121
Padding="10">
2222

2323
<Grid BackgroundColor="{DynamicResource SfDataFormNormalBackground}">

MAUIDataForm/MAUIDataForm/MainPage.xaml.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public MainPage()
1010
}
1111

1212
string clipboardText;
13-
private AzureOpenAIService azureAIService = new AzureOpenAIService();
13+
SemanticKernelService semanticKernelService = new SemanticKernelService();
1414

1515
private async void OnSmartPasteButtonClicked(object sender, EventArgs e)
1616
{
@@ -37,7 +37,7 @@ private async void OnSmartPasteButtonClicked(object sender, EventArgs e)
3737
$"\n3. Final output must be Json format" +
3838
$"\n4. No need any explanation or comments in the output" +
3939
$"\n Please provide the valid JSON object without any additional formatting characters like backticks or newlines";
40-
string finalResponse = await this.azureAIService.GetResponseFromGPT(prompt);
40+
string finalResponse = await this.semanticKernelService.GetResponseFromGPT(prompt);
4141
this.ProcessSmartPasteData(finalResponse);
4242
}
4343

MAUIDataForm/MAUIDataForm/Service/AzureOpenAIService.cs

-58
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,54 @@
1+
namespace MAUIDataForm
2+
{
3+
using Microsoft.SemanticKernel;
4+
using Microsoft.SemanticKernel.ChatCompletion;
5+
using Microsoft.SemanticKernel.Connectors.OpenAI;
6+
7+
internal class SemanticKernelService
8+
{
9+
const string endpoint = "https://{YOUR_END_POINT}.openai.azure.com";
10+
const string deploymentName = "GPT35Turbo";
11+
string key = "API key";
12+
13+
IChatCompletionService chatCompletionService;
14+
Kernel kernel;
15+
16+
internal SemanticKernelService()
17+
{
18+
19+
}
20+
21+
internal async Task<string> GetResponseFromGPT(string userPrompt)
22+
{
23+
var builder = Kernel.CreateBuilder().AddAzureOpenAIChatCompletion(deploymentName, endpoint, key);
24+
this.kernel = builder.Build();
25+
if (this.kernel != null)
26+
{
27+
var chatHistory = new ChatHistory();
28+
chatHistory.Clear();
29+
30+
// Add the user's prompt as a user message to the conversation.
31+
chatHistory.AddSystemMessage("You are a predictive analytics assistant.");
32+
33+
// Add the user's prompt as a user message to the conversation.
34+
chatHistory.AddUserMessage(userPrompt);
35+
36+
// Get the chat completions from kernal.
37+
chatCompletionService = kernel.GetRequiredService<IChatCompletionService>();
38+
OpenAIPromptExecutionSettings openAIPromptExecutionSettings = new OpenAIPromptExecutionSettings();
39+
openAIPromptExecutionSettings.ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions;
40+
try
41+
{
42+
var response = await chatCompletionService.GetChatMessageContentAsync(chatHistory, executionSettings: openAIPromptExecutionSettings, kernel: kernel);
43+
return response.ToString();
44+
}
45+
catch
46+
{
47+
return "";
48+
}
49+
}
50+
51+
return "";
52+
}
53+
}
54+
}

README.md

+4-1
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
1-
# Integrate-openai-powered-smart-paste-into-DataForm-for-Seamless-Data-Entry
1+
# Integrate OpenAI-Powered Smart Paste into DataForm for Seamless Data Entry
2+
23
This repository contains sample code demonstrating how to integrate OpenAI-powered Smart Paste into a Syncfusion MAUI DataForm. The AI-driven feature streamlines data entry by processing and formatting pasted content, enhancing efficiency and accuracy.
4+
5+
![image](https://github.com/user-attachments/assets/987ccf81-b954-4c99-8479-b80828c2acf1)

0 commit comments

Comments
 (0)