浏览代码

增加应收查询工具

longjoedyy 1 周之前
父节点
当前提交
96c920e059
共有 5 个文件被更改,包括 153 次插入4 次删除
  1. 41 3
      config/tool_config.json
  2. 107 0
      tools/money_tools.py
  3. 2 0
      tools/price_tools.py
  4. 2 1
      tools/sale_tools.py
  5. 1 0
      tools/ware_tools.py

+ 41 - 3
config/tool_config.json

@@ -12,7 +12,7 @@
             "字段含义": "mtrlcode:物料编码, mtrlname:物料名称, storagename:仓库名称, noallocqty:库存数量, unit:单位, noauditingqty:已开单数量, notauditnoallocqty:未开单数量, pzinfo:配置信息, buydays:采购周期天数"
         },
         "输出格式要求": [
-            "重复信息要总结归纳,精简显示"
+            "以表格输出,重复信息要总结归纳,精简显示"
         ],
         "使用示例": "用户输入:'查看铜管的库存' -> 系统调用此工具获取铜管的库存信息"
     },
@@ -21,7 +21,7 @@
         "入参说明": {
             "backend_url": "后端API地址",
             "token": "认证令牌",
-            "funtion_name": "函数名称; get_sale_amt_by_month:按月汇总销售额; get_sale_amt_by_day:按天汇总销售额; get_sale_amt_by_produce:产品销售额; get_sale_amt_by_cus:客户销售额",
+            "funtion_name": "函数名称; get_sale_amt_by_month:按月汇总销售额; get_sale_amt_by_day:按天汇总销售额; get_sale_amt_by_produce:产品销售额; get_sale_amt_by_cus:客户销售额;get_sale_amt_by_saler:业务员销售额;get_sale_amt_by_cus_produce:客户产品销售额",
             "firstdate": "开始日期,格式YYYY-MM-DD",
             "lastdate": "结束日期,格式YYYY-MM-DD 23:59:59"
         },
@@ -29,7 +29,7 @@
             "格式": "一个包含销售金额的字符串"
         },
         "输出格式要求": [
-            "重复信息要总结归纳,精简显示"
+            "以表格输出,重复信息要总结归纳,精简显示"
         ],
         "使用示例": "用户输入:'查看2023年1月1日至2023年12月31日的销售金额' -> 系统调用此工具获取2023年1月至12月的销售金额;'2024年前5热销产品是哪些?' -> 系统调用此工具获取2024年产品销售额;'2025年前10销售额最高的客户是?' -> 系统调用此工具获取2025年客户销售额"
     },
@@ -71,5 +71,43 @@
             "以表格输出,客户名称列默认要显示,除非用户有其他汇总需求"
         ],
         "使用示例": "用户输入:'查询客户A,2025年的收款情况' -> 系统调用此工具获取客户A在2025年1月至12月的收款数据"
+    },
+    "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的应收帐含明细数据"
+    },
+    "get_bmsttake_quick": {
+        "基础描述": "获取应收帐数据(快速,不含明细,可不指定客户)",
+        "入参说明": {
+            "backend_url": "后端API地址",
+            "token": "认证令牌",
+            "cusname": "客户名称 或 客户编码,如果不指定,返回所有客户应收帐数据"
+        },
+        "返回值说明": {
+            "格式": "一个包含客户应收帐数据的字符串",
+            "字段含义": "custname:客户名称, cus_balcamt:应收结余(正值代表欠款), currency:币种,scname:分部"
+        },
+        "输出格式要求": [
+            "以表格输出",
+            "custname,cus_balcamt,currency,scname是汇总信息,不需要在表格中显示"
+        ],
+        "使用示例": "用户输入:'查询客户A的应收帐情况 或 客户A还有多少款未付 或 查询待收款情况' -> 系统调用此工具获取应收帐数据"
     }
 }

+ 107 - 0
tools/money_tools.py

@@ -2,6 +2,7 @@ from langchain.tools import tool
 from .base_tool import call_csharp_api, get_tool_prompt
 
 
+# 收款查询工具
 def get_cusamt_default_config():
     """get_cusamt 工具的默认配置"""
     return {
@@ -17,8 +18,10 @@ def get_cusamt_default_config():
             },
             "返回值说明": {
                 "格式": "一个包含客户收款数据的字符串",
+                "字段含义": "custname:客户名称, viewdate:收款日期, amt:收款金额,currency:币种,kind:收款类型",
             },
             "输出格式要求": ["以表格输出"],
+            "使用示例": "用户输入:'查询客户A,2025年的收款情况' -> 系统调用此工具获取客户A在2025年1月至12月的收款数据",
         }
     }
 
@@ -55,3 +58,107 @@ def get_cusamt_func(
 
 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)

+ 2 - 0
tools/price_tools.py

@@ -14,6 +14,7 @@ def get_mtrl_saleprice_default_config():
             },
             "返回值说明": {
                 "格式": "一个包含物料价格的字符串",
+                "字段含义": "listname:价格表,currency:币种, mtrlcode:物料编码, mtrlname:物料名称, unit:单位, price:含税价, unit_buy:辅助单位, rate_buy:转换率,price_unit1:辅助单位含税价,saleqty:销售数量下限,saleqty1:销售数量上限",
             },
             "输出格式要求": [
                 "以表格输出",
@@ -21,6 +22,7 @@ def get_mtrl_saleprice_default_config():
                 "辅助单位,含税价辅助单位,转换率,数量区间:若所有行该列值为初始值(如'',0),则整列隐藏",
                 "其他列原样显示",
             ],
+            "使用示例": "用户输入:'查询铜管的销售价格' -> 系统调用此工具获取铜管的销售价格",
         }
     }
 

+ 2 - 1
tools/sale_tools.py

@@ -10,7 +10,7 @@ def get_sale_amt_default_config():
             "入参说明": {
                 "backend_url": "后端API地址",
                 "token": "认证令牌",
-                "funtion_name": "函数名称; get_sale_amt_by_month:按月汇总销售额; get_sale_amt_by_day:按天汇总销售额; get_sale_amt_by_produce:产品销售额; get_sale_amt_by_cus:客户销售额",
+                "funtion_name": "函数名称; get_sale_amt_by_month:按月汇总销售额; get_sale_amt_by_day:按天汇总销售额; get_sale_amt_by_produce:产品销售额; get_sale_amt_by_cus:客户销售额;get_sale_amt_by_saler:业务员销售额;get_sale_amt_by_cus_produce:客户产品销售额",
                 "firstdate": "开始日期,格式YYYY-MM-DD",
                 "lastdate": "结束日期,格式YYYY-MM-DD 23:59:59",
             },
@@ -20,6 +20,7 @@ def get_sale_amt_default_config():
             "输出格式要求": [
                 "重复信息要总结归纳,精简显示",
             ],
+            "使用示例": "用户输入:'查看2023年1月1日至2023年12月31日的销售金额' -> 系统调用此工具获取2023年1月至12月的销售金额;'2024年前5热销产品是哪些?' -> 系统调用此工具获取2024年产品销售额;'2025年前10销售额最高的客户是?' -> 系统调用此工具获取2025年客户销售额",
         }
     }
 

+ 1 - 0
tools/ware_tools.py

@@ -17,6 +17,7 @@ def get_mtrlware_default_config():
                 "字段含义": "mtrlcode:物料编码, mtrlname:物料名称, storagename:仓库名称, noallocqty:库存数量, unit:单位, noauditingqty:已开单数量, notauditnoallocqty:未开单数量, pzinfo:配置信息, buydays:采购周期天数,query_status:查询状态",
             },
             "输出格式要求": ["重复信息要总结归纳,精简显示"],
+            "使用示例": "用户输入:'查看铜管的库存' -> 系统调用此工具获取铜管的库存信息",
         }
     }