ware_tools.py 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. from httpx import get
  2. from langchain.tools import tool
  3. from .base_tool import call_csharp_api, get_tool_prompt
  4. def get_mtrlware_default_config():
  5. """get_mtrlware_data 工具的默认配置"""
  6. return {
  7. "get_mtrlware_data": {
  8. "基础描述": "获取指定物料的库存信息",
  9. "入参说明": {
  10. "backend_url": "后端API地址",
  11. "token": "认证令牌",
  12. "mtrlname": "物料名称 或 物料编码, 支持模糊查询",
  13. },
  14. "返回值说明": {
  15. "格式": "一个包含物料库存数据的字符串",
  16. "字段含义": "mtrlcode:物料编码, mtrlname:物料名称, storagename:仓库名称, noallocqty:库存数量, unit:单位, noauditingqty:已开单数量, notauditnoallocqty:未开单数量, pzinfo:配置信息, buydays:采购周期天数,query_status:查询状态",
  17. },
  18. "输出格式要求": ["重复信息要总结归纳,精简显示"],
  19. "使用示例": "用户输入:'查看铜管的库存' -> 系统调用此工具获取铜管的库存信息",
  20. }
  21. }
  22. # 获取工具描述
  23. tool_description = get_tool_prompt("get_mtrlware_data", get_mtrlware_default_config)
  24. def get_mtrlware_data_func(backend_url: str, token: str, mtrlname: str) -> str:
  25. """实际的函数实现"""
  26. print(f"正在获取物料{mtrlname}的库存数据")
  27. return call_csharp_api(
  28. backend_url,
  29. token,
  30. "ware_data_ai",
  31. "get_mtrlware_data",
  32. {"arg_mtrlname": mtrlname},
  33. )
  34. # 3. 设置文档字符串
  35. get_mtrlware_data_func.__doc__ = tool_description
  36. # 4. 最后应用装饰器
  37. get_mtrlware_data = tool(get_mtrlware_data_func)
  38. def get_mtrlware_max_by_storage_config():
  39. """get_mtrlware_max_by_storage 工具的默认配置"""
  40. return {
  41. "get_mtrlware_max_by_storage": {
  42. "基础描述": "获取指定仓库的库存数量最多的产品",
  43. "入参说明": {
  44. "backend_url": "后端API地址",
  45. "token": "认证令牌",
  46. "storagename": "仓库名称",
  47. },
  48. "返回值说明": {
  49. "格式": "一个包含物料库存数据的字符串",
  50. "字段含义": "mtrlname:物料名称, storagename:仓库名称, noallocqty:库存数量, unit:单位,query_status:查询状态",
  51. },
  52. "输出格式要求": ["重复信息要总结归纳,精简显示"],
  53. "使用示例": "安吉仓库最多的库存哪个型号",
  54. }
  55. }
  56. tool_description_max_by_storage = get_tool_prompt(
  57. "get_mtrlware_max_by_storage", get_mtrlware_max_by_storage_config
  58. )
  59. def get_mtrlware_max_by_storage_func(
  60. backend_url: str, token: str, storagename: str
  61. ) -> str:
  62. """实际的函数实现"""
  63. print(f"正在获取仓库{storagename}的最多库存产品")
  64. return call_csharp_api(
  65. backend_url,
  66. token,
  67. "ware_data_ai",
  68. "get_mtrlware_max_by_storage",
  69. {"arg_storagename": storagename},
  70. )
  71. # 3. 设置文档字符串
  72. get_mtrlware_max_by_storage_func.__doc__ = tool_description_max_by_storage
  73. get_mtrlware_max_by_storage = tool(get_mtrlware_max_by_storage_func)