import os
import re
import gradio as gr
from PIL import Image
from pprint import pprint
from qwen_agent.agents import Assistant
import sys
os.chdir(sys.path[0])

os.environ['TMPDIR'] = "/home/zhangxj/WorkFile/LCA-GPT/LCARAG/DataAnalysis/tmp"

# 填写Qwen的api-key
llm_cfg = {
    'model': 'qwen-1.5-72b',
    'model_server': 'dashscope',
    'api_key': "xxx",
}

system_instruction = '''你是一位专注在生命周期领域做数据分析的助手，在数据分析之后，
                        如果有可视化要求，请使用 `plt.show()` 显示图像,输出图像的路径,不需要保存。
                        最后，请对数据分析结果结合生命周期评价领域知识进行解释。'''

tools = ['code_interpreter']  # `code_interpreter` is a built-in tool for executing code.
messages = []  # This stores the chat history.

name = '中国电建集团成都电力金具有限公司产品'
files = ["/home/zhangxj/WorkFile/LCA-GPT/DataAnalysis/lciaData/"+name+".csv","/home/zhangxj/WorkFile/LCA-GPT/DataAnalysis/lciaData/报告模板.md"]

def getImage(response):
    '''
    获取图像路径
    '''
    pattern = r'workspace.*?\.png'
    path = None
    for res in response:
        content = str(res['content'])
        matches = re.findall(pattern, content)
        # print("*********",res['content'])
        if len(matches):
            path = matches[0]
    # print("###### path #####,", path)
    return path

# Convert bot response to string
res_str = ""

image_paths = []
while True:
    print("input>")
    inputs = input()
    if inputs == 'q':
        break
    image_path_str = ''
    if len(image_paths):
        image_path_str = ' '.join(image_paths)
        user_input = inputs+"多个图像路径如下，"+image_path_str
    else:
        user_input = inputs
    global responses
    response = []
    messages.append({'role': 'user', 'content': user_input})
    bot = Assistant(llm=llm_cfg,
                    system_message=system_instruction,
                    function_list=tools,
                    files=files)
    for response in bot.run(messages=messages):
        continue

    # pprint(response)
    messages.extend(response)

    image_path = getImage(response)
    if image_path:
        image_paths.append(image_path)
    
    tmp = ''
    for res in response:
        tmp += res['content']
    print(tmp)

for res in response:
    res_str += res['content']
try:
    with open("/home/zhangxj/WorkFile/LCA-GPT/DataAnalysis/Qwen1.5-72b"+name+".md", "w", encoding="utf-8") as f:
        f.write(res_str)
except IOError as e:
    print(f"An error occurred: {e}")

# print(res_str)
'''
英文，中英文都有结果；
报告标准化：完整；准确；模板；数据长了之后多轮对话。

请按照报告案例1作为模板，用你掌握的信息进行填充，并且将可视化得到的图像结果插入到报告中并加以分析，
以markdown格式输出填充数据信息之后的报告。
'''
