You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

45 lines
1.8 KiB

2 weeks ago
import asyncio
import inspect
from Util.LightRagUtil import configure_logging, initialize_rag, print_stream
from lightrag import QueryParam
2 weeks ago
# 化学
2 weeks ago
data = [
2 weeks ago
# {"NAME": "Chemistry", "Q": "硝酸光照分解的化学反应方程式是什么", "ChineseName": "化学"},
{"NAME": "Chemistry", "Q": "氢气与氧气燃烧的现象", "ChineseName": "化学"},
2 weeks ago
{"NAME": "Math", "Q": "氧化铁与硝酸的化学反应方程式是什么", "ChineseName": "数学"},
{"NAME": "Chinese", "Q": "氧化铁与硝酸的化学反应方程式是什么", "ChineseName": "语文"}]
# 准备查询的科目
KEMU = "Chemistry"
# 查找索引号
idx = [i for i, d in enumerate(data) if d["NAME"] == KEMU][0]
2 weeks ago
2 weeks ago
2 weeks ago
async def main():
try:
2 weeks ago
user_prompt = "\n 1、资料中提供化学反应方程式的一定要严格按提供的Latex公式输出绝对不允许对Latex公式进行修改 "
2 weeks ago
user_prompt = user_prompt + "\n 2、如果资料中提供了图片的一定要严格按照原文提供图片输出不允许省略或不输出"
2 weeks ago
user_prompt = user_prompt + "\n 3、资料中提到的知识内容需要判断是否与本次问题相关不相关的绝对不要输出"
2 weeks ago
rag = await initialize_rag('Topic/' + data[idx]["NAME"])
2 weeks ago
resp = await rag.aquery(
2 weeks ago
data[idx]["Q"],
2 weeks ago
param=QueryParam(mode="hybrid", stream=True, user_prompt=user_prompt),
2 weeks ago
# hybrid naive
2 weeks ago
)
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())