test_definition.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. """Info Definition Generator Test - 从文本自动生成关键信息定义的示例.
  2. 演示如何使用 InfoExtractor.extract_definition 从输入文本中
  3. 自动生成结构化的关键信息定义 JSON。
  4. 用法:
  5. python test_definition.py
  6. """
  7. from __future__ import annotations
  8. import json
  9. import logging
  10. import os
  11. from src.extractor import InfoExtractor
  12. logging.basicConfig(
  13. level=logging.INFO,
  14. format="%(asctime)s [%(levelname)s] %(name)s: %(message)s",
  15. )
  16. # 示例输入文本:与 test.py 一致,但仅用于生成信息定义
  17. SAMPLE_ARTICLE = (
  18. """保卫延安的命令
  19. 一、敌以五师十二旅约八万人进攻延安,经三天猛烈攻击,突破我第一线阵地,由于我军坚决英勇抵抗,敌伤亡甚大,困难增加,颇疲劳,今后将更甚。
  20. 二、我边区各兵团有坚决保卫延安任务,必须在三十里铺、松树岭线以南,甘泉、南泥湾、金盆湾地区再抗击十天至两星期(十六日至二十九日),才能取得外线配合,粉碎胡军进攻延安企图。为完成上述任务,各兵团守备任务区分如下:
  21. 1.独一旅、八旅、警七团为右翼兵团,归张宗逊廖汉生同志指挥,在道佐铺、甘泉、大小劳山、清泉沟、山神庙地区组织防御战斗,坚决抗击。
  22. 2.教导旅、二纵队(王震部)为左翼兵团,归王震罗元发同志指挥,在王震未到前由罗元发同志指挥。教导旅在南泥湾、金盆湾、临真、松树岭地区组织防御战斗。上述地区至少坚持七天。
  23. 3.新四旅为中央兵团,以不少于四个营兵力在庙尔梁、程子沟(不含)、三十里铺地区组织防御战斗,坚决抗击由南泥湾向延安前进之敌。旅属炮兵应加强庙尔梁阵地。余为预备队,位置延安,兼防敌伞兵控制机场。该旅首长仍兼延安卫戍。
  24. 三、各守备兵团应利用地形组织短促火力,大量使用手榴弹、地雷杀伤敌人,掌握预备队,灵活反击夜袭歼灭敌小部。
  25. 四、在防御战斗中疲劳与消耗敌人之后,即可集五个旅以上打运动战,各个歼灭敌人,彻底粉碎敌人进攻。
  26. 此令
  27. 中央革命军事委员会主席 毛泽东
  28. 一九四七年三月十六日
  29. """
  30. )
  31. def main() -> None:
  32. # 复用 test.py 中的 API 配置
  33. extractor = InfoExtractor(
  34. model_name="glm-5.2",
  35. api_key=os.environ.get("INFO_EXTRACTOR_API_KEY", "18fadfc9bd0a49db85b95c36910ab347.oJDKNbgKqdEGzb77"),
  36. base_url=os.environ.get("INFO_EXTRACTOR_BASE_URL", "https://open.bigmodel.cn/api/coding/paas/v4"),
  37. temperature=0,
  38. max_retries=3,
  39. )
  40. # 从文本中提取关键信息定义
  41. definition = extractor.extract_definition(
  42. text=SAMPLE_ARTICLE,
  43. verbose=True,
  44. debug=True,
  45. )
  46. # 输出生成的定义
  47. print("\n" + "=" * 60)
  48. print("生成的关键信息定义:")
  49. print("=" * 60)
  50. print(json.dumps(definition, ensure_ascii=False, indent=2))
  51. if __name__ == "__main__":
  52. main()