配置驱动的通用 RAG 抽取平台。上游业务通过 task_name 调用,
所有 prompt / queries / schema 都存在 PG chong_extraction_task_v1 配置表 — 加新场景不用改代码、不用重新部署。
curl -X POST https://extraction-engine.chopinsight.cn/api/v1/run-task \
-H 'Content-Type: application/json' \
-d '{
"task_name": "prospectus_asset_list",
"reit_code": "180601.SZ"
}'
返回:
{
"data": {
"assets": [
{"asset_name": "青岛万象城", "city": "青岛", "project_company": "..."},
{"asset_name": "苏州昆山万象汇", "city": "昆山", "project_company": "..."}
]
},
"evidence_count": 29,
"task_name": "prospectus_asset_list",
"task_version": 1
}
curl -X PUT https://extraction-engine.chopinsight.cn/api/v1/tasks \
-H 'Content-Type: application/json' \
-d '{
"task_name": "fin_report_revenue_breakdown",
"source": "fin_report",
"queries": [
"营业收入分类构成",
"{asset_name} 收入明细"
],
"user_task": "穷举 REIT {reit_code} 在 {rp_period} 报告期的收入结构",
"schema_json": "{\"breakdown\":[{\"item\":\"...\",\"amount\":\"...\"}]}",
"max_tokens": 4096,
"description": "财报收入细分抽取"
}'
调用时通过 extra_context 注入 {var} 模板变量:
curl -X POST .../api/v1/run-task -d '{
"task_name": "fin_report_revenue_breakdown",
"reit_code": "180601.SZ",
"rp_period": "2025Q3",
"extra_context": {"asset_name": "青岛万象城"}
}'
三种模式:跑现有任务(run-task)、即席抽取(不读配置)、原始检索(看召回 chunk)。
(点"运行"看结果)
| task_name | source | top_k | max_tokens | v | 状态 | 描述 |
|---|---|---|---|---|---|---|
| 加载中… | ||||||
| Endpoint | 说明 |
|---|---|
POST/api/v1/run-task |
配置驱动抽取(业务推荐入口)。读 task_name 对应配置,渲染模板,跑 hybrid + LLM。 |
POST/api/v1/extract |
即席 schema 抽取(不读配置)— 用于调试 / 一次性探索。生产业务请用 run-task。 |
POST/api/v1/extract/asset-list |
兼容快捷方式,内部走 run_task("prospectus_asset_list")。 |
POST/api/v1/extract/asset-classification |
兼容快捷方式,内部走 run_task("prospectus_asset_classification")。 |
| Endpoint | 说明 |
|---|---|
GET/api/v1/tasks |
列出所有任务(摘要)。query: ?only_enabled=true |
GET/api/v1/tasks/{name} |
查看完整配置(含 queries / schema_json / user_task)。 |
PUT/api/v1/tasks |
创建或更新任务。同名任务 version 自动 +1,缓存即时失效。 |
DELETE/api/v1/tasks/{name} |
删除任务。 |
| Endpoint | 说明 |
|---|---|
POST/api/v1/search |
单 query hybrid search(向量 + 关键词 + RRF 融合)。 |
POST/api/v1/multi-search |
多 query 并行检索 + 去重 — 覆盖度优先。 |
POST/api/v1/decompose |
复杂 query → 子 query 列表(启发式 + LLM 拆解)。 |
| Endpoint | 说明 |
|---|---|
GET/health |
同时检测 PG + LLM(embed ping)。任一不可用返回 503。 |
GET/docs |
FastAPI 自动生成的 OpenAPI / Swagger UI。 |
chong_extraction_task_v1:
| 字段 | 类型 | 说明 |
|---|---|---|
task_name | varchar(64) | 主键,全局唯一 |
source | varchar(32) | prospectus / fin_report / valuation_report |
queries | jsonb | 多 query 字符串数组,支持 {var} 模板 |
user_task | text | 给 LLM 的任务描述,支持 {var} 模板 |
schema_json | text | 输出 JSON schema 字符串,支持 {var} 模板 |
top_k_per_query | int | 每 query 召回数(默认 8) |
total_limit | int | 去重后 chunk 上限(默认 25) |
max_tokens | int | LLM 输出上限(资产多/字段多调大) |
retries | int | JSON 解析失败重试次数(默认 2) |
use_llm_rerank | bool | 是否启用 LLM 重排(慢但准) |
version | int | 改一次 +1,可溯源 |
enabled | bool | false 时 run-task 拒接 |
{var}queries / user_task / schema_json 三个字段都支持 {var} 占位符。
调用 run-task 时通过 extra_context 注入:
// 配置(PUT /tasks)
{
"queries": ["{asset_name} 项目类型 业态 用途",
"{asset_name} 经营情况"],
"user_task": "判断【{asset_name}】的业态 (c0={c0})。提示:{c3_hint}",
...
}
// 调用(POST /run-task)
{
"task_name": "prospectus_asset_classification",
"reit_code": "180601.SZ",
"extra_context": {
"asset_name": "青岛万象城",
"c0": "商业不动产",
"c3_hint": "零售→集中式商业/超市社区商业"
}
}
未提供的 {var} 保留原样(不抛错),让部分模板字段可以为空。
import httpx
BASE = "https://extraction-engine.chopinsight.cn"
async def extract_asset_list(reit_code: str = None, file_id: int = None):
payload = {"task_name": "prospectus_asset_list"}
if reit_code: payload["reit_code"] = reit_code
if file_id: payload["file_id"] = file_id
async with httpx.AsyncClient(timeout=120) as c:
r = await c.post(f"{BASE}/api/v1/run-task", json=payload)
r.raise_for_status()
return r.json()
# usage
result = await extract_asset_list(reit_code="180601.SZ")
for a in result["data"]["assets"]:
print(a["asset_name"], a["city"])
| HTTP | 语义 |
|---|---|
| 400 | 缺少 file_id/audit_id/reit_code 三选一过滤;source 非法 |
| 404 | task_name 不存在 |
| 503 | /health 不通过(PG 或 LLM 任一故障) |
| 200 | 正常。data=null + error="no chunks recalled" 表示召回为空(不是 EE 故障) |
| source | PG 表 | 典型场景 |
|---|---|---|
prospectus | chong_prospectus_vector_v1 | 招募书 — 资产清单 / 业态分类 / 估值参数 |
fin_report | chong_fin_report_vector_v1 | 季报/中报/年报 — 收入构成 / 出租率 / 运营数据 |
valuation_report | chong_valuation_report_vector_v1 | 评估报告 — 折现率 / 账面价值 / 现金流预测 |
EE 部署在 Box 的 pg stack(端口 8205),通过 Caddy 路由
extraction-engine.chopinsight.cn → pg_extraction-engine:8205。