commit
b86bf024a3
|
|
@ -1,9 +1,9 @@
|
|||
<Project>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<LangVersion>10.0</LangVersion>
|
||||
<BotSharpVersion>0.22.0</BotSharpVersion>
|
||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
|
||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<LangVersion>10.0</LangVersion>
|
||||
<BotSharpVersion>0.22.0</BotSharpVersion>
|
||||
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
|
||||
<GenerateDocumentationFile>false</GenerateDocumentationFile>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
|
|
@ -30,24 +30,22 @@ public class SequentialPlanner : IPlaner
|
|||
if (decomposation.TotalRemainingSteps > 0 && _lastInst != null)
|
||||
{
|
||||
_lastInst.Response = decomposation.Description;
|
||||
_lastInst.Reason = $"{decomposation.TotalRemainingSteps} left.";
|
||||
dialogs.Add(new RoleDialogModel(AgentRole.User, decomposation.Description)
|
||||
{
|
||||
CurrentAgentId = router.Id,
|
||||
MessageId = messageId
|
||||
});
|
||||
_lastInst.Reason = $"Having {decomposation.TotalRemainingSteps} steps left.";
|
||||
return _lastInst;
|
||||
}
|
||||
else if (decomposation.TotalRemainingSteps == 0 || decomposation.ShouldStop)
|
||||
{
|
||||
// Tell router all steps are done
|
||||
dialogs.Add(new RoleDialogModel(AgentRole.Assistant, decomposation.StopReason)
|
||||
if (!string.IsNullOrEmpty(decomposation.StopReason))
|
||||
{
|
||||
CurrentAgentId = router.Id,
|
||||
MessageId = messageId
|
||||
});
|
||||
router.TemplateDict["conversation"] = router.TemplateDict["conversation"].ToString().TrimEnd() +
|
||||
$"\r\n{router.Name}: {decomposation.StopReason}";
|
||||
// Tell router all steps are done
|
||||
dialogs.Add(new RoleDialogModel(AgentRole.Assistant, decomposation.StopReason)
|
||||
{
|
||||
CurrentAgentId = router.Id,
|
||||
MessageId = messageId
|
||||
});
|
||||
router.TemplateDict["conversation"] = router.TemplateDict["conversation"].ToString().TrimEnd() +
|
||||
$"\r\n{router.Name}: {decomposation.StopReason}";
|
||||
}
|
||||
}
|
||||
|
||||
var next = GetNextStepPrompt(router);
|
||||
|
|
@ -177,7 +175,6 @@ public class SequentialPlanner : IPlaner
|
|||
}, dialogs);
|
||||
|
||||
text = response.Content;
|
||||
Console.WriteLine(text, Color.OrangeRed);
|
||||
inst = response.Content.JsonContent<DecomposedStep>();
|
||||
break;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -6,7 +6,7 @@ Tell me what is the first remaining step from user steps that have not been comp
|
|||
Output in JSON
|
||||
{
|
||||
"description": "step detail with arguments",
|
||||
"total_remaining_steps": -1,
|
||||
"total_remaining_steps": 0,
|
||||
"should_stop": false,
|
||||
"stop_reason": "the reason why it should total remaining steps is zero"
|
||||
"stop_reason": "the reason why it should stop"
|
||||
}
|
||||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>$(TargetFramework)</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>$(LangVersion)</LangVersion>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>$(TargetFramework)</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>$(LangVersion)</LangVersion>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>$(TargetFramework)</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<LangVersion>$(LangVersion)</LangVersion>
|
||||
<VersionPrefix>$(BotSharpVersion)</VersionPrefix>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>$(TargetFramework)</TargetFramework>
|
||||
<LangVersion>$(LangVersion)</LangVersion>
|
||||
<VersionPrefix>$(BotSharpVersion)</VersionPrefix>
|
||||
<GeneratePackageOnBuild>$(GeneratePackageOnBuild)</GeneratePackageOnBuild>
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ public class PlaywrightInstance : IDisposable
|
|||
string tempFolderPath = $"{Path.GetTempPath()}\\playwright\\{Guid.NewGuid()}";
|
||||
_context = await _playwright.Chromium.LaunchPersistentContextAsync(tempFolderPath, new BrowserTypeLaunchPersistentContextOptions
|
||||
{
|
||||
Headless = true,
|
||||
Headless = false,
|
||||
Channel = "chrome",
|
||||
IgnoreDefaultArgs = new[]
|
||||
{
|
||||
|
|
|
|||
|
|
@ -27,6 +27,12 @@ public partial class PlaywrightWebDriver
|
|||
count = await elements.CountAsync();
|
||||
}
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
elements = _instance.Page.GetByText(actionParams.Context.ElementName);
|
||||
count = await elements.CountAsync();
|
||||
}
|
||||
|
||||
if (count == 0)
|
||||
{
|
||||
// Infer element if not found
|
||||
|
|
|
|||
|
|
@ -48,6 +48,12 @@ public partial class PlaywrightWebDriver
|
|||
else if (count > 1)
|
||||
{
|
||||
_logger.LogWarning($"Multiple elements are found by keyword {actionParams.Context.ElementText}");
|
||||
var all = await elements.AllAsync();
|
||||
foreach (var element in all)
|
||||
{
|
||||
var content = await element.TextContentAsync();
|
||||
_logger.LogWarning(content);
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
|
|
|
|||
|
|
@ -22,9 +22,10 @@ public class ChangeCheckboxFn : IFunctionCallback
|
|||
var agent = await agentService.LoadAgent(message.CurrentAgentId);
|
||||
var result = await _browser.ChangeCheckbox(new BrowserActionParams(agent, args, message.MessageId));
|
||||
|
||||
var content = $"{(args.UpdateValue == "check" ? "Check" : "Uncheck")} checkbox of '{args.ElementText}'";
|
||||
message.Content = result ?
|
||||
$"{(args.UpdateValue == "check" ? "Checked" : "Unchecked")} checkbox of '{args.ElementText}' successfully" :
|
||||
"Failed";
|
||||
$"{content} successfully" :
|
||||
$"{content} failed";
|
||||
|
||||
var webDriverService = _services.GetRequiredService<WebDriverService>();
|
||||
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
|
||||
|
|
|
|||
|
|
@ -22,9 +22,10 @@ public class ChangeListValueFn : IFunctionCallback
|
|||
var agent = await agentService.LoadAgent(message.CurrentAgentId);
|
||||
var result = await _browser.ChangeListValue(new BrowserActionParams(agent, args, message.MessageId));
|
||||
|
||||
var content = $"Change value to '{args.UpdateValue}' for {args.ElementName}";
|
||||
message.Content = result ?
|
||||
$"Changed value to '{args.UpdateValue}' for {args.ElementName} successfully" :
|
||||
"Failed";
|
||||
$"{content} successfully" :
|
||||
$"{content} failed";
|
||||
|
||||
var webDriverService = _services.GetRequiredService<WebDriverService>();
|
||||
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
|
||||
|
|
|
|||
|
|
@ -22,9 +22,10 @@ public class CheckRadioButtonFn : IFunctionCallback
|
|||
var agent = await agentService.LoadAgent(message.CurrentAgentId);
|
||||
var result = await _browser.CheckRadioButton(new BrowserActionParams(agent, args, message.MessageId));
|
||||
|
||||
message.Content = result ?
|
||||
$"Checked value of '{args.UpdateValue}' for radio button '{args.ElementName}' successfully" :
|
||||
"Failed";
|
||||
var content = $"Check value of '{args.UpdateValue}' for radio button '{args.ElementName}'";
|
||||
message.Content = result ?
|
||||
$"{content} successfully" :
|
||||
$"{content} failed";
|
||||
|
||||
var webDriverService = _services.GetRequiredService<WebDriverService>();
|
||||
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
|
||||
|
|
|
|||
|
|
@ -22,9 +22,10 @@ public class ClickButtonFn : IFunctionCallback
|
|||
var agent = await agentService.LoadAgent(message.CurrentAgentId);
|
||||
var result = await _browser.ClickButton(new BrowserActionParams(agent, args, message.MessageId));
|
||||
|
||||
var content = $"Click button of '{args.ElementName}'";
|
||||
message.Content = result ?
|
||||
$"Clicked button of '{args.ElementName}' successfully" :
|
||||
"Failed";
|
||||
$"{content} successfully" :
|
||||
$"{content} failed";
|
||||
|
||||
var webDriverService = _services.GetRequiredService<WebDriverService>();
|
||||
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
|
||||
|
|
|
|||
|
|
@ -22,9 +22,10 @@ public class ClickElementFn : IFunctionCallback
|
|||
var agent = await agentService.LoadAgent(message.CurrentAgentId);
|
||||
var result = await _browser.ClickElement(new BrowserActionParams(agent, args, message.MessageId));
|
||||
|
||||
var content = $"Click element {args.MatchRule} text '{args.ElementText}'";
|
||||
message.Content = result ?
|
||||
$"Clicked element {args.MatchRule} text '{args.ElementText}' successfully" :
|
||||
"Failed";
|
||||
$"{content} successfully" :
|
||||
$"{content} failed";
|
||||
|
||||
var webDriverService = _services.GetRequiredService<WebDriverService>();
|
||||
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ public class InputUserPasswordFn : IFunctionCallback
|
|||
var agent = await agentService.LoadAgent(message.CurrentAgentId);
|
||||
var result = await _browser.InputUserPassword(new BrowserActionParams(agent, args, message.MessageId));
|
||||
|
||||
message.Content = result ? "Input password successfully" : "Failed";
|
||||
message.Content = result ? "Input password successfully" : "Input password failed";
|
||||
|
||||
var webDriverService = _services.GetRequiredService<WebDriverService>();
|
||||
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
|
||||
|
|
|
|||
|
|
@ -29,8 +29,8 @@ public class InputUserTextFn : IFunctionCallback
|
|||
}
|
||||
|
||||
message.Content = result ?
|
||||
content + " successfully" :
|
||||
"Failed";
|
||||
content + " successfully" :
|
||||
content + " failed";
|
||||
|
||||
var webDriverService = _services.GetRequiredService<WebDriverService>();
|
||||
var path = webDriverService.GetScreenshotFilePath(message.MessageId);
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk.Web">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>$(TargetFramework)</TargetFramework>
|
||||
<Nullable>enable</Nullable>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<AspNetCoreHostingModel>OutOfProcess</AspNetCoreHostingModel>
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>$(TargetFramework)</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
|
|
|
|||
|
|
@ -1,7 +1,7 @@
|
|||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<TargetFramework>net6.0</TargetFramework>
|
||||
<TargetFramework>$(TargetFramework)</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue