| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168 |
- '''
- 工具库模块,提供工具库中的工具调用、保存新的待接入工具的信息
- 分为两个函数:
- 1. 调用工具库中的工具
- curl --location 'http://47.84.182.56:8001/tools/call/wechat_search_article' \
- --header 'Content-Type: application/json' \
- --data '{
- "keyword": "英雄联盟"
- }'
- 其中的data和wechat_search_article是函数的入参,把工具名替换到wechat_search_article,把参数字典替换到data
- 2. 保存新的待接入工具的信息
- 入参为工具信息,是一个工具的文档字符串
- 目前默认将这个文档字符串保存到一个文件中,文件名默认是工具的名称
- '''
- import requests
- import os
- import json
- TOOL_SERVER_URL = "http://47.84.182.56:8001/tools/call"
- def call_tool(tool_name: str, arguments: dict):
- """
- 调用工具库中的工具
- :param tool_name: 工具名称
- :param arguments: 工具参数字典
- :return: 工具调用结果
- """
- url = f"{TOOL_SERVER_URL}/{tool_name}"
- headers = {
- 'Content-Type': 'application/json'
- }
- try:
- response = requests.post(url, headers=headers, json=arguments)
- response.raise_for_status()
- return response.json()
- except requests.RequestException as e:
- # 在实际生产中可能需要更复杂的错误处理或日志记录
- return {"error": f"Failed to call tool {tool_name}: {str(e)}"}
- def save_tool_info(tool_name: str, tool_doc: str):
- """
- 保存新的待接入工具的信息
- :param tool_name: 工具名称
- :param tool_doc: 工具文档字符串
- :return: 保存的文件路径
- """
- # 获取当前文件所在目录
- current_dir = os.path.dirname(os.path.abspath(__file__))
- # 创建 tool_infos 目录(如果不存在)
- save_dir = os.path.join(current_dir, 'tool_infos')
- if not os.path.exists(save_dir):
- os.makedirs(save_dir)
-
- '''
- 工具库模块,提供工具库中的工具调用、保存新的待接入工具的信息
- 分为两个函数:
- 1. 调用工具库中的工具
- curl --location 'http://47.84.182.56:8001/tools/call/wechat_search_article' \
- --header 'Content-Type: application/json' \
- --data '{
- "keyword": "英雄联盟"
- }'
- 其中的data和wechat_search_article是函数的入参,把工具名替换到wechat_search_article,把参数字典替换到data
- 2. 保存新的待接入工具的信息
- 入参为工具信息,是一个工具的文档字符串
- 目前默认将这个文档字符串保存到一个文件中,文件名默认是工具的名称
- '''
- import requests
- import os
- import json
- TOOL_SERVER_URL = "http://47.84.182.56:8001/tools/call"
- def call_tool(tool_name: str, arguments: dict):
- """
- 调用工具库中的工具
- :param tool_name: 工具名称
- :param arguments: 工具参数字典
- :return: 工具调用结果
- """
- url = f"{TOOL_SERVER_URL}/{tool_name}"
- headers = {
- 'Content-Type': 'application/json'
- }
- try:
- response = requests.post(url, headers=headers, json=arguments)
- response.raise_for_status()
- return response.json()
- except requests.RequestException as e:
- # 在实际生产中可能需要更复杂的错误处理或日志记录
- return {"error": f"Failed to call tool {tool_name}: {str(e)}"}
- def save_tool_info(tool_name: str, tool_doc: str):
- """
- 保存新的待接入工具的信息
- :param tool_name: 工具名称
- :param tool_doc: 工具文档字符串
- :return: 保存的文件路径
- """
- # 获取当前文件所在目录
- current_dir = os.path.dirname(os.path.abspath(__file__))
- # 创建 tool_infos 目录(如果不存在)
- save_dir = os.path.join(current_dir, 'tool_infos')
- if not os.path.exists(save_dir):
- os.makedirs(save_dir)
-
- file_path = os.path.join(save_dir, f"{tool_name}.txt")
-
- try:
- with open(file_path, 'w', encoding='utf-8') as f:
- f.write(tool_doc)
- return file_path
- except IOError as e:
- return f"Error saving tool info: {str(e)}"
- def get_all_tool_infos() -> str:
- """
- 获取所有已保存工具的信息
- :return: 所有工具信息的拼接字符串
- """
- current_dir = os.path.dirname(os.path.abspath(__file__))
- save_dir = os.path.join(current_dir, 'tool_infos')
-
- if not os.path.exists(save_dir):
- return ""
-
- tool_infos = []
- try:
- for filename in os.listdir(save_dir):
- if filename.endswith(".txt"):
- file_path = os.path.join(save_dir, filename)
- with open(file_path, 'r', encoding='utf-8') as f:
- content = f.read().strip()
- tool_infos.append(f"--- Tool: {filename[:-4]} ---\n{content}\n")
- except Exception as e:
- return f"Error reading tool infos: {str(e)}"
-
- return "\n".join(tool_infos)
- def get_tool_info(tool_name: str) -> str:
- """
- 获取指定工具的信息
- :param tool_name: 工具名称
- :return: 工具信息文本,如果不存在返回空字符串
- """
- current_dir = os.path.dirname(os.path.abspath(__file__))
- save_dir = os.path.join(current_dir, 'tool_infos')
-
- if not os.path.exists(save_dir):
- return ""
-
- file_path = os.path.join(save_dir, f"{tool_name}.txt")
- if not os.path.exists(file_path):
- return ""
-
- try:
- with open(file_path, 'r', encoding='utf-8') as f:
- return f.read().strip()
- except Exception as e:
- return f"Error reading tool info: {str(e)}"
|