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.LiteralClient与literalai.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_size | int | 5 | LiteralClient 批量上报日志的批次大小。 |
api_key | Optional[str] | None | Literal AI API Key。为None时从环境变量LITERAL_API_KEY读取。 |
url | Optional[str] | None | Literal AI 实例 Base URL。为None时从环境变量LITERAL_API_URL读取,云端默认https://cloud.getliteral.ai。 |
environment | Optional[str] | None | 环境标识(如production、development),会被转换为literalai.my_types.Environment类型。 |
disabled | bool | False | 是否禁用上报能力。 |
这些参数会被直接透传给LiteralClient(batch_size=..., api_key=..., url=..., environment=..., disabled=...),用于构造底层客户端。也就是说,参数的取值与语义以 Literal AI Python SDK 为准,LlamaIndex 侧仅做透传与类型转换。
在调用set_global_handler("literalai")时不传任何参数,是最省事的用法——此时所有配置都依赖环境变量LITERAL_API_KEY与LITERAL_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_KEY与LITERAL_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支持wandb、openinference、arize_phoenix、honeyhive、promptlayer、deepeval、simple、argilla、langfuse、agentops、literalai、opik等多种模式。这种统一入口设计意味着:切换可观测性后端只需修改set_global_handler的入参,业务代码无需任何改动,literalai是其中一键接入成本最低的方案之一。
使用前提与限制说明
- 版本要求:本集成要求 Python >=3.10,且
llama-index-core版本在>=0.13.0,<0.15之间(见 pyproject.toml);若你的项目使用更老或更新的 core 版本,需先确认兼容性。 - 环境变量约定:未显式传参时,需设置
LITERAL_API_KEY与LITERAL_API_URL;该约定同时出现在官方 observability 文档与示例代码中。 - 前提服务:需要可访问的 Literal AI 云端实例或自托管实例;示例代码默认依赖 OpenAI(需
OPENAI_API_KEY),实际接入时可替换为任意 LlamaIndex 支持的 LLM。 - 只读接入:集成仅负责向 Literal AI 上报观测数据,不会修改你的索引、文档或查询逻辑,属于纯观测性质的旁路组件。
总结
llama-index-callbacks-literalai以极简的代码量(一个工厂函数 + 一个事件处理器)为 LlamaIndex RAG 管道补齐了 Literal AI 的可观测性与评估能力。核心要点可归纳为:
- 接入成本低:
pip install两个包后,一行set_global_handler("literalai")即可生效; - 配置灵活:
api_key、url、batch_size、environment、disabled五个参数全部可选,默认走环境变量; - 机制清晰:依赖 LiteralClient 的
instrument_llamaindex()插桩,配合QueryEndEvent触发缓存 flush,实现查询粒度的自动上报; - 定位明确:它是 LlamaIndex 可观测性生态中的评估与监控选项,适合需要对话线程级追溯与 Agent 运行分析的团队。
【免费下载链接】llama_indexLlamaIndex is the document processing platform for AI项目地址: https://gitcode.com/GitHub_Trending/ll/llama_index
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考