import asyncio import inspect from utils.LightRagUtil import configure_logging, initialize_rag, print_stream from lightrag import QueryParam # 化学 data = [ {"NAME": "CESHI", "Q": "小学数学中有哪些常见模型?", "ChineseName": "语文"}, {"NAME": "Chemistry", "Q": "氢气与氧气燃烧的现象", "ChineseName": "化学"}, {"NAME": "Math", "Q": "氧化铁与硝酸的化学反应方程式是什么", "ChineseName": "数学"}, {"NAME": "Chinese", "Q": "氧化铁与硝酸的化学反应方程式是什么", "ChineseName": "语文"}] # 准备查询的科目 KEMU = "CESHI" # 查找索引号 idx = [i for i, d in enumerate(data) if d["NAME"] == KEMU][0] async def main(): try: user_prompt = "\n 1、资料中提供化学反应方程式的,一定要严格按提供的Latex公式输出,绝对不允许对Latex公式进行修改 !" user_prompt = user_prompt + "\n 2、如果资料中提供了图片的,一定要严格按照原文提供图片输出,不允许省略或不输出!" user_prompt = user_prompt + "\n 3、资料中提到的知识内容,需要判断是否与本次问题相关,不相关的绝对不要输出!" rag = await initialize_rag('Topic/' + data[idx]["NAME"]) resp = await rag.aquery( data[idx]["Q"], param=QueryParam(mode="hybrid", stream=True, user_prompt=user_prompt), # hybrid naive ) if inspect.isasyncgen(resp): await print_stream(resp) else: print(resp) except Exception as e: print(f"An error occurred: {e}") finally: if rag: await rag.finalize_storages() if __name__ == "__main__": configure_logging() asyncio.run(main())