Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
IProgress<string> progress;
using LanguageModel languageModel = await LanguageModel.CreateAsync();
var textRewriter = new TextRewriter(languageModel);

var textRewriterResponseWithProgress = textRewriter.RewriteCustomAsync(prompt, customTone);

string progressText = string.Empty;
textRewriterResponseWithProgress.Progress = (_, generationProgress) =>
{
progress.Report(generationProgress);
};
var response = await textRewriterResponseWithProgress;
32 changes: 32 additions & 0 deletions Samples/WindowsAIFoundry/cs-winui/Models/LanguageModelModel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -82,6 +82,38 @@ public IAsyncOperationWithProgress<LanguageModelResponseResult, string>
);
}

public IAsyncOperationWithProgress<LanguageModelResponseResult, string>
GenerateResponseTextIntelligenceDescribeWithProgressAsync(string prompt)
{
IAsyncOperationWithProgress<LanguageModelResponseResult, string> response;

response = SessionTextRewrite.RewriteCustomAsync(prompt, "Make me sound like Yoda");

// Add completion handler to debug any errors
response.Completed = (asyncInfo, asyncStatus) =>
{
if (asyncStatus == AsyncStatus.Error)
{
Debug.WriteLine($"RewriteCustomAsync failed with error: {asyncInfo.ErrorCode?.Message}");
}
else if (asyncStatus == AsyncStatus.Completed)
{
var result = asyncInfo.GetResults();
Debug.WriteLine($"RewriteCustomAsync completed with status: {result.Status}");
if (result.Status == LanguageModelResponseStatus.Error)
{
Debug.WriteLine($"Model returned error.");
}
}
};

return new AsyncOperationWithProgressAdapter<LanguageModelResponseResult, string, LanguageModelResponseResult, string>(
response,
result => result /* LanguageModelResponseResult */,
progress => progress
);
}

public string
GenerateResponseTextIntelligenceTextToTableAsync(string prompt)
{
Expand Down
31 changes: 31 additions & 0 deletions Samples/WindowsAIFoundry/cs-winui/Pages/LanguageModelPage.xaml
Original file line number Diff line number Diff line change
Expand Up @@ -133,6 +133,37 @@
Margin="10"/>
</StackPanel>
</TabViewItem>
<!-- Describe Your Change Section -->
<TabViewItem Header="Describe Your Change"
IsClosable="False">
<StackPanel Orientation="Vertical"
HorizontalAlignment="Stretch"
Margin="20">
<TextBox Margin="10"
Header="Prompt:"
PlaceholderText="Enter your prompt here"
Text="{Binding TextIntelligencePrompt, Mode=TwoWay, UpdateSourceTrigger=PropertyChanged}"
IsEnabled="{Binding IsAvailable}"
AutomationProperties.Name="multi-line TextBox"
AcceptsReturn="True"
TextWrapping="Wrap"/>
<TextBox Margin="10"
Header="Language Model Result:"
Text="{Binding ResponseProgressTextIntelligence}"
IsReadOnly="True"
IsEnabled="{Binding IsAvailable}"
TextWrapping="Wrap"/>
<StackPanel Orientation="Horizontal"
Margin="10">
<Button Command="{Binding GenerateResponseWithTextIntelligenceDescribeSkills}"
CommandParameter="{Binding TextIntelligencePrompt}"
Margin="0,0,10,0">Generate Describe Your Change Response</Button>
<ProgressRing Visibility="{Binding GenerateResponseWithTextIntelligenceDescribeSkills.IsExecuting, Converter={StaticResource BoolToVisibilityConverter}}"/>
</StackPanel>
<controls:CodeBlockControl SourceFile="Examples/TextIntelligenceDescribe.md"
Margin="10"/>
</StackPanel>
</TabViewItem>
<!-- TextToTable Section -->

<TabViewItem Header="Text To Table"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ internal partial class LanguageModelViewModel : CopilotModelBase<LanguageModelMo

private readonly AsyncCommandWithProgress<string, LanguageModelResponseResult, string> _generateResponseWithTextIntelligenceSummarizeSkills;
private readonly AsyncCommandWithProgress<string, LanguageModelResponseResult, string> _generateResponseWithTextIntelligenceRewriteSkills;
private readonly AsyncCommandWithProgress<string, LanguageModelResponseResult, string> _generateResponseWithTextIntelligenceDescribeSkills;
private readonly AsyncCommand<string, string> _generateResponseWithTextIntelligenceTextToTableSkills;

private readonly StringBuilder _responseProgress = new();
Expand Down Expand Up @@ -90,6 +91,20 @@ public LanguageModelViewModel(LanguageModelModel languageModelSession)
_generateResponseWithTextIntelligenceRewriteSkills.ResultProgressHandler += OnResultProgressTextIntelligence;
_generateResponseWithTextIntelligenceRewriteSkills.ResultHandler += OnResultTextIntelligence;

// GenerateResponseWithTextIntelligenceDescribeSkills
_generateResponseWithTextIntelligenceDescribeSkills = new(
prompt =>
{
_responseProgressTextIntelligence.Clear();
DispatchPropertyChanged(nameof(ResponseProgressTextIntelligence));

return Session.GenerateResponseTextIntelligenceDescribeWithProgressAsync(prompt!);
},
(prompt) => IsAvailable && !string.IsNullOrEmpty(TextIntelligencePrompt));

_generateResponseWithTextIntelligenceDescribeSkills.ResultProgressHandler += OnResultProgressTextIntelligence;
_generateResponseWithTextIntelligenceDescribeSkills.ResultHandler += OnResultTextIntelligence;

// GenerateResponseWithTextIntelligenceTextToTableSkills
_generateResponseWithTextIntelligenceTextToTableSkills = new(
prompt =>
Expand Down Expand Up @@ -206,12 +221,14 @@ public SeverityLevel SelfHarmContentSevToBlockForResponse

public ICommand GenerateResponseWithTextIntelligenceSummarizeSkills => _generateResponseWithTextIntelligenceSummarizeSkills;
public ICommand GenerateResponseWithTextIntelligenceRewriteSkills => _generateResponseWithTextIntelligenceRewriteSkills;
public ICommand GenerateResponseWithTextIntelligenceDescribeSkills => _generateResponseWithTextIntelligenceDescribeSkills;
public ICommand GenerateResponseWithTextIntelligenceTextToTableSkills => _generateResponseWithTextIntelligenceTextToTableSkills;

protected override void OnIsAvailableChanged()
{
_generateResponseWithTextIntelligenceSummarizeSkills.FireCanExecuteChanged();
_generateResponseWithTextIntelligenceRewriteSkills.FireCanExecuteChanged();
_generateResponseWithTextIntelligenceDescribeSkills.FireCanExecuteChanged();
_generateResponseWithTextIntelligenceTextToTableSkills.FireCanExecuteChanged();
}

Expand Down
1 change: 1 addition & 0 deletions Samples/WindowsAIFoundry/cs-winui/global.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"sdk": {
// "version": "9.0.305",
"version": "8.0.100",
"allowPrerelease": true,
"rollForward": "latestFeature"
Expand Down
3 changes: 3 additions & 0 deletions Samples/nuget.config
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@
<!-- a local directory to allow testing nupkg files without pushing to a remote feed -->
<add key="localpackages" value="localpackages" />
<add key="nuget.org" value="https://api.nuget.org/v3/index.json" />
<!-- Uncomment to access internal nuget feed
<add key="WASDK Internal" value="https://pkgs.dev.azure.com/microsoft/ProjectReunion/_packaging/Project.Reunion.nuget.internal/nuget/v3/index.json" />
-->
</packageSources>

<packageSourceMapping>
Expand Down