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