llama_index [Bug]:当使用自定义查询引擎进行查询时,WandB追踪无法工作,

dfty9e19  于 2个月前  发布在  其他
关注(0)|答案(2)|浏览(37)

运行自定义查询引擎并使用wandb回调时,不会在wandb中跟踪和记录链。

版本:0.10.20

重现步骤:
我正在使用一个自定义查询引擎:

class CustomQueryEngine(CustomQueryEngine):
    """RAG Query Engine to integrate wandb"""
    """
https://github.com/run-llama/llama_index/blob/8eb59bdb84637c8043624f12736fc5f3995835ac/llama-index-core/llama_index/core/query_engine/custom.py#L39C1-L40C1
跟踪逻辑可以在这里找到 ^
"""
    retriever: BaseRetriever
    response_synthesizer: BaseSynthesizer
    llm: OpenAI
    qa_prompt: PromptTemplate
    callback_manager: CallbackManager = Field(
        default_factory=lambda: CallbackManager([Settings.callback_manager]), exclude=True
    )

并使用以下方式设置回调:

`llama_debug = LlamaDebugHandler(print_trace_on_end=True) run_args = dict( project="rag_eval_test", ) wandb_callback = WandbCallbackHandler(run_args=run_args) Settings.callback_manager = CallbackManager([llama_debug, wandb_callback])`

使用.query运行查询引擎时,不会跟踪LLM和合成链。
查看:

def query(self, str_or_query_bundle: QueryType) -> RESPONSE_TYPE: with self.callback_manager.as_trace("query"): # if query bundle, just run the query if isinstance(str_or_query_bundle, QueryBundle): query_str = str_or_query_bundle.query_str else: query_str = str_or_query_bundle raw_response = self.custom_query(query_str) return ( Response(raw_response) if isinstance(raw_response, str) else raw_response )

在这里找到:https://github.com/run-llama/llama_index/blob/8eb59bdb84637c8043624f12736fc5f3995835ac/llama-index-core/llama_index/core/query_engine/custom.py#L39C1-L40C1
当查询被继承并通过它运行custom_query时,跟踪应该自动发生。
我做错了什么吗?
相关日志/回溯

2eafrhcq

2eafrhcq1#

嘿,@abdelatifsd,很高兴看到你回来!😄希望自从我们上次聊天以来,你一直过得很好。
根据你提供的信息,问题似乎与自定义查询引擎的操作如何被WandB回调处理有关。WandB回调处理器的方法根据事件类型处理输入和输出,但没有迹象表明自定义查询会触发不同的行为或日志记录。
如果自定义查询引擎的查询不触发 QUERY 事件类型,或者自定义查询的结构使得现有的有效负载处理无法识别或正确记录它们,这可能导致观察到的问题。
此外,方法 _ensure_run 确保在记录事件之前激活WandB运行,但没有明确的错误处理或日志记录表明无法记录特定事件。这意味着如果自定义查询引擎的操作与预期的事件类型不一致,或者WandB运行设置有问题,回调处理器可能不会明确标记缺乏跟踪和日志记录。
至于 CallbackManager 类中的 as_trace 方法,它作为用于管理跟踪生命周期的上下文管理器实现。当进入时,它负责启动跟踪,并确保在退出时结束跟踪,即使出现异常也是如此。该方法接受一个 trace_id 作为参数,用于标识跟踪。当在 custom_query 方法中使用时, as_trace 方法将在查询执行期间对查询执行进行跟踪,从而允许跟踪所有发生的事件。
为了帮助我们更好地理解问题,你能提供更多关于自定义查询引擎如何与WandB回调集成并触发事件的信息吗?具体来说,了解自定义查询的结构以及它们是否旨在触发 QUERY 事件类型或另一个事件类型将很有帮助。此外,有关WandB运行设置的任何信息以及已知的问题或其特殊之处也将是有用的。
要获取更多详细信息,请参阅 CallbackManagerWandbCallbackHandler 类的源代码。

来源

关于 Dosu

此响应旨在节省您的时间并使其有用。它不是精确的解决方案,而是您自己研究的起点。
帮助我变得更有用!如果这有帮助请留下一个👍,如果无关请留下一个👎。
如果你想继续对话,请以 @dosu-bot 开头回复。

0h4hbjxa

0h4hbjxa2#

我希望在转向新的仪器模块而不是(现在遗留的)回调系统时,这个问题能够得到解决。

相关问题