llama_index [Bug]: RAGAS与llamindex集成问题

jchrr9hc  于 4个月前  发布在  其他
关注(0)|答案(4)|浏览(51)

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))

相关日志/回溯

  • 无响应*
ryhaxcpt

ryhaxcpt1#

要解决在将RAGAS与llama_index集成时,使用SageMaker端点作为语言模型时出现的"无法重用已等待的协程"错误,您需要确保每个协程只被等待一次。这种错误通常发生在一个协程被多次等待的情况下,而这在Python中是不允许的。

在您提供的代码中,异步方法achatastream_chatacompleteastream_complete没有实现,会引发NotImplementedError。您需要正确地实现这些方法。

以下是如何实现acomplete方法以避免"无法重用已等待的协程"错误的示例:

def `acomplete`():
    # 实现或使用AWS客户端库中的假设异步方法`invoke_endpoint_async`,确保协程被正确地等待且仅等待一次。
    pass

如果您计划使用其他异步方法,请确保为它们也实现类似的更改。

此外,您还可以参考llama_index库中的SageMakerLLM类,以获取更多关于如何设置和使用SageMaker端点的上下文信息。以下是一个示例设置:

from `llama_index` import `SageMakerLLM`

# 创建一个`SageMakerLLM`示例并进行配置

sagemaker_endpoint = `SageMakerLLM`(...)

为了进一步确保协程得到正确的管理,您可以使用来自llama_index库的实用函数,如run_async_tasksbatch_gather,它们有助于高效地运行多个异步任务:

from `llama_index` import `run_async_tasks`, `batch_gather`

# 使用这些实用程序函数来管理多个协程的执行,确保它们被正确地等待,避免出现"无法重用已等待的协程"错误。
holgip5t

holgip5t2#

请检查一下,伙计?

ca1c2owp

ca1c2owp3#

忠实度评估器来自拉格斯?还是来自llamaindex?你漏掉了导入语句,以及应用nest asyncio后的堆栈跟踪。

nhaq1z21

nhaq1z214#

抱歉。我将尽快回复他们。
但是,从非常高的程度上来说,我正在使用lamindex的Sagemaker端点模块从Sagemaker端点加载我的LLM。
然后我运行ragas评估指标。它说没有为它实现一个完整的函数。

相关问题