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.
This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.
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 ( ) )