Files
gangyan/langchain-chat/server/agent/tools_select.py

175 lines
11 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

from langchain.tools import Tool
from server.agent.tools import *
from server.agent.tools import rag_search1
from server.agent.tools import duckduckgo_search
from server.agent.tools.do_nothing import do_nothing, doNothingInput, get_next_tip
from server.agent.tools.draw_plot import create_and_save_plot, draw_ink_pic, draw_realistic_pic, drawInkInput, drawPlotInput, drawRealisticInput
from server.agent.tools.get_statistical_data import mysql_statistic
from server.agent.tools.math import code_count, math_count
from server.agent.tools.search_picture import search_pic
from server.agent.tools.search_tool import search_tool
# 请注意如果你是为了使用AgentLM在这里你应该使用英文版本。
tools = [
# Tool.from_function(
# func=calculate,
# name="calculate",
# description="Useful for when you need to answer questions about simple calculations",
# args_schema=CalculatorInput,
# ),
# Tool.from_function(
# func=arxiv,
# name="arxiv",
# description="A wrapper around Arxiv.org for the original English paper.",
# args_schema=ArxivInput,
# ),
# Tool.from_function(
# func=weathercheck,
# name="weather_check",
# description="",
# args_schema=WeatherInput,
# ),
# Tool.from_function(
# func=shell,
# name="shell",
# description="Use Shell to execute Linux commands",
# args_schema=ShellInput,
# ),
# Tool.from_function(
# func=search_knowledgebase_complex,
# name="search_knowledgebase_complex",
# description="Use this tool to check out local knowledgebase",
# args_schema=KnowledgeSearchInput,
# ),
# Tool.from_function(
# func=search_internet,
# name="search_internet",
# description="Use this tool to search the internet and retrieve information",
# args_schema=SearchInternetInput,
# ),
# Tool.from_function(
# func=wolfram,
# name="Wolfram",
# description="Useful for when you need to calculate difficult formulas",
# args_schema=WolframInput,
# ),
# Tool.from_function(
# func=search_youtube,
# name="search_youtube",
# description="use this tools to get videos",
# args_schema=YoutubeInput,
# ),
# Tool.from_function(
# func=chat_with_Yi34B,
# name="chat_with_Yi34B",
# description="Use this tool to chat",
# args_schema=ChatWithYi34BInput,
# ),
Tool.from_function(
func=search_tool,
name="知识库联想",
# description="\n【工具参数说明】\n 参数格式参数需以逗号分隔并以JSON格式提供\n 必需参数:\n 1. query查询内容。\n2.knowledge_name知识库名称例如 政策库、项目库、期刊论文库、冶金行业新闻库、冶金专业知识库、冶金行业报告库\\n3.keywords【使用指南】\n当需要利用文献资源辅助回答问题时请使用此工具。\n输入必须包含三个参数query、knowledge_name 和 keywords\nknowledge_name 必须是以下之一:政策库、期刊论文库、新闻库。\nkeywords 应尽可能多地涵盖相关领域,并确保与搜索主题高度相关。\n尽量提供中文关键词。\n示例\n{\"knowledge_name\":\"政策库\",\"keywords\": [\"technology\", \"era\"]\n确保所有参数以JSON格式提供以便工具能够正确解析和使用}",
description="\n【参数说明】:\n 参数格式参数必须使用JSON格式提供\n 必需参数:\n 1. query查询内容。\n2.knowledge_name知识库名称必须从【中国钢铁行业动态库、政策库、期刊论文库、冶金新闻库2024年以及之前、冶金中文期刊库、冶金外文期刊库、冶金OA期刊库、冶金行业新闻库、冶金专业知识库、冶金行业报告库、报告库、美术专业知识库】中选择\n3.keywords与搜索主题高度相关\n【使用指南】:\n当需要利用文献资源辅助回答问题时,请使用此工具。\n输入必须包含三个参数:{\"knowledge_name\":[\"XXX\",\"XXX\"],\"query\":\"XXX\",\"keywords\":[\"XXX\", \"XXX\", \"XXX\", \"XXX\"]}\n示例:\n{\"query\":\"人工智能的相关政策\",\"knowledge_name\":[\"政策库\"],\"keywords\": [\"人工智能\", \"国家级\"]}\n务必以JSON格式输入参数以便工具能够正确解析和使用。",
args_schema=RagSearchInput
),
Tool.from_function(
func=knowledgebase_kgo_search,
name="联网思索",
description="\n【参数说明】:参数格式以JSON格式提供参数为query\n query 为【user input】的原文例如\n{\"query\":\"人工智能是什么\"}\n注意禁止改写【user input】的内容",
# description="提示:联网思索工具仅供娱乐,名词解释,或知识库联想无法满足需求时才使用\n【参数说明】:参数格式以JSON格式提供参数为query\n query 为【user input】的原文例如\n{\"query\":\"人工智能是什么\"}\n注意禁止改写【user input】的内容",
args_schema=KnowledgeKgoInput
),
# Tool.from_function(
# func=duckduckgo_search,
# name="联网思索",
# description="【参数说明】:参数格式必须以JSON格式提供\n必需参数\n1.query查询内容\"粉末冶金\")。\n可选参数\n2.time查询时间范围例如 \"m\" 表示过去一个月,\"w\" 表示过去一周,不传则默认 \"d\"\n3.resource_type资源类型控制\n - \"default\" 或不传该参数:检索所有资源\n - \"video\":用户明确要求检索视频的时候,检索视频 - \"limit\"查询资料数量如果用户没有明确要求默认传3 \n\n【使用示例】:\n{\"query\":\"人工智能\",\"time\":\"m\",\"resource_type\":\"default\",\"limit\":3}\n确保参数以JSO-N格式提供以便正确解析和使用。",
# args_schema=DuckduckgoInput
# ),
# Tool.from_function(
# func=do_nothing,
# name="无需调用工具",
# description="不需要使用工具的时候调用本方法以获取指示",
# args_schema=doNothingInput
# ),
# Tool.from_function(
# func=get_next_tip,
# name="环节跳转",
# description="第一阶段结束获取第二阶段提示",
# args_schema=doNothingInput
# ),
Tool.from_function(
func=create_and_save_plot,
name="图表绘制",
description="注意本工具一次只能画一张图<关键指令>使用本工具后你必须按工具返回要求输出图片</关键指令>【参数说明】:参数以<param></param>标签包裹。必须提供以下参数格式: 必需参数:\n 1. data图表数据格式如下{\"XXX\": XX, \"XXX\": XX, \"XXX\": X, \"XXX\": X}其中XXX代表分类名称xx代表分类数据量。\n2.title图表标题3.xlabel横轴标题你按照分的几类属于哪个大类必须有\n4.ylabel纵轴标题你的数值数据是什么必须有\n 5.plot_type:图表类型必须从以下几个当中选一个作为输入【bar,pie,line】其中bar代表柱状图pie代表饼图line代表折线图你只能选一个作为输入\n【使用指南】:\n当需要生成图表时,请使用此工具。\n输入必须包含以下参数::<tool_input><param>{\n\"data\": {\"XXX\": XX, \"XXX\": XX, \"XXX\": X, \"XXX\": X},\"title\": \"X\",\"xlabel\": \"X\",\"ylabel\": \"X\",\"plot_type\": \"X\"}\n示例:{'\"data\": {\"Category A\": 23, \"Category B\": 17, \"Category C\": 35, \"Category D\": 29},\"title\": \"My Chart\",\"xlabel\": \"Category\",\"ylabel\": \"Value\",\"plot_type\": \"pie\"}</param></tool_input>\n请务必以json格式输入方便使用。\n",
args_schema=drawPlotInput
),
Tool.from_function(
func=math_count,
name="数学运算",
description="【参数说明】:参数格式以JSON格式提供参数为query\n query 为数学问题描述,例如:\n{\"query\":\"9.9和9.11谁大\"}\n",
args_schema=drawPlotInput
),
Tool.from_function(
func=code_count,
name="代码专家",
description="【参数说明】:参数格式以JSON格式提供参数为query\n query 为代码问题描述,例如:\n{\"query\":\"写一个es增量数据处理的脚本\"}\n",
args_schema=drawPlotInput
),
Tool.from_function(
func=weathercheck,
name="天气工具",
description="【参数说明】:注意仅支持三天内天气查询参数格式以JSON格式提供参数为location\n location 为查询天气的城市名称,例如:\n{\"location\":\"北京\"}\n",
args_schema=drawPlotInput
),
Tool.from_function(
func=search_pic,
name="美术作品获取",
description="【参数说明】:参数格式以JSON格式提供参数为query\n query 为查询美术作品的描述,务必是美术作品的描述,不要直接输入美术作品四个字而是如山水画写生画,草原,太阳等等,例如:\n{\"query\":\"山水画\"}\n需将该工具返回的图片链接以markdown格式给出",
args_schema=drawPlotInput
),
Tool.from_function(
func=mysql_statistic,
name="统计数据查询",
description="提示统计库数据最多只有2023年及之前的199几年的最多【参数说明】:参数格式以JSON格式提供并必须以<param></param>标签包裹。参数为query\n query 为详细的查询问题例如:\n<tool_input> <param>{\"query\":\"原油出口统计数据\"}</param> </tool_input>\n,需将返回数据做成数据表和图表",
args_schema=drawPlotInput
),
# Tool.from_function(
# func=draw_realistic_pic,
# name="实景绘制",
# description="【参数说明】:参数格式以JSON格式提供参数为query\n query 为图片需求描述,例如:\n{\"query\":\"画一张风景图\"}\n",
# args_schema=drawRealisticInput
# ),
# Tool.from_function(
# func=draw_ink_pic,
# name="水墨画绘制",
# description="【参数说明】:参数格式以JSON格式提供参数为query\n query 为图片需求描述,例如:\n{\"query\":\"画一个红苹果\"}\n",
# args_schema=drawInkInput
# ),
# Tool.from_function(
# func=rag_search1,
# name="rag_search",
# description="Use this tool to search for relevant information in the policy knowledge base, with the query is the user's questions ,with the knowledge base name being t_policy_total_bge_new_v2.",
# args_schema=RagSearchInput,
# ),
# Tool.from_function(
# func=policy_knowledgebase_search,
# name="policy_knowledgebase",
# description="Use this tool to search for policy knowledge base",
# args_schema=PolicyKnowledgeInput,
# ),
# Tool.from_function(
# func=report_knowledgebase_search,
# name="report_knowledgebase",
# description="Use this tool to search for report knowledge base",
# args_schema=ReportKnowledgeInput,
# ),
]
tool_names = [tool.name for tool in tools]
# 网络搜索工具
search_tool_names = [search_internet for tool in tools]