from langchain.tools import tool from .base_tool import call_csharp_api, get_tool_prompt # 收款查询工具 def get_cusamt_default_config(): """get_cusamt 工具的默认配置""" return { "get_cusamt": { "基础描述": "获取指定时间范围的收款数据,可指定客户、汇总方式,你根据时间跨度决定最佳的汇总方式", "入参说明": { "backend_url": "后端API地址", "token": "认证令牌", "cusname": "客户名称 或 客户编码, 支持模糊查询,留空即查询所有客户", "firstdate": "开始日期,格式YYYY-MM-DD", "lastdate": "结束日期,格式YYYY-MM-DD 23:59:59", "grouptype": "汇总方式,数值, 0:按天;1:按月;2:按年", }, "返回值说明": { "格式": "一个包含客户收款数据的字符串", "字段含义": "custname:客户名称, viewdate:收款日期, amt:收款金额,currency:币种,kind:收款类型", }, "输出格式要求": ["以表格输出"], "使用示例": "用户输入:'查询客户A,2025年的收款情况' -> 系统调用此工具获取客户A在2025年1月至12月的收款数据", } } tool_description = get_tool_prompt("get_cusamt", get_cusamt_default_config()) def get_cusamt_func( backend_url: str, token: str, cusname: str, firstdate: str, lastdate: str, grouptype: str, ) -> str: """实际的函数实现""" print( f"正在获取客户{cusname}在{firstdate}至{lastdate}的收款数据,汇总方式{grouptype}" ) return call_csharp_api( backend_url, token, "money_data_ai", "get_cusamt", { "arg_cusname": cusname, "arg_firstdate": firstdate, "arg_lastdate": lastdate, "grouptype": grouptype, }, ) get_cusamt_func.__doc__ = tool_description get_cusamt = tool(get_cusamt_func) # 客户应收帐查询工具(包含明细信息) def get_bmsttake_with_mx_default_config(): """get_bmsttake_with_mx 工具的默认配置""" return { "get_bmsttake_with_mx": { "基础描述": "获取指定客户的应收帐数据(含明细信息)", "入参说明": { "backend_url": "后端API地址", "token": "认证令牌", "cusname": "客户名称 或 客户编码, 必填", }, "返回值说明": { "格式": "一个包含客户应收帐数据的字符串", "字段含义": "custname:客户名称, cus_balcamt:应收结余, currency:币种,scname:分部,billcode:单据编号,takedate:发生日期,oriamt:单据金额,msttakeamt:应收金额,takeamt:已收金额,balcamt:应收结余,balcamt:未收金额", }, "输出格式要求": [ "以表格输出", "custname,cus_balcamt,currency,scname是汇总信息,不需要在表格中显示", "其余是明细信息,在表格中显示", "按custname,currency,scname区分不同表格", "无需进行任何汇总计算,cus_balcamt就是客户对应币种的应收结余,直接显示即可", "默认不显示明细信息的表格,除非客户要求详细内容", ], "使用示例": "用户输入:'查询客户A的应收帐详细情况 或 详细介绍客户A还有多少单未付款' -> 系统调用此工具获取客户A的应收帐含明细数据", } } tool_description_get_bmsttake_mx = get_tool_prompt( "get_bmsttake_with_mx", get_bmsttake_with_mx_default_config() ) def get_bmsttake_with_mx_func( backend_url: str, token: str, cusname: str, ) -> str: """实际的函数实现""" print(f"正在获取客户{cusname}应收帐数据") return call_csharp_api( backend_url, token, "money_data_ai", "get_bmsttake_with_mx", {"arg_cusname": cusname}, ) get_bmsttake_with_mx_func.__doc__ = tool_description_get_bmsttake_mx get_bmsttake_with_mx = tool(get_bmsttake_with_mx_func) # 客户应收帐查询工具(快速,不含明细,可不指定客户) def get_bmsttake_quick_default_config(): """get_bmsttake_quick 工具的默认配置""" return { "get_bmsttake_quick": { "基础描述": "获取应收帐数据(快速,不含明细,可不指定客户)", "入参说明": { "backend_url": "后端API地址", "token": "认证令牌", "cusname": "客户名称 或 客户编码,如果不指定,则返回所有客户应收帐数据", }, "返回值说明": { "格式": "一个包含客户应收帐数据的字符串", "字段含义": "custname:客户名称, cus_balcamt:应收结余, currency:币种,scname:分部", }, "输出格式要求": [ "以表格输出", "custname,cus_balcamt,currency,scname是汇总信息,不需要在表格中显示", ], "使用示例": "用户输入:'查询客户A的应收帐情况 或 客户A还有多少款未付 或 查询待收款情况' -> 系统调用此工具获取应收帐数据", } } tool_description_get_bmsttake_quick = get_tool_prompt( "get_bmsttake_quick", get_bmsttake_quick_default_config() ) def get_bmsttake_quick_func( backend_url: str, token: str, cusname: str, ) -> str: """实际的函数实现""" print(f"正在获取客户{cusname}应收帐数据") return call_csharp_api( backend_url, token, "money_data_ai", "get_bmsttake_quick", {"arg_cusname": cusname}, ) get_bmsttake_quick_func.__doc__ = tool_description_get_bmsttake_quick get_bmsttake_quick = tool(get_bmsttake_quick_func)