| import html |
| import logging |
| import re |
| import time |
|
|
| import markdown |
| import inspect |
| from camel.messages.system_messages import SystemMessage |
| from app import send_msg |
|
|
|
|
| def now(): |
| return time.strftime("%Y%m%d%H%M%S", time.localtime()) |
|
|
|
|
| def log_and_print_online(role, content=None): |
| if not content: |
| logging.info(role + "\n") |
| send_msg("System", role) |
| print(role + "\n") |
| else: |
| print(str(role) + ": " + str(content) + "\n") |
| logging.info(str(role) + ": " + str(content) + "\n") |
| if isinstance(content, SystemMessage): |
| records_kv = [] |
| content.meta_dict["content"] = content.content |
| for key in content.meta_dict: |
| value = content.meta_dict[key] |
| value = str(value) |
| value = html.unescape(value) |
| value = markdown.markdown(value) |
| value = re.sub(r'<[^>]*>', '', value) |
| value = value.replace("\n", " ") |
| records_kv.append([key, value]) |
| content = "**[SystemMessage**]\n\n" + convert_to_markdown_table(records_kv) |
| else: |
| role = str(role) |
| content = str(content) |
| send_msg(role, content) |
|
|
|
|
| def convert_to_markdown_table(records_kv): |
| |
| header = "| Parameter | Value |\n| --- | --- |" |
|
|
| |
| rows = [f"| **{key}** | {value} |" for (key, value) in records_kv] |
|
|
| |
| markdown_table = header + "\n" + '\n'.join(rows) |
|
|
| return markdown_table |
|
|
|
|
| def log_arguments(func): |
| def wrapper(*args, **kwargs): |
| sig = inspect.signature(func) |
| params = sig.parameters |
|
|
| all_args = {} |
| all_args.update({name: value for name, value in zip(params.keys(), args)}) |
| all_args.update(kwargs) |
|
|
| records_kv = [] |
| for name, value in all_args.items(): |
| if name in ["self", "chat_env", "task_type"]: |
| continue |
| value = str(value) |
| value = html.unescape(value) |
| value = markdown.markdown(value) |
| value = re.sub(r'<[^>]*>', '', value) |
| value = value.replace("\n", " ") |
| records_kv.append([name, value]) |
| records = f"**[{func.__name__}]**\n\n" + convert_to_markdown_table(records_kv) |
| log_and_print_online("System", records) |
|
|
| return func(*args, **kwargs) |
|
|
| return wrapper |
|
|