一、背景痛点
二、解决方案
自动读取 eLabFTW 实验记录 智能解析「试剂:名称@用量」格式 支持 g、mg、kg、mL、L、μL 等多种单位自动转换 生成清晰的汇总报告和明细记录
三、核心代码实现
Python
#!/usr/bin/env python3import re, requestsfrom collections import defaultdictAPI_KEY = "your-key"BASE_URL = "https://110.40.213.237:1234/api/v2"def parse_usage(text):pattern = r'(?:添加试剂[::]?\\s*)?([^::@\\s]+)@\\s*(\\d+\\.?\\d*)\\s*(g|mg|kg|mL|L|μL)?'return [{'name': m[0].strip(), 'quantity': float(m[1]), 'unit': m[2] or 'g'}for m in re.findall(pattern, text)]def to_base(qty, unit):conversions = {'mg': 0.001, 'kg': 1000, 'mL': 1, 'L': 1000, 'μL': 0.001}return qty * conversions.get(unit, 1)def main():exps = requests.get(f"{BASE_URL}/experiments?limit=100",headers={"Authorization": API_KEY}, verify=False).json()all_usage = []for exp in exps:all_usage.extend(parse_usage(exp.get('body', '') or ''))summary = defaultdict(lambda: {'total': 0, 'records': []})for u in all_usage:summary[u['name']]['total'] += to_base(u['quantity'], u['unit'])summary[u['name']]['records'].append(u)print("# 试剂用量汇总\n")for name, info in sorted(summary.items()):print(f"- {name}: {info['total']:.2f}g ({len(info['records'])}条记录)")if __name__ == "__main__":main()
四、使用方法
实验记录格式:
Python
| 添加试剂:氢氧化钠@0.5g | |
| 添加试剂:乙醇@10mL |
触发命令:汇总试剂用量 / 生成用量报告 / 统计实验试剂使用情况
五、测试结果
📊 试剂用量汇总报告
统计周期:2023-05-19 ~ 2025-11-28
氯化钠 60g(2条) 二氧化碳 55g(2条) 超纯水 100g(1条) 次氯酸钠 4.4g(1条) 对苯二甲酸二甲酯 5.5g(1条)
明细记录
日期 实验 试剂 用量
2025-11-28 化学实验2 氯化钠 50.0g
2025-11-28 化学实验2 二氧化碳 50.0g
2025-11-28 化学实验1 氯化钠 10.0g
2025-11-28 化学实验1 二氧化碳 5.0g
2025-11-28 化学实验1 超纯水 100.0g
2023-05-19 糖的性质 次氯酸钠 4.4g
2023-05-19 糖的性质 对苯二甲酸二甲酯 5.5g
⚠️ 注意:目前 eLabFTW 中只有 10 个实验,最新是 2025-11-28 的。没有找到 氢氧化钠@0.5g 的记录,可能该实验还未创建或在其他系统中。
Skill 已就绪,随时可以汇总!
六、未来展望
- 库存自动扣减
- 阈值预警
- 定期自动汇总
附录:详细聊天记录(2026-04-18 19:15 ~ 20:00)
【19:15】用户:回忆你elabftw试剂入库skill【19:15】助手:整理了两个核心Skill:reagent-inventory(拍照/发票入库)和reagent-excel-import(Excel批量入库),包含关键配置和重要红线。 【19:17】用户:能否根据elabftw试验,自动登记试剂使用量到相应item 【19:17】助手:询问需求细节:实验如何记录用量、期望的自动流程、消耗量计算方式。 【19:21】用户:试剂:氢氧化钠@0.5g;希望定期汇总,且生成一个新的skill 【19:21】助手:确认需求,创建新Skill reagent-usage-report,支持手动触发汇总、解析"试剂:氢氧化钠@0.5g"格式。 【19:23】用户:先不考虑扣减容器数量,先生成汇总报告。api有读写实验权限,手动触发开始汇总,格式就是这个"试剂:氢氧化钠@0.5g" 【19:23】助手:明确需求,创建Skill并测试,成功解析出7条用量记录。 【19:29】用户:测试一下,所有实验 【19:29】助手:测试成功,发现10个实验、5种试剂,总用量:氯化钠60g、二氧化碳55g、超纯水100g等。 【19:34】用户:将今天elabftw试剂消耗统计的skill生成完整讨论记录以及细节发布微信公众号 【19:39】用户:要添加具体的代码,要添加具体的代码。 【19:39】助手:补充完整代码示例(正则解析、单位转换、API调用、汇总报告等),重新发布文章。 【19:49】用户:添加从晚上7点到发布这篇文章之前的详细的聊天记录,作为附录,放在那个发表的文章最后。 【19:49】助手:获取聊天记录,整理成附录格式,更新文章。
夜雨聆风