Add ui agent (#343)

* add uipath agent

* readme update
This commit is contained in:
alexandruilie7
2025-09-24 14:42:46 +03:00
committed by GitHub
parent 088e68798c
commit f59cf00cae
14 changed files with 2167 additions and 1 deletions

57
mm_agents/uipath/utils.py Normal file
View File

@@ -0,0 +1,57 @@
import json
import re
from json_minify import json_minify
from json_repair import repair_json
class ValidationException(Exception):
def __init__(self, message: str):
self.message = message
def parse_message_json(message: str) -> dict:
message = message.strip()
code_block_pattern = r"```json\s*([\s\S]+?)```"
code_block_match = re.search(code_block_pattern, message, re.DOTALL)
if code_block_match:
json_str = code_block_match.group(1).strip()
else:
bracket_pattern = r"\{.*\}"
bracket_match = re.search(bracket_pattern, message, re.DOTALL)
if not bracket_match:
raise ValidationException("Response does not have correct json format")
json_str = bracket_match.group(0).strip()
try:
json_str = json_minify(json_str)
data = json.loads(json_str)
except json.JSONDecodeError:
try:
json_str = repair_json(json_str)
data = json.loads(json_str)
except json.JSONDecodeError:
raise ValidationException("Response does not have correct json format")
return data
class GroundingOutput:
def __init__(
self,
description: str,
position: tuple[int, int],
end_position: tuple[int, int] = None,
):
self.description = description
self.position = position
self.end_position = end_position
class GroundingRequest:
def __init__(
self, description: str, image_base64: str, action_type: str | None = None
):
self.description = description
self.image_base64 = image_base64
self.action_type = action_type