1 Star 0 Fork 0

O疯O / my_chatglm

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
tool_register.py 3.04 KB
一键复制 编辑 原始数据 按行查看 历史
wfhe 提交于 2024-01-16 16:54 . sql tool
from typing import Callable
import functools
import json
import traceback
import json
TOOLS = [
{
"name": "random_number_generator",
"description": "Generates a random number x, s.t. range[0] <= x < range[1]",
"parameters": {
"type": "object",
"properties": {
"seed": {"description": "The random seed used by the generator", "type": "integer"},
"range": {
"description": "The range of the generated numbers",
"type": "array",
"items": [{"type": "integer"}, {"type": "integer"}],
},
},
"required": ["seed", "range"],
},
},
{
"name": "get_weather",
"description": "Get the current weather for `city_name`",
"parameters": {
"type": "object",
"properties": {"city_name": {"description": "The name of the city to be queried", "type": "string"}},
"required": ["city_name"],
},
},
{
"name": "excute_sql",
"description": "执行sql语句,当前数据库的名称是`default_db`, 仪器表名称是:yqxx,以下是字段清单:name_ch: 仪器名称,prop_num: 资产编号",
"parameters": {
"type": "object",
"properties": {
"sql": {
"description": "需要执行的sql语句"
}
},
"required": ['sql']
}
}
]
def get_tool_desc() -> str:
return (
"Answer the following questions as best as you can. You have access to the following tools:\n"
+ json.dumps(TOOLS, indent=4)
)
# ----- begin function call -----
_FUNCTION_REGISTRY = {}
def register_function(func: Callable) -> Callable:
_FUNCTION_REGISTRY[func.__name__] = func
@functools.wraps(func)
def wrap(*args, **kwargs):
return func(*args, **kwargs)
return wrap
@register_function
def random_number_generator(seed: int, range: tuple[int, int]) -> int:
import random
return random.Random(seed).randint(*range)
@register_function
def get_weather(city_name: str) -> str:
import requests
key_selection = {
"current_condition": ["temp_C", "FeelsLikeC", "humidity", "weatherDesc", "observation_time"],
}
resp = requests.get(f"https://wttr.in/{city_name}?format=j1")
resp.raise_for_status()
resp = resp.json()
ret = {k: {_v: resp[k][0][_v] for _v in v} for k, v in key_selection.items()}
return json.dumps(ret)
def run_function(name: str, arguments: str) -> str:
def tool_call(**kwargs):
return kwargs
func = _FUNCTION_REGISTRY.get(name)
if func is None:
return f"Function `{name}` is not defined"
try:
kwargs = eval(arguments, dict(tool_call=tool_call))
except Exception:
return f"Invalid arguments {arguments}"
try:
return str(func(**kwargs))
except Exception:
return traceback.format_exc()
def get_tools() -> dict:
return _FUNCTION_REGISTRY
# ----- end function call -----
1
https://gitee.com/wfhe/my_chatglm.git
git@gitee.com:wfhe/my_chatglm.git
wfhe
my_chatglm
my_chatglm
master

搜索帮助