File size: 3,104 Bytes
840f3e9
cac4e7b
4d969ce
 
 
6141f1b
 
 
 
 
 
 
 
0e9c24d
 
 
 
9602a81
 
 
 
 
 
0e9c24d
 
 
 
 
 
 
 
 
 
adc1afd
0e9c24d
 
 
 
1923ab6
722929d
ed306c8
4d969ce
 
 
ed306c8
cac4e7b
4d969ce
 
 
 
d8a9c24
cac4e7b
ed306c8
cac4e7b
 
 
4d969ce
 
722929d
4d969ce
722929d
 
d56f6b1
cac4e7b
7ddfa83
05c2b03
 
 
 
 
b1c069d
6141f1b
f0b8d9b
4e847ac
b819993
2897070
d8f2386
adc1afd
f017154
d8f2386
 
 
 
9602a81
 
 
adc1afd
 
 
d8f2386
adc1afd
7e3ef74
f0b8d9b
9602a81
adc1afd
7e3ef74
88132c1
9049e22
9602a81
0e9c24d
cac4e7b
9602a81
cac4e7b
 
 
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
import base64, os

from autogen import ConversableAgent, AssistantAgent
from autogen.coding import LocalCommandLineCodeExecutor

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_code(image_data: str) -> str:
    return f"![Image](data:image/png;base64,{image_data})"

def read_python_file(file_path: str) -> str:
    with open(file_path, 'r', encoding='utf-8') as file:
        return file.read()

def read_py_file(folder_path: str, extension: str) -> str:
    for filename in os.listdir(folder_path):
        if filename.endswith(extension):
            with open(os.path.join(folder_path, filename), "r", encoding="utf-8") as file:
                return file.read()

def format_as_markdown(code: str) -> str:
    """
    Formats a string of Python code as Markdown.

    Args:
        code (str): The Python code to format.

    Returns:
        str: The formatted Markdown string.
    """
    markdown_code = '```\n'
    markdown_code += code
    markdown_code += '\n```'
    return markdown_code

def run_multi_agent(llm, message):
    llm_config = {"model": llm}
    
    executor = LocalCommandLineCodeExecutor(
        timeout=60,
        work_dir="coding",
    )

    code_executor_agent = ConversableAgent(
        name="code_executor_agent",
        llm_config=False,
        code_execution_config={"executor": executor},
        human_input_mode="NEVER",
        default_auto_reply="Please continue. If everything is done, reply 'TERMINATE'.",
    )

    print("### code_executor_agent.system_message = " + code_executor_agent.system_message)

    code_writer_agent = AssistantAgent(
        name="code_writer_agent",
        llm_config=llm_config,
        code_execution_config=False,
        human_input_mode="NEVER",
    )
    
    print("### code_writer_agent.system_message = " + code_writer_agent.system_message)
    
    chat_result = code_executor_agent.initiate_chat(
        code_writer_agent,
        message=message,
        max_turns=10
    )

    image_data = read_image_file("/home/user/app/coding/ytd_stock_gains.png")
    #markdown_code = generate_markdown_code(image_data)

    #print("### markdown_code = " + markdown_code)

    current_folder = os.getcwd()
    #print(current_folder)
    files_in_folder = os.listdir("coding")

    print(f"Files in {current_folder}:")
    for file in files_in_folder:
        print(file)

    file_name_py = read_py_file("coding", ".py")
    file_name_sh = read_py_file("coding", ".sh")

    print(file_name_py)
    print(file_name_sh)
    
    file_path_py = "coding/" + file_name_py
    code = read_python_file(file_path_py)
    markdown_code = format_as_markdown(code)

    file_path_sh = "coding/" + file_name_sh
    code = read_python_file(file_path_sh)
    markdown_code += "<br />" + format_as_markdown(code)
    
    print("### markdown_code = " + markdown_code)
    
    print("###")
    #print(chat_result)
    print("###")
    
    return markdown_code