57
mm_agents/uipath/utils.py
Normal file
57
mm_agents/uipath/utils.py
Normal 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
|
||||
Reference in New Issue
Block a user