42 lines
2.0 KiB
Python
42 lines
2.0 KiB
Python
|
|
"""Prompt for extracting transactions from billing screenshots."""
|
|||
|
|
|
|||
|
|
EXTRACT_TRANSACTION_SYSTEM = """你是一个专业的金融交易数据提取助手,专门用于从手机APP账单或交易记录截图中提取结构化信息。"""
|
|||
|
|
|
|||
|
|
EXTRACT_TRANSACTION_USER = """请分析这张手机APP账单/交易记录截图,提取所有可见的交易记录。
|
|||
|
|
|
|||
|
|
要求:
|
|||
|
|
1. 只返回一个JSON数组,不要包含其他说明文字。
|
|||
|
|
2. 数组的每个元素是一条交易,包含以下字段(若截图中无该信息则填 null):
|
|||
|
|
- app_source: string,APP来源,如 "微信支付"、"支付宝"、"XX银行"、"XX钱包"
|
|||
|
|
- transaction_type: string,交易类型,如 "转出"、"转入"、"消费"、"收款"、"提现"、"充值"
|
|||
|
|
- amount: number,金额(数字,不含货币符号)
|
|||
|
|
- currency: string,币种,如 "CNY"、"USDT",默认 "CNY"
|
|||
|
|
- counterparty_name: string | null,对方名称/姓名
|
|||
|
|
- counterparty_account: string | null,对方账号、卡号尾号、钱包地址等
|
|||
|
|
- order_number: string | null,订单号/交易号
|
|||
|
|
- transaction_time: string | null,交易时间,请用 ISO 8601 格式,如 "2024-01-15T14:30:00"
|
|||
|
|
- remark: string | null,备注/摘要
|
|||
|
|
- confidence: string,识别置信度,取 "high"、"medium"、"low" 之一
|
|||
|
|
|
|||
|
|
3. 注意区分转入和转出方向;金额统一为正数,方向由 transaction_type 体现。
|
|||
|
|
4. 若截图中没有交易记录或无法识别,返回空数组 []。
|
|||
|
|
|
|||
|
|
直接输出JSON数组,不要用 markdown 代码块包裹。"""
|
|||
|
|
|
|||
|
|
|
|||
|
|
def get_extract_messages(image_b64: str) -> list[dict]:
|
|||
|
|
"""Build messages for vision API: system + user with image."""
|
|||
|
|
return [
|
|||
|
|
{"role": "system", "content": EXTRACT_TRANSACTION_SYSTEM},
|
|||
|
|
{
|
|||
|
|
"role": "user",
|
|||
|
|
"content": [
|
|||
|
|
{"type": "text", "text": EXTRACT_TRANSACTION_USER},
|
|||
|
|
{
|
|||
|
|
"type": "image_url",
|
|||
|
|
"image_url": {"url": f"data:image/jpeg;base64,{image_b64}"},
|
|||
|
|
},
|
|||
|
|
],
|
|||
|
|
},
|
|||
|
|
]
|