彻底清除掉命令行交互方式的代码,改造为提供 HTTP 接口,端口6001。 并提供scripts/service_ctl.sh的方式管理服务的启停 返回分类结果的list(results):list由多个dict组成,每个dict的key为对应的分类任务,value是三元组,即值、打分、概率(如果值为none则该项不输出) 完善日志系统,当前cli方式输出的重要信息,在日志以及http接口的details字段体现。 提供一个压测脚本放到本项目的合适的目录下,作为压测工具。该压测工具针对每条请求打印出结果,并最后给出性能指标,参考: #!/bin/bash # 默认值 concurrency=${1:-1} top_lines=${2:-100} # 固定查询文件路径 query_file="/data/saas-search/scripts/evaluation/queries/queries.txt" # 检查文件是否存在 if [ ! -f "$query_file" ]; then echo "错误: 查询文件不存在: $query_file" >&2 exit 1 fi # 检查 jq 是否可用 if ! command -v jq &> /dev/null; then echo "错误: 需要安装 jq 来解析 JSON" >&2 exit 1 fi url="http://127.0.0.1:6001/..." max_jobs=$concurrency job_count=0 # 读取文件前 top_lines 行,每行作为一个 query while IFS= read -r query; do # 跳过空行 [ -z "$query" ] && continue # 启动子进程执行请求 ( # 安全构建 JSON payload payload=$(jq -n --arg q "$query" '{query: $q}') # 发送请求并获取响应 response=$(curl -s -X POST "$url" \ -H 'Content-Type: application/json' \ -d "$payload") # 提取 results 字段(紧凑 JSON 格式) results=$(echo "$response" | jq -c '.results') # 输出 query 和对应的 results printf "%s\t%s\n" "$query" "$results" ) & # 控制并发数量 ((job_count++)) if (( job_count >= max_jobs )); then wait -n # 等待任意一个后台进程完成 ((job_count--)) fi done < <(head -n "$top_lines" "$query_file") # 等待所有剩余后台进程完成 # 在这里统计处性能情况,指标: 平均耗时: 最大耗时: 最小耗时: TP50: TP90: TP99: wait