This commit is contained in:
2025-03-02 16:12:24 +08:00
parent 23f8c9a6a9
commit a5fe899eb5
10 changed files with 116 additions and 108 deletions

3
.gitignore vendored
View File

@@ -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__/

View File

@@ -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 |
| ----------- | ------------- | ------------------------------------ |
| <team_name> | <member_name> | <status: brief sub-task description> |
```mermaid
graph TD
User[User]
subgraph <team_name>
A1[<member_name>]
end
style xxx # 推荐多样的风格
...
User --> A1
...
```
每次回答时,你需要清晰明确的指出已经完成的子任务下一步子任务,使用如下格式:
**已完成子任务:**
1. <team> : <subtask>
**Next sub-task:**
n. <team> : <subtask>
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".

View File

@@ -0,0 +1 @@
{"splits": ["train"]}

View File

@@ -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": ""
}

View File

@@ -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"
}

View File

@@ -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": ""
}

View File

@@ -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
}

View File

@@ -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!"