LangFuse 在 WrenAI 中的应用

LangFuse 介绍

在 AI 应用的开发过程中,日志记录和分析是不可或缺的环节,类似于传统软件的调试工具。LangFuse 正是专为 AI 应用设计的日志管理和分析基础设施,帮助开发者更高效地跟踪和优化 LLM(大语言模型)应用。

LangFuse 的主要功能

LangFuse 是一个开源的 LLM 工程平台,提供以下关键能力:

  • 监测(Monitoring):跟踪 LLM 应用的性能、成本和质量。
  • 分析(Analytics):提供详细的使用统计和性能指标。
  • 评估(Evaluation):比较不同模型和配置的性能。
  • 调试(Debugging):提供详细日志和错误追踪。
  • 集成(Integration):支持多种 LLM 框架和工具。
  • 提示管理(Prompt Management):集中管理和版本控制提示信息。

传统应用 vs. AI 应用

与传统软件应用相比,AI 应用的日志管理方式有所不同。以下是二者的核心区别:

功能 传统应用 AI 应用
日志收集 Observer Trace
日志分析 传统日志分析工具 Eval, Performance
提示管理 提示版本管理

LangFuse vs. 其他产品

除了 LangFuse,市面上还有一些类似的工具,例如 Helicone。二者的核心区别如下:

功能 LangFuse Helicone
作用 提供 API 调用 充当 LLM 代理
日志管理 详细日志跟踪 提供基础日志
部署方式 支持自托管和云端 支持自托管和云端

尽管许多开源项目已开始收费,但 LangFuse 依然提供独立部署的选项,展现了极大的开放性和灵活性。


LangFuse 的具体使用

1. 追踪(Trace)

LangFuse 允许开发者通过 @observe 注解来记录 LLM 应用的执行过程。例如:

@observe(name="Ask Retrieval")
async def run(
    self,
    query: str = "",
    tables: Optional[list[str]] = None,
    id: Optional[str] = None,
    history: Optional[AskHistory] = None,
):
    logger.info("Ask Retrieval pipeline is running...")
    return await self._pipe.execute(
        ["construct_retrieval_results"],
        inputs={
            "query": query,
            "tables": tables,
            "id": id or "",
            "history": history,
            **self._components,
            **self._configs,
        },
    )

这一注释会将追踪数据发送到 LangFuse 后端,开发者可以在 LangFuse 的仪表盘中查看详细日志。


2. 评估(Eval)

LangFuse 支持在 Trace 数据中添加 元数据(Meta Data),用于性能评估。例如:

@observe(name="Summary Trace", capture_input=False, capture_output=False)
def _average_score(self, meta: dict) -> None:
    langfuse_context.update_current_trace(
        session_id=meta.get("session_id"),
        user_id=meta.get("user_id"),
        metadata=trace_metadata(meta, type="summary"),
    )

    summary = {
        "query_count": meta["query_count"],
        "expected_batch_size": meta["expected_batch_size"],
        "actual_batch_size": meta["actual_batch_size"],
        "valid_eval_count": meta["actual_batch_size"] - self._failed_count,
    }
    langfuse_context.update_current_observation(output=summary)

    for name, scores in self._score_collector.items():
        langfuse_context.score_current_trace(
            name=name,
            value=sum(scores) / len(scores),
            comment=f"Average score for {name}",
        )

在这里,我们添加了多个追踪指标,并使用 langfuse_context.score_current_trace 方法对不同的性能指标进行打分。


3. 数据刷新

在完成日志记录和性能评估后,LangFuse 允许开发者刷新数据以确保所有日志都被正确存储:

write_prediction(meta, predictions)
langfuse_context.flush()

总结

LangFuse 是 AI 时代不可或缺的日志管理工具,能够帮助开发者:

  • 实时监测 AI 模型的性能
  • 分析并优化不同 LLM 配置
  • 提供详尽的日志追踪和错误定位
  • 与多种 LLM 框架无缝集成

目前,LangFuse 提供 云端部署自托管(Self-hosted) 选项,灵活满足不同场景的需求。对于希望优化 AI 应用调试和监控能力的开发者来说,LangFuse 绝对值得尝试!

🔗 了解更多:LangFuse 官方文档

Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐