接入 LLM 应用

最近更新时间:2025-03-03 16:08:52

我的收藏
大语言模型近年来呈现出快速增长的趋势,随着 DeepSeek 的强势出圈,AI 应用的门槛进一步降低,为各行业引入高效且低成本的解决方案,推动了人工智能落地应用的爆炸式发展。
大语言模型应用的运行涉及多个组件和复杂的交互过程,应用性能监控 APM 通过分布式追踪技术,清晰地展示请求在各个组件之间的调用链路,一旦出现故障,可以快速定位到问题所在的具体环节。同时,APM 可以实时监测模型应用的运行状态,及时发现异常行为并发出告警,使运维人员及时采取措施,避免问题扩大化。

支持的 LLM 组件与框架

LLM 应用可以基于 Traceloop 开源的 OpenLLMetry 项目进行接入,该项目完全兼容 OpenTelemetry 协议标准,能够和其他使用 OpenTelemetry 方案接入的应用实现链路信息互通。
OpenLLMetry 项目支持众多 LLM 组件与框架的自动埋点,请前往 项目主页 获取所有支持的组件与框架,以下将列出其中一部分供您参考。
支持的 LLM 组件与框架
链接
支持的 LLM 框架
支持的向量数据库
支持的向量数据库

接入流程

获取接入点与 token

1. 登录 腾讯云可观测平台 控制台。
2. 在左侧菜单栏中选择应用性能监控,单击应用列表 > 接入应用
3. 在右侧弹出的数据接入抽屉框中,单击 Python 语言。
4. 接入 Python 应用页面,选择您所要接入的地域以及业务系统
5. 选择接入协议类型OpenTelemetry
6. 上报方式选择您所想要的上报方式,获取您的接入点Token
说明:
内网上报:使用此上报方式,您的服务需运行在腾讯云 VPC。通过 VPC 直接联通,在避免外网通信的安全风险同时,可以节省上报流量开销。
外网上报:当您的服务部署在本地或非腾讯云 VPC 内,可以通过此方式上报数据。请注意外网通信存在安全风险,同时也会造成一定上报流量费用。

安装 traceloop-sdk

通过pip命令安装 traceloop-sdk,其中包含了对 OpenLLMetry 以及 OpenTelemetry-SDK 的相关依赖。
pip install traceloop-sdk

初始化配置

在 Python 项目的入口文件中引入 traceloop 和 OpenTelemetry-SDK,并根据前置步骤中获得的接入点以及 token 进行初始化。
说明:
在需要埋点的目标组件导入声明之前,就必须完成初始化,建议尽可能在入口文件的起始处添加初始化代码。
from traceloop.sdk import Traceloop
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.baggage.propagation import W3CBaggagePropagator
# 配置链路数据发送后端
# 尽可能在文件开头声明,一定要在目标埋点组件的导入声明前初始化
Traceloop.init(
app_name="<service_name>",
resource_attributes={
"token": "<token>",
"host.name": "<host_name>"
},
propagator=W3CBaggagePropagator,
processor=BatchSpanProcessor(
OTLPSpanExporter(endpoint="<endpoint>")
)
)
对应的字段说明如下,请根据实际情况进行替换。
<service_name> :应用名,多个使用相同 serviceName 接入的应用进程,在 APM 中会表现为相同应用下的多个实例。应用名最长63个字符,只能包含小写字母、数字及分隔符“ - ”,且必须以小写字母开头,数字或小写字母结尾。
<token> :前置步骤中拿到业务系统 Token。
<host.name>:该实例的主机名,是应用实例的唯一标识,通常情况下可以设置为应用实例的 IP 地址。
<endpoint> :前置步骤中拿到的接入点。

示例代码

Ollama 搭建的本地大模型应用为例,可以参考如下代码完成初始化配置。运行示例代码,需要安装 Ollama,并下载相关模型,本文使用的模型为开源推理模型 deepseek-r1:1.5b。
from traceloop.sdk import Traceloop
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.baggage.propagation import W3CBaggagePropagator

Traceloop.init(
app_name="<service_name>",
resource_attributes={
"token": "<token>",
"host.name": "<host_name>"
},
propagator=W3CBaggagePropagator,
processor=BatchSpanProcessor(
OTLPSpanExporter(endpoint="<endpoint>")
)
)

from ollama import chat
from ollama import ChatResponse

def ollama_chat():
response: ChatResponse = chat(model='deepseek-r1:1.5b', messages=[
{
'role': 'user',
'content': 'Tell a joke of OpenTelemetry',
},
])
print(response.message.content)
if __name__ == "__main__":
ollama_chat()
至此,LLM 应用已经完成了接入 APM 的所有工作。

自定义埋点增强

如果需要跟踪 LLM 相关框架与类库之外的业务场景,可以参照下述内容,使用 OpenTelemetry API 添加自定义埋点。本文仅展示最基本的自定义埋点方式,OpenTelemetry 社区提供了更多灵活的自定义埋点方式,具体使用方法可参考 OpenTelemetry 社区提供的 Python 自定义埋点文档
from traceloop.sdk import Traceloop
from opentelemetry import trace # 导入链路相关 SDK
from opentelemetry.sdk.trace.export import BatchSpanProcessor
from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter
from opentelemetry.baggage.propagation import W3CBaggagePropagator

Traceloop.init(
app_name="<service_name>",
resource_attributes={
"token": "<token>",
"host.name": "<host_name>"
},
propagator=W3CBaggagePropagator,
processor=BatchSpanProcessor(
OTLPSpanExporter(endpoint="<endpoint>")
)
)

from ollama import chat
from ollama import ChatResponse

tracer = trace.get_tracer(__name__) # init tracer

def ollama_chat():
response: ChatResponse = chat(model='deepseek-r1:1.5b', messages=[
{
'role': 'user',
'content': 'Tell a joke of OpenTelemetry',
},
])
print(response.message.content)
def main():
with tracer.start_as_current_span("entry func") as span: # create a span
span.set_attribute("func", "main") # set span attributes
ollama_chat()

if __name__ == "__main__":
main()
其中,trace.get_tracer(__name__)获取了 OpenTelemetry Tracer 对象,用于后续的自定义埋点增强。在main()函数中,通过tracer.start_as_current_span() 添加了一个新的 Span,并加入到链路上下文当中。

接入验证

完成接入工作后,启动 LLM 应用,应用就会向 APM 上报链路数据。在 应用性能监控 > 应用列表 页面将展示接入的应用,单击应用名称/ID 进入应用详情页,再选择实例监控,即可看到接入的应用实例。由于可观测数据的处理存在一定延时,如果接入后在控制台没有查询到应用或实例,请等待30秒左右。
同时,在 应用性能监控 > 链路追踪 中,也能够查询到相关的 Span 记录,通过单击第一列 traceID 对应的链接,可以进入链路详情视图分析链路的每个环节。

单击其中的 Span,能够获取更多详细信息,例如下图: