第二代仪评指标联识别接口

This commit is contained in:
BBIT-Kai
2025-09-30 13:48:59 +08:00
parent d71518931c
commit 3fb43c09f3
14 changed files with 323 additions and 36 deletions
+67
View File
@@ -0,0 +1,67 @@
import json
import re
from langchain.schema import HumanMessage
from config.llm import *
from llm.ticketLLM import decode_barcode
def get_ticket_response_v2(image_url: str, needBarcode: bool = False):
# 构建 prompt
prompt_text = f"""
你是一位专业的图像分析AI。你的任务是仔细分析提供的图片内容,并按JSON格式输出结果。
## JSON输出结构及字段说明:
# 蚕茧检测信息数据模型
该模型用于描述蚕茧检测信息,每条记录包含以下字段:
## 1. 下足茧重量 (`cocoon_weight`)
- **类型**:浮点数
- **描述**:下足茧的重量,单位为克(可带小数)
## 2. 非蛹粒数 (`defective_pupa_count`)
- **类型**:整数
- **描述**:不合格蛹的数量,即非好蛹的个数
## 3. 僵蛹粒数 (`dead_pupa_count`)
- **类型**:整数
- **描述**:僵蚕蛹的数量
## 4. 鲜壳量 (`fresh_shell_weight`)
- **类型**:浮点数
- **描述**:鲜壳重量,单位为克(可带小数)
## 5. 小样粒数 (`sample_count`)
- **类型**:整数
- **描述**:检测使用的小样数量,即用于检测的茧粒数
---
### 注意事项
- 所有字段都是必填的(required),在 JSON 实例中必须提供值
- 浮点数字段可以包含小数,整数字段只能是整数
- `evaluator` 和 `reviewer` 可以为空字符串,但字段必须存在
- 如果图片与上述内容无关,则字段值为默认值,例如0、0.0、""
最后,只输出严格的 JSON 格式,不要包含其他文字、markdown等内容。
"""
messages = [
HumanMessage(
content=[
{"type": "text", "text": prompt_text},
{"type": "image_url", "image_url": {"url": image_url}},
]
)
]
# 直接调用模型
llmRes = llmVision.invoke(messages).content
# 去掉 ```json 和 ``` 包裹
cleaned = re.sub(r"^```json\s*|\s*```$", "", llmRes.strip())
# 解析 JSON
jsonRes = json.loads(cleaned)
print("needBarcode:", needBarcode)
if needBarcode:
jsonRes["barcode"] = decode_barcode(image_url)
return jsonRes