File size: 3,206 Bytes
c48128e cac4e7b a5ab504 4d969ce 60b2a69 6d51c46 562af8d a768bed 9ea371a 6141f1b 9ea371a 6141f1b 0e9c24d 5bcc2da c48128e 9ea371a 409696f 722929d ed306c8 4d969ce ed306c8 cac4e7b 4d969ce 0636c57 4d969ce d8a9c24 9cdbe75 ed306c8 cac4e7b 4d969ce 722929d 6ee9937 4d969ce 722929d a768bed f99d688 ac5e022 a768bed d56f6b1 05c2b03 409696f b532f92 05c2b03 b1c069d 230a192 2194d18 230a192 2194d18 409696f c48128e 230a192 409696f 9ea371a d8f2386 230a192 e90039b 49eb139 cac4e7b 576e7cf |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
import base64, datetime, json, os
from autogen import ConversableAgent, AssistantAgent, register_function
from autogen.coding import LocalCommandLineCodeExecutor
from datetime import date
from typing_extensions import Annotated
###
def get_today() -> Annotated[str, "Get today's date"]:
return str(date.today())
###
def read_file(file_path: str) -> str:
with open(file_path, "r", encoding="utf-8") as file:
return file.read()
def read_image_file(image_file_path: str) -> str:
with open(image_file_path, "rb") as image_file:
image_data = image_file.read()
return base64.b64encode(image_data).decode("utf-8")
def generate_markdown_image(image_data: str) -> str:
return f""
def format_as_markdown(code: str) -> str:
markdown_code = '```\n'
markdown_code += code
markdown_code += '\n```'
return markdown_code
def get_latest_file(directory, file_extension):
latest_file = None
latest_date = datetime.datetime.min
for file in os.listdir(directory):
if file:
_, file_ext = os.path.splitext(file)
if file_ext == file_extension:
file_path = os.path.join(directory, file)
file_date = datetime.datetime.fromtimestamp(os.path.getmtime(file_path))
if file_date > latest_date:
latest_date = file_date
latest_file = file
return latest_file
def run_multi_agent(llm, task):
llm_config = {"model": llm}
executor = LocalCommandLineCodeExecutor(
timeout=60,
work_dir="coding",
)
code_executor_agent = ConversableAgent(
name="code_executor_agent",
llm_config=llm_config,
code_execution_config={"executor": executor},
human_input_mode="NEVER",
default_auto_reply="TERMINATE",
)
code_writer_agent = AssistantAgent(
name="code_writer_agent",
llm_config=llm_config,
system_message="You are a Sr. Python Programmer, an expert in writing Pylint-compliant code. "
"If needed, call get_today() to get today's date.",
code_execution_config=False,
human_input_mode="NEVER",
)
###
register_function(
get_today,
caller=code_executor_agent,
executor=code_writer_agent,
name="get_today",
description="Call this tool to get today's date.",
)
###
chat_result = code_executor_agent.initiate_chat(
code_writer_agent,
message=task,
max_turns=15
)
chat = ""
#first_message = True
for message in chat_result.chat_history:
#if not first_message:
chat += f"**{message['role'].replace('assistant', 'Code Executor').replace('user', 'Code Writer')}**\n{message['content']}\n\n"
#first_message = False
file_name_png = get_latest_file("coding", ".png")
image_data = read_image_file(f"/home/user/app/coding/{file_name_png}")
markdown_code_png = generate_markdown_image(image_data)
result = f"{markdown_code_png}\n\n{chat}"
print("===")
print(result)
print("===")
return result |