improve webdrive action response.

This commit is contained in:
Haiping Chen 2024-02-08 15:39:56 -06:00
parent 6cb4aa27c9
commit 0473923fed
11 changed files with 39 additions and 31 deletions

View file

@ -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;
}

View file

@ -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"
}

View file

@ -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[]
{

View file

@ -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

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);

View file

@ -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);