2023-12-12 00:03:36 +08:00
|
|
|
|
import abc
|
|
|
|
|
import sqlite3
|
|
|
|
|
from typing import Any
|
|
|
|
|
import ast
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
from langchain.tools import BaseTool
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class MyTimer(BaseTool, abc.ABC):
|
|
|
|
|
name = "MyTimer"
|
2023-12-18 16:52:53 +08:00
|
|
|
|
description = "用于设置日程,使用的时候需要接受3个参数,第1个参数是时间,第2个参数是循环规则(如:'1000100'代表星期一和星期五循环,'0000000'代表不循环),第3个参数代表要执行的事项,如:('15:15', '0000001', '提醒主人叫咖啡')"
|
2023-12-12 00:03:36 +08:00
|
|
|
|
|
|
|
|
|
def __init__(self):
|
|
|
|
|
super().__init__()
|
|
|
|
|
|
|
|
|
|
async def _arun(self, *args: Any, **kwargs: Any) -> Any:
|
|
|
|
|
# 用例中没有用到 arun 不予具体实现
|
|
|
|
|
pass
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def _run(self, para) -> str:
|
|
|
|
|
para = ast.literal_eval(para)
|
|
|
|
|
conn = sqlite3.connect('timer.db')
|
|
|
|
|
cursor = conn.cursor()
|
|
|
|
|
cursor.execute("INSERT INTO timer (time, repeat_rule, content) VALUES (?, ?, ?)", (para[0], para[1], para[2]))
|
|
|
|
|
conn.commit()
|
|
|
|
|
conn.close()
|
2023-12-18 16:52:53 +08:00
|
|
|
|
return "日程设置成功"
|
2023-12-12 00:03:36 +08:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
calculator_tool = MyTimer()
|
|
|
|
|
result = calculator_tool.run("sqrt(2) + 3")
|
|
|
|
|
print(result)
|