sale_tools.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. from langchain.tools import tool
  2. from .base_tool import call_csharp_api, get_tool_prompt
  3. def get_sale_amt_default_config():
  4. """get_sale_amt 工具的默认配置"""
  5. return {
  6. "get_sale_amt": {
  7. "基础描述": "获取指定时间范围的销售金额,按月汇总",
  8. "入参说明": {
  9. "backend_url": "后端API地址",
  10. "token": "认证令牌",
  11. "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:客户产品销售额;get_hot_produce_not_buy:客户未购买过的热销产品;get_first_buy_list:客户指定时间范围内第一次下单的产品",
  12. "cusname": "客户名称,只有get_hot_produce_not_buy和get_first_buy_list需要",
  13. "firstdate": "开始日期,格式YYYY-MM-DD",
  14. "lastdate": "结束日期,格式YYYY-MM-DD 23:59:59",
  15. },
  16. "返回值说明": {
  17. "格式": "一个包含销售金额的字符串",
  18. "字段含义": "sale_month:月份, amt:销售金额,sale_day:日期,produce_name:产品名称,cus_name:客户,saler_name:业务员,mtrlcode:产品编码,taskdate:订单日期,taskcode:订单号,saleqty:销售数量,unit:单位",
  19. },
  20. "输出格式要求": [
  21. "重复信息要总结归纳,精简显示",
  22. ],
  23. "使用示例": "用户输入:'查看2023年1月1日至2023年12月31日的销售金额' -> 获取2023年1月至12月的销售金额;'2024年前5热销产品是哪些?' -> 获取2024年产品销售额;'2025年前10销售额最高的客户是?' -> 获取2025年客户销售额';'客户A还没买过的热销型号有哪些?'->get_hot_produce_not_buy(没有指定时间范围默认近半年);'客户A最近半个月买了哪些产品是首购?'->get_first_buy_list(没有指定时间范围默认近半个月)",
  24. }
  25. }
  26. tool_description = get_tool_prompt("get_sale_amt", get_sale_amt_default_config())
  27. def get_sale_amt_func(
  28. backend_url: str,
  29. token: str,
  30. funtion_name: str,
  31. firstdate: str,
  32. lastdate: str,
  33. cusname: str = "",
  34. ) -> str:
  35. """实际的函数实现"""
  36. print(f"正在获取销售金额{funtion_name},时间范围:{firstdate} 至 {lastdate}")
  37. return call_csharp_api(
  38. backend_url,
  39. token,
  40. "sale_data_ai",
  41. funtion_name,
  42. {"arg_firstdate": firstdate, "arg_lastdate": lastdate, "arg_cusname": cusname},
  43. )
  44. get_sale_amt_func.__doc__ = tool_description
  45. get_sale_amt = tool(get_sale_amt_func)