LlamaIndex × Literal AI 集成指南:为 RAG 管道一键开启 LLM 可观测性与评估
2026/9/12 5:20:18 网站建设 项目流程

LlamaIndex × Literal AI 集成指南:为 RAG 管道一键开启 LLM 可观测性与评估

【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index

本指南围绕 LlamaIndex 官方回调集成包llama-index-callbacks-literalai展开,讲解如何将 LlamaIndex 构建的 RAG 应用无缝接入 Literal AI,实现对话线程、Agent 运行过程的自动日志记录、LLM 可观测性与评估。读完本文,你将掌握该集成的安装方式、一行代码接入方法、全部配置参数及其底层实现原理,并能基于仓库源码理解其事件分发与缓存刷新的工作机制。

集成概览:什么是 Literal AI Callbacks 集成

Literal AI 是一个面向 LLM 应用的评估(Evaluation)与可观测性(Observability)平台,面向工程与产品团队,帮助他们在构建 LLM 应用时打通提示词工程(Prompt Engineering)、LLM 可观测性、LLM 评估与 LLM 监控的协作开发闭环。其核心能力包括自动记录对话线程(Conversation Threads)与 Agent 运行过程(Agent Runs)。

本项目提供的llama-index-callbacks-literalai集成包,正是为了让 LlamaIndex 用户以最小成本获得上述能力:它通过 LlamaIndex 的全局回调(Callback)机制,为 RAG 管道提供 Literal AI 的“一键可观测性”(one-click observability)。该包声明于 pyproject.toml,版本为 1.4.0,要求 Python >=3.10 且依赖llama-index-core>=0.13.0,<0.15

从源码结构看,该集成包非常精简,仅包含三个核心文件:

  • base.py:集成核心,定义literalai_callback_handler工厂函数;
  • init.py:导出literalai_callback_handler
  • literalai_example.py:可直接运行的接入示例。

快速开始:三步接入 Literal AI

1. 注册账号并获取 API Key

最简单的方式是注册 Literal AI 的云端实例(cloud.getliteral.ai)。注册完成后,进入项目的Settings页面获取你的 API Key,即可开始记录日志。若你使用自托管的 Literal AI 实例,还需要记下其 Base URL。

2. 安装依赖

该集成本身通过llama-index-callbacks-literalai包安装(LlamaIndex 全局处理器机制会自动导入它),同时其底层依赖 Literal AI 官方 Python SDK。安装命令如下:

pip install llama-index-callbacks-literalai literalai

需要注意:literalaiSDK 是运行时的硬性前置依赖。在 base.py 中,工厂函数内部通过try块导入literalai.LiteralClientliteralai.my_types.Environment,若导入失败会抛出ImportError,提示信息明确要求执行pip install -U literalai。也就是说,即使llama-index-callbacks-literalai已安装,缺少literalaiSDK 时集成仍无法工作。

3. 一行代码开启全局处理

在你的应用代码入口处,调用set_global_handler并传入模式名"literalai"

from llama_index.core import set_global_handler # API Key 与 Base URL 通过环境变量提供: # LITERAL_API_KEY, LITERAL_API_URL set_global_handler("literalai")

这段代码来自 observability 文档。set_global_handler定义于 global_handlers.py,它会把创建的处理器赋值给llama_index.core.global_handler,从而在整个应用生命周期内生效。当eval_mode == "literalai"时,create_global_handler 会从llama_index.callbacks.literalai导入literalai_callback_handler并传入所有**eval_params——如果包未安装,则抛出ImportError并提示执行pip install llama-index-callbacks-literalai

配置参数详解

literalai_callback_handler工厂函数(base.py)接受以下参数,全部可省略:

参数类型默认值说明
batch_sizeint5LiteralClient 批量上报日志的批次大小。
api_keyOptional[str]NoneLiteral AI API Key。为None时从环境变量LITERAL_API_KEY读取。
urlOptional[str]NoneLiteral AI 实例 Base URL。为None时从环境变量LITERAL_API_URL读取,云端默认https://cloud.getliteral.ai
environmentOptional[str]None环境标识(如productiondevelopment),会被转换为literalai.my_types.Environment类型。
disabledboolFalse是否禁用上报能力。

这些参数会被直接透传给LiteralClient(batch_size=..., api_key=..., url=..., environment=..., disabled=...),用于构造底层客户端。也就是说,参数的取值与语义以 Literal AI Python SDK 为准,LlamaIndex 侧仅做透传与类型转换。

在调用set_global_handler("literalai")时不传任何参数,是最省事的用法——此时所有配置都依赖环境变量LITERAL_API_KEYLITERAL_API_URL,这也是官方推荐的做法。若需显式覆盖,也可像 literalai_example.py 中注释展示的那样逐一传入:

set_global_handler( "literalai", api_key="lsk_xxx", url="https://cloud.getliteral.ai", batch_size=5, environment=None, disabled=False, )

完整可运行示例

仓库在 examples/literalai_example.py 中提供了一个端到端示例:先注册全局处理器,再构建一个基于向量索引的查询引擎,最后连续发起三个问题,所有查询过程都会被自动记录到 Literal AI:

from llama_index.core import Document, VectorStoreIndex, set_global_handler # 所有配置参数均可省略。若未提供 api_key 和 url, # 请通过环境变量 LITERAL_API_KEY、LITERAL_API_URL 提供 set_global_handler( "literalai", # api_key="lsk_xxx", # url="https://cloud.getliteral.ai", # batch_size=5, # environment=None, # disabled=False ) # 该示例默认使用 OpenAI,请设置 OPENAI_API_KEY index = VectorStoreIndex.from_documents([Document.example()]) query_engine = index.as_query_engine() questions = [ "Tell me about LLMs", "How do you fine-tune a neural network ?", "What is RAG ?", ] for question in questions: print(f"> \033[92m{question}\033[0m") response = query_engine.query(question) print(response)

运行此脚本(注意预先配置OPENAI_API_KEYLITERAL_API_KEY)后,你可以在 Literal AI 控制台中逐条查看每次查询对应的对话线程、使用的提示词、模型调用与响应内容。

底层原理:从事件分发到缓存刷新

理解这个集成如何工作,关键在于看 base.py 的完整实现流程,它分为三层:

第一层:构造并插桩 Literal Client

from literalai import LiteralClient from literalai.my_types import Environment literalai_client = LiteralClient( batch_size=batch_size, api_key=api_key, url=url, environment=cast(Environment, environment), disabled=disabled, ) literalai_client.instrument_llamaindex()

调用instrument_llamaindex()后,LiteralClient 会自动监听 LlamaIndex 内部的 LLM 调用与 Agent 执行过程,这正是“对话线程与 Agent 运行自动记录”能力的来源。

第二层:注册 QueryEnd 事件处理器

集成通过 LlamaIndex 的 Instrumentation 事件系统(llama_index.core.instrumentation)来感知查询生命周期:

from llama_index.core.instrumentation import get_dispatcher from llama_index.core.instrumentation.event_handlers import BaseEventHandler from llama_index.core.instrumentation.events.query import QueryEndEvent class QueryEndEventHandler(BaseEventHandler): """该处理器会在每次查询结束时刷新 Literal Client 缓存到 Literal AI。""" @classmethod def class_name(cls) -> str: return "QueryEndEventHandler" def handle(self, event: BaseEvent, **kwargs) -> None: try: if isinstance(event, QueryEndEvent): literalai_client.flush() except Exception as e: logging.error( "Error in Literal AI global handler : %s", str(e), exc_info=True, ) dispatcher = get_dispatcher() event_handler = QueryEndEventHandler() dispatcher.add_event_handler(event_handler)

这段代码表明:QueryEndEventHandler订阅了全局 dispatcher 的QueryEndEvent,一旦某次query_engine.query()结束,就调用literalai_client.flush()把缓存的日志批量推送到 Literal AI 服务端。

第三层:容错与异常处理

  • literalaiSDK 未安装,立即抛出带安装指引的ImportError
  • flush()过程中出现异常(例如网络错误),处理器不会让整个查询崩溃,而是通过logging.error记录错误信息后继续执行。

从源码结构看,这种“缓存 + 查询结束统一刷新 + 异常隔离”的设计,兼顾了性能(批量上报、默认batch_size=5)与稳定性(刷新失败不影响业务查询)。

在 LlamaIndex 可观测性体系中的位置

该集成隶属于 LlamaIndex 的回调与可观测性(Observability)模块。在 observability 文档 中,Literal AI 与 Langfuse、Comet Opik、Arize Phoenix 等并列,共同构成 LlamaIndex 的第三方可观测性生态。官方将其定位为 LLM 评估与可观测性方案,特别强调对话线程与 Agent 运行的自动日志能力。

从 global_handlers.py 可以看到,set_global_handler支持wandbopeninferencearize_phoenixhoneyhivepromptlayerdeepevalsimpleargillalangfuseagentopsliteralaiopik等多种模式。这种统一入口设计意味着:切换可观测性后端只需修改set_global_handler的入参,业务代码无需任何改动,literalai是其中一键接入成本最低的方案之一。

使用前提与限制说明

  • 版本要求:本集成要求 Python >=3.10,且llama-index-core版本在>=0.13.0,<0.15之间(见 pyproject.toml);若你的项目使用更老或更新的 core 版本,需先确认兼容性。
  • 环境变量约定:未显式传参时,需设置LITERAL_API_KEYLITERAL_API_URL;该约定同时出现在官方 observability 文档与示例代码中。
  • 前提服务:需要可访问的 Literal AI 云端实例或自托管实例;示例代码默认依赖 OpenAI(需OPENAI_API_KEY),实际接入时可替换为任意 LlamaIndex 支持的 LLM。
  • 只读接入:集成仅负责向 Literal AI 上报观测数据,不会修改你的索引、文档或查询逻辑,属于纯观测性质的旁路组件。

总结

llama-index-callbacks-literalai以极简的代码量(一个工厂函数 + 一个事件处理器)为 LlamaIndex RAG 管道补齐了 Literal AI 的可观测性与评估能力。核心要点可归纳为:

  1. 接入成本低pip install两个包后,一行set_global_handler("literalai")即可生效;
  2. 配置灵活api_keyurlbatch_sizeenvironmentdisabled五个参数全部可选,默认走环境变量;
  3. 机制清晰:依赖 LiteralClient 的instrument_llamaindex()插桩,配合QueryEndEvent触发缓存 flush,实现查询粒度的自动上报;
  4. 定位明确:它是 LlamaIndex 可观测性生态中的评估与监控选项,适合需要对话线程级追溯与 Agent 运行分析的团队。

【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询