|
|
@@ -0,0 +1,74 @@
|
|
|
+from typing import Optional
|
|
|
+
|
|
|
+from langchain.tools import tool
|
|
|
+from .base_tool import call_csharp_api, get_tool_prompt
|
|
|
+
|
|
|
+
|
|
|
+def get_saletask_detail_config():
|
|
|
+ """get_saletask_detail 工具的默认配置"""
|
|
|
+ return {
|
|
|
+ "get_saletask_detail": {
|
|
|
+ "基础描述": "获取指定销售订单的进度",
|
|
|
+ "入参说明": {
|
|
|
+ "backend_url": "后端API地址",
|
|
|
+ "token": "认证令牌",
|
|
|
+ "cusname": "客户名称 或 客户编码, 支持模糊查询",
|
|
|
+ "taskcode": "销售订单编码, 支持模糊查询",
|
|
|
+ "firstdate": "开始日期,格式YYYY-MM-DD,如果不指定,传None",
|
|
|
+ "lastdate": "结束日期,格式YYYY-MM-DD 23:59:59,如果不指定,传None",
|
|
|
+ },
|
|
|
+ "返回值说明": {
|
|
|
+ "格式": "返回多行字符串,每行代表一个销售订单,字段以逗号分隔。每行包含:taskcode(销售订单号)、cusname(客户名称)、taskdate(销售订单日期)、flag_str(单据状态)、mx(JSON字符串,包含物料明细列表)",
|
|
|
+ "mx字段结构": "mx字段是一个JSON字符串列表,每个元素包含:mtrlcode(物料代码)、mtrlname(物料名称)、mtrlmode(规格型号)、unit(单位)、saleqty(销售数量)、consignedqty(发货数量)",
|
|
|
+ },
|
|
|
+ "输出格式要求": [
|
|
|
+ "1. 将返回的多行数据按行拆分为独立的销售订单",
|
|
|
+ "2. 为每个销售订单按以下格式输出:",
|
|
|
+ " a) 表头信息(以文字描述输出):",
|
|
|
+ " 销售订单:[taskcode] | 状态:[flag_str]",
|
|
|
+ " 客户:[cusname] | 下单日期:[taskdate]",
|
|
|
+ " b) 明细表格(以Markdown表格输出)",
|
|
|
+ "3. 不同销售订单之间要有多个空行分隔",
|
|
|
+ "4. 如果工具返回警告或错误,要直接输出错误信息,不进行格式化",
|
|
|
+ ],
|
|
|
+ "使用示例": "用户输入:'查询客户A的订单进度' -> (只说订单,默认是销售订单)系统调用此工具获取客户A的销售订单进度,如果没有明确日期范围,传None -> 返回结果后,按上述格式要求格式化输出",
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+tool_description = get_tool_prompt("get_saletask_detail", get_saletask_detail_config())
|
|
|
+
|
|
|
+
|
|
|
+def get_saletask_detail_func(
|
|
|
+ backend_url: str,
|
|
|
+ token: str,
|
|
|
+ cusname: str,
|
|
|
+ taskcode: str,
|
|
|
+ firstdate: Optional[str] = None,
|
|
|
+ lastdate: Optional[str] = None,
|
|
|
+) -> str:
|
|
|
+ """实际的函数实现"""
|
|
|
+ print(f"正在获取客户{cusname}的销售订单{taskcode}的进度")
|
|
|
+
|
|
|
+ # 构建参数字典,只包含非 None 的参数
|
|
|
+ params = {
|
|
|
+ "arg_cusname": cusname,
|
|
|
+ "arg_taskcode": taskcode,
|
|
|
+ }
|
|
|
+
|
|
|
+ if firstdate is not None:
|
|
|
+ params["arg_firstdate"] = firstdate
|
|
|
+ if lastdate is not None:
|
|
|
+ params["arg_lastdate"] = lastdate
|
|
|
+
|
|
|
+ return call_csharp_api(
|
|
|
+ backend_url,
|
|
|
+ token,
|
|
|
+ "sale_bill_data_ai",
|
|
|
+ "get_saletask_detail",
|
|
|
+ params,
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+get_saletask_detail_func.__doc__ = tool_description
|
|
|
+get_saletask_detail = tool(get_saletask_detail_func)
|