Bug描述
我希望从RAGAS获取指标,但是当我在EC2上本地下载模型时,指标给了我答案,但是当我使用Sagemaker端点作为LLM时,它会报错。
错误信息是asyncio错误,我需要使用nest.apply()。我已经这样做了,但实际的错误信息是无法重用已经等待的协程。
版本
0.10.55
重现步骤
这里是可以运行以产生错误信息的代码:
import nest_asyncio
llm = SageMakerLLM(
endpoint_name=<>,
region_name=<>
)
embed_model = HuggingFaceEmbedding(model_name="sentence-transformers/all-mpnet-base-v2", device="cuda")
Settings.llm = llm
Settings.embed_model = embed_model
nest_asyncio.apply()
storage_context = StorageContext.from_defaults(persist_dir=<>)
index = load_index_from_storage(storage_context)
# define evaluator
evaluator = FaithfulnessEvaluator(llm=llm)
# query index
query_engine = index.as_query_engine()
query = "What battles took place in New York City in the American Revolution?"
response = query_engine.query("What battles took place in New York City in the American Revolution?")
eval_result = evaluator.evaluate_response(query=query, response=response)
print(str(eval_result.passing))
相关日志/回溯
- 无响应*
4条答案
按热度按时间ryhaxcpt1#
要解决在将RAGAS与
llama_index
集成时,使用SageMaker端点作为语言模型时出现的"无法重用已等待的协程"错误,您需要确保每个协程只被等待一次。这种错误通常发生在一个协程被多次等待的情况下,而这在Python中是不允许的。在您提供的代码中,异步方法
achat
、astream_chat
、acomplete
和astream_complete
没有实现,会引发NotImplementedError
。您需要正确地实现这些方法。以下是如何实现
acomplete
方法以避免"无法重用已等待的协程"错误的示例:如果您计划使用其他异步方法,请确保为它们也实现类似的更改。
此外,您还可以参考
llama_index
库中的SageMakerLLM
类,以获取更多关于如何设置和使用SageMaker端点的上下文信息。以下是一个示例设置:为了进一步确保协程得到正确的管理,您可以使用来自
llama_index
库的实用函数,如run_async_tasks
和batch_gather
,它们有助于高效地运行多个异步任务:holgip5t2#
请检查一下,伙计?
ca1c2owp3#
忠实度评估器来自拉格斯?还是来自llamaindex?你漏掉了导入语句,以及应用nest asyncio后的堆栈跟踪。
nhaq1z214#
抱歉。我将尽快回复他们。
但是,从非常高的程度上来说,我正在使用lamindex的Sagemaker端点模块从Sagemaker端点加载我的LLM。
然后我运行ragas评估指标。它说没有为它实现一个完整的函数。