diff --git a/.gitignore b/.gitignore index 6e42dd2..391fad9 100755 --- a/.gitignore +++ b/.gitignore @@ -1,8 +1,7 @@ # ---> Python .gitignore -backend/evaluate/eval_rag_result/* +backend/evaluate/eval_rag_result backend/psk-graphrag -backend/evaluate/eval_rag_dataset backend/history/* # Byte-compiled / optimized / DLL files __pycache__/ diff --git a/backend/agent_config/planning.yaml b/backend/agent_config/planning.yaml deleted file mode 100644 index bea568a..0000000 --- a/backend/agent_config/planning.yaml +++ /dev/null @@ -1,57 +0,0 @@ -PlanningAgent: > - You are a planning agent. - Your job is to break down complex Materials science research tasks into smaller, manageable subtasks. - Assign these subtasks to the appropriate sub-teams; not all sub-teams are required to participate in every task. - Your sub-teams are: - 1. User: A human agent to whom you transfer information whenever you need to confirm your execution steps to a human. - 2. Scientist: A professional team of material scientists who are mainly responsible for consulting on material synthesis, structure, application and properties. - - The scientist team has the following members: - 2.1 Synthesis Scientist: who is good at giving perfect and correct synthesis solutions. - 2.2 Structure Scientist: focusing on agents of structural topics in materials science. - 2.3 Property Scientist: focuses on physical and chemistry property topics in materials science. - 2.4 Application Scientist: Focus on practical applications of materials, such as devices, chips, etc. - 3. Engineer: A team of professional engineers who are responsible for writing code, visualizing experimental schemes, converting experimental schemes to JSON, and more. - - The engineer team has the following members: - 3.1 Structural engineer: A professional structural engineer who focus on converting natural language synthesis schemes to JSON or XML formated scheme, and then upload this JSON to S3 Storage. - 3.2 Software engineer: A professional software engineers will coding with Python. - 3.3 Code reviewer: A professional code reviewer will review the code written by software engineers and execute it. - 3.4 Scheme Plotter: An agent responsible for converting a expriment scheme into a Mermaid flowchart. - 4. Executor: A robotic platform is responsible for performing automated synthesis experiments, automated characterization experiments, and collecting experimental datas. - - The Executor team has the following members: - 4.1 MobileRobot_Agent: This agent controls the mobile robot by calling the funciton sendScheme2MobileRobot to place the experimental container into the robot workstation. This agent called before RobotWorkstation_Agent. - 4.2 RobotWorkstation_Agent: This agent is called by the mobile robot agent, do not plan it alone. - 4.3 DataCollector_Agent: This agent collects experimental data and experimental logs from the characterization device in the robot platform and stores them. - 5. Analyst: A team of data analysts who are responsible for analyzing and visualizing experimental data and logs. - - The Data Analysis team has the following members: - 5.1 Expriment_Analyst: The agent of data analysts who are responsible for analyzing experimental data and logs. - 5.2 Expriment_Optimizer: The agent optimizes the experimental scheme by means of component regulation and so on to make the experimental result close to the desired goal of the user. - 5.3 Data_Visulizer: The agent of data visulizers who are responsible for visualizing experimental data and logs. - - You only plan and delegate tasks - you do not execute them yourself. - - 回答时你需要初始化/更新如下任务分配表和Mermaid流程图,并按顺序执行,使用如下格式并利用: - | Team_name | Member_name | sub-task | - | ----------- | ------------- | ------------------------------------ | - | | | | - - ```mermaid - graph TD - User[User] - subgraph - A1[] - end - style xxx # 推荐多样的风格 - ... - User --> A1 - ... - ``` - - 每次回答时,你需要清晰明确的指出已经完成的子任务下一步子任务,使用如下格式: - **已完成子任务:** - 1. : - **Next sub-task:** - n. : - - You can end with "HUMAN" if you need to, which means you need human approval or other advice or instructions; - After plan and delegate tasks are complete, end with "START"; - Determine if all sub-teams have completed their tasks, and if so, summarize the findings and end with "TERMINATE". \ No newline at end of file diff --git a/backend/evaluate/eval_rag_dataset/data-00000-of-00001.arrow b/backend/evaluate/eval_rag_dataset/data-00000-of-00001.arrow new file mode 100644 index 0000000..52d1088 Binary files /dev/null and b/backend/evaluate/eval_rag_dataset/data-00000-of-00001.arrow differ diff --git a/backend/evaluate/eval_rag_dataset/dataset_dict.json b/backend/evaluate/eval_rag_dataset/dataset_dict.json new file mode 100644 index 0000000..40d5c04 --- /dev/null +++ b/backend/evaluate/eval_rag_dataset/dataset_dict.json @@ -0,0 +1 @@ +{"splits": ["train"]} \ No newline at end of file diff --git a/backend/evaluate/eval_rag_dataset/dataset_info.json b/backend/evaluate/eval_rag_dataset/dataset_info.json new file mode 100644 index 0000000..e24793d --- /dev/null +++ b/backend/evaluate/eval_rag_dataset/dataset_info.json @@ -0,0 +1,58 @@ +{ + "citation": "", + "description": "", + "features": { + "context": { + "dtype": "string", + "_type": "Value" + }, + "question": { + "dtype": "string", + "_type": "Value" + }, + "answer": { + "dtype": "string", + "_type": "Value" + }, + "topic": { + "dtype": "string", + "_type": "Value" + }, + "source_doc": { + "dataset_id": { + "dtype": "string", + "_type": "Value" + }, + "document_id": { + "dtype": "string", + "_type": "Value" + } + }, + "groundedness_score": { + "dtype": "float64", + "_type": "Value" + }, + "groundedness_eval": { + "dtype": "string", + "_type": "Value" + }, + "relevance_score": { + "dtype": "float64", + "_type": "Value" + }, + "relevance_eval": { + "dtype": "string", + "_type": "Value" + }, + "standalone_score": { + "dtype": "float64", + "_type": "Value" + }, + "standalone_eval": { + "dtype": "string", + "_type": "Value" + } + }, + "homepage": "", + "license": "" +} \ No newline at end of file diff --git a/backend/evaluate/eval_rag_dataset/state.json b/backend/evaluate/eval_rag_dataset/state.json new file mode 100644 index 0000000..6b3bfa0 --- /dev/null +++ b/backend/evaluate/eval_rag_dataset/state.json @@ -0,0 +1,13 @@ +{ + "_data_files": [ + { + "filename": "data-00000-of-00001.arrow" + } + ], + "_fingerprint": "0748dad1d6b34503", + "_format_columns": null, + "_format_kwargs": {}, + "_format_type": null, + "_output_all_columns": false, + "_split": "train" +} \ No newline at end of file diff --git a/backend/evaluate/eval_rag_dataset/train/data-00000-of-00001.arrow b/backend/evaluate/eval_rag_dataset/train/data-00000-of-00001.arrow new file mode 100644 index 0000000..a54fa40 Binary files /dev/null and b/backend/evaluate/eval_rag_dataset/train/data-00000-of-00001.arrow differ diff --git a/backend/evaluate/eval_rag_dataset/train/dataset_info.json b/backend/evaluate/eval_rag_dataset/train/dataset_info.json new file mode 100644 index 0000000..a30c116 --- /dev/null +++ b/backend/evaluate/eval_rag_dataset/train/dataset_info.json @@ -0,0 +1,30 @@ +{ + "citation": "", + "description": "", + "features": { + "context": { + "dtype": "string", + "_type": "Value" + }, + "question": { + "dtype": "string", + "_type": "Value" + }, + "answer": { + "dtype": "string", + "_type": "Value" + }, + "source_doc": { + "dataset_id": { + "dtype": "string", + "_type": "Value" + }, + "document_id": { + "dtype": "string", + "_type": "Value" + } + } + }, + "homepage": "", + "license": "" +} \ No newline at end of file diff --git a/backend/evaluate/eval_rag_dataset/train/state.json b/backend/evaluate/eval_rag_dataset/train/state.json new file mode 100644 index 0000000..60327fc --- /dev/null +++ b/backend/evaluate/eval_rag_dataset/train/state.json @@ -0,0 +1,13 @@ +{ + "_data_files": [ + { + "filename": "data-00000-of-00001.arrow" + } + ], + "_fingerprint": "bcd109aa52b21899", + "_format_columns": null, + "_format_kwargs": {}, + "_format_type": null, + "_output_all_columns": false, + "_split": null +} \ No newline at end of file diff --git a/backend/tools.py b/backend/tools.py index 40007bf..557bb23 100755 --- a/backend/tools.py +++ b/backend/tools.py @@ -372,55 +372,6 @@ def upload_to_s3(json_data: str): # print(f"JSON解析错误: {e}") return f"Error: {str(e)}, Request human/user intervention." -def get_latest_exp_log(): - def get_uv_latest_file(): - import os - import glob - # UV数据缓存文件夹路径 (请将此路径修改为实际的文件夹路径) - current_folder = os.path.dirname(os.path.abspath(__file__)) - folder_path = os.path.join(current_folder, 'data/UV/') - - # 查找文件夹中的所有 .wls 文件 - uv_files = sorted(glob.glob(os.path.join(folder_path, '*.[Tt][Xx][Tt]'))) - - if not uv_files: - res = f"ERROR: 缓存文件夹{current_folder}中没有找到任何UV文件" - return res - - # 找到最新修改的文件 - latest_file = uv_files[-1] - res = f"找到最新的UV数据文件: {latest_file}" - - return res - - def get_pl_latest_file(): - import os - import glob - - current_folder = os.path.dirname(os.path.abspath(__file__)) - folder_path = os.path.join(current_folder, 'data/PL/') - - # 查找文件夹中的所有 .txt 或 .TXT 文件 - pl_files = sorted(glob.glob(os.path.join(folder_path, '*.[Tt][Xx][Tt]'))) - - if not pl_files: - res = f"ERROR: 缓存文件夹{current_folder}中没有找到任何PL文件" - return res - - # 找到最新修改的文件 - latest_file = pl_files[-1] - res = f"找到最新的PL数据文件: {latest_file}" - return res - - pl_latest = get_pl_latest_file() - uv_latest = get_uv_latest_file() - - return pl_latest + "\n" + uv_latest - - -def read_data(): - get_latest_exp_log() - def default_func(): return "Approved. Proceed as planned!"