| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- 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)
|