| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051 |
- """四种打法生成 query 的 demo:只到「生成 query」,写 data/queries/demo.json(不落库)。
- 用法:PYTHONPATH=. python scripts/build_query_demo.py
- ③ 联想 + ④ LLM 走真实接口,须在能访问 crawler.aiddit.com / OpenRouter 的环境跑。
- """
- from __future__ import annotations
- import json
- import time
- from pathlib import Path
- from acquisition.query import (
- ACTIONS, BLOCK, CARRIER_POS_GROUPED, DEMAND, KTYPE_SUFFIX, MODALITIES, STAGES,
- sample_nodes, tactic2_form_llm, tactic4_llm, tactic_multiaxis,
- )
- from core.config import Settings
- ROOT = Path(__file__).resolve().parent.parent
- OUT = ROOT / "data" / "queries" / "demo.json"
- def main() -> None:
- settings = Settings.from_env()
- topics = sample_nodes("实质", depths=(3,), limit=12, under="理念") # 实质:理念分支(事件/知识/情感…)
- forms = sample_nodes("形式", depths=(4,), limit=20, under="架构") # 形式:架构分支(叙事/修辞/创意…)
- print(f"实质 {len(topics)}: {topics}")
- print(f"形式 {len(forms)}: {forms}")
- t2 = tactic2_form_llm(forms, settings)
- # ③ 暂留空:小红书/抖音无真·搜索联想接口(keyword_v2 返回的是帖子不是联想词),待接入真 sug 再补
- print(f"① LLM 实质: {topics[:5]}")
- t4 = tactic4_llm(topics[:5], settings)
- t5 = tactic_multiaxis(n=36) # ④ 机械多轴组合(无 LLM)
- data = {
- "generated_at": int(time.time()),
- "block": BLOCK,
- "tactic1": {"name": "实质 × 创作阶段 × 需求", "需求点": DEMAND, "items": t4},
- "tactic2": {"name": "形式 + 载体位置", "载体位置": CARRIER_POS_GROUPED, "items": t2},
- "tactic3": {"name": "搜索词sug扩展", "items": [],
- "待接入": "小红书/抖音都没有真正的「输入框搜索联想」接口;keyword_v2 名字像联想、实际返回的是帖子。此页暂空,待接入真 sug 接口后再补。"},
- "tactic4": {"name": "多轴正交组合", "items": t5,
- "人工轴": {"阶段": STAGES, "动作": ACTIONS, "知识类型": KTYPE_SUFFIX, "模态": MODALITIES}},
- }
- OUT.parent.mkdir(parents=True, exist_ok=True)
- OUT.write_text(json.dumps(data, ensure_ascii=False, indent=1), encoding="utf-8")
- print(f"\n① {len(t4)} 条 ② {len(t2)} 条 ③ 待接入 ④ {len(t5)} 条(机械组合) → {OUT}")
- if __name__ == "__main__":
- main()
|