阿里云自研Python LLM SDK为LLM应用提供高质量的埋点能力,并自动上报链路数据至可观测链路 OpenTelemetry 版。数据上报成功后,可观测链路 OpenTelemetry 版即可开始监控应用,您可以查看LLM领域的新版TraceView,更直观地分析不同操作类型的输入输出、Token消耗等信息。
LLM调用链分析功能正在内测中,如需体验该功能,请加入钉钉群(群号:67690017432)获取帮助。
前提条件
背景信息
Python LLM SDK是阿里云可观测产品自研的Python语言instrumentor SDK,其基于OpenTelemetry标准实现了自动化埋点能力,支持追踪LLM应用程序。
LlamaIndex插件
通过依赖库产生的追踪信息完全兼容OpenTelemetry,您可以将追踪信息发送至可观测链路 OpenTelemetry 版然后查看相关数据。
兼容性
llama-index
和aliyun-instrumentation-llama-index
的版本要求如下。
llama-index版本 | aliyun-instrumentation-llama-index版本 |
≥0.10.0, <0.10.43 | ≥1.0.1 |
上报LLM数据
安装阿里云Python SDK:请加入钉钉群67690017432咨询。
为LLM应用埋点。
重要埋点程序需要在初始化中进行,即在业务代码运行之前添加。具体上报操作,请参见官方文档。
请将
endpoint
和Authentication
替换为前提条件中获取的接入点和鉴权Token。
以下Python代码用于设置
AliyunLlamaIndexInstrumentor
追踪llama-index
,并将追踪信息上报至可观测链路 OpenTelemetry 版控制台。####################################### from aliyun.instrumentation.llama_index import AliyunLlamaIndexInstrumentor # 这个包内包含了透传自定义 attributes 的能力 from aliyun.instrumentation.context.context import set_custom_attributes ####################################### from opentelemetry import trace from opentelemetry.sdk.resources import Resource, SERVICE_NAME, SERVICE_VERSION,HOST_NAME from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import BatchSpanProcessor, ConsoleSpanExporter from opentelemetry.exporter.otlp.proto.grpc.trace_exporter import OTLPSpanExporter as OTLPSpanGrpcExporter resource = Resource(attributes={ SERVICE_NAME: "<service-name>", HOST_NAME: "<host-name>" }) # 使用GRPC协议上报,从接入中心获取endpoint以及header span_processor = BatchSpanProcessor(OTLPSpanGrpcExporter( endpoint="<endpoint>", headers=("Authentication=<token>") )) provider = TracerProvider(resource=resource) provider.add_span_processor(span_processor) trace.set_tracer_provider(provider) # aliyun llama-index instrumentor AliyunLlamaIndexInstrumentor().instrument()
DashScope插件
通过依赖库产生的追踪信息完全兼容OpenTelemetry,您可以将追踪信息发送至可观测链路 OpenTelemetry 版然后查看相关数据。
上报LLM数据
安装阿里云Python SDK:请加入钉钉群67690017432咨询。
为LLM应用埋点。
以下Python代码用于设置
AliyunDashScopeInstrumentor
追踪dashscope
,并将追踪信息上报至可观测链路 OpenTelemetry 版控制台。说明请将
xtrace_endpoint
替换为前提条件中获取的接入点信息。要运行以下示例,您需要先开通DashScope。
# coding=utf-8 import dashscope from dashscope import Generation from http import HTTPStatus import json from aliyun.instrumentation.dashscope import AliyunDashScopeInstrumentor from opentelemetry.sdk.resources import Resource, SERVICE_NAME, SERVICE_VERSION from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ConsoleSpanExporter,BatchSpanProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as OTLPSpanHttpExporter from opentelemetry import trace resource = Resource( attributes={ SERVICE_NAME: 'aliyun_llm_demo_test', SERVICE_VERSION: '1.0.0', "source": "python agent", # "telemetry.sdk.language": "Python", } ) xtrace_endpoint = '<your_endpoint>' span_exporter = BatchSpanProcessor(OTLPSpanHttpExporter( endpoint=xtrace_endpoint, )) provider = TracerProvider(resource=resource) provider.add_span_processor( span_exporter ) # 通过 OTLPSpanExporter 上报Trace provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter())) # 在控制台输出Trace trace.set_tracer_provider(provider) AliyunDashScopeInstrumentor().instrument()
OpenAI插件
兼容性
OpenAI
与aliyun-instrumentation-openai
的版本要求如下。
OpenAI版本 | aliyun-instrumentation-openai版本 |
≥1.0.0 | ≥1.0.0 |
上报LLM数据
安装阿里云Python SDK:请加入钉钉群67690017432咨询。
为LLM应用埋点。
以下Python代码用于设置
AliyunOpenAIInstrumentor
追踪openai
,并将追踪信息上报至可观测链路 OpenTelemetry 版控制台。说明请将
xtrace_endpoint
替换为前提条件中获取的接入点信息。要运行以下示例,您需要先开通DashScope。
# coding=utf-8 from http import HTTPStatus import json from aliyun.instrumentation.openai import AliyunOpenAIInstrumentor from opentelemetry.sdk.resources import Resource, SERVICE_NAME, SERVICE_VERSION from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ConsoleSpanExporter,BatchSpanProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as OTLPSpanHttpExporter from opentelemetry import trace resource = Resource( attributes={ SERVICE_NAME: 'aliyun_llm_demo_test', SERVICE_VERSION: '1.0.0', "source": "python agent", } ) xtrace_endpoint = '<your_endpoint>' span_exporter = BatchSpanProcessor(OTLPSpanHttpExporter( endpoint=xtrace_endpoint, )) provider = TracerProvider(resource=resource) provider.add_span_processor( span_exporter ) # 通过 OTLPSpanExporter 上报Trace provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter())) # 在控制台输出Trace trace.set_tracer_provider(provider) AliyunOpenAIInstrumentor().instrument()
LangChain插件
兼容性
langchain
与aliyun-instrumentation-langchain
的版本要求如下。
langchain-core版本 | aliyun-instrumentation-langchain版本 |
≥0.1.0 | ≥1.0.0 |
上报LLM数据
安装阿里云Python SDK:请加入钉钉群67690017432咨询。
为LLM应用埋点。
以下Python代码用于设置
AliyunLangChainInstrumentor
追踪langchain
,并将追踪信息上报至可观测链路 OpenTelemetry 版控制台。说明请将
xtrace_endpoint
替换为前提条件中获取的接入点信息。要运行以下示例,您需要先开通DashScope。
# coding=utf-8 from http import HTTPStatus import json from aliyun.instrumentation.langchain import AliyunLangChainInstrumentor from opentelemetry.sdk.resources import Resource, SERVICE_NAME, SERVICE_VERSION from opentelemetry.sdk.trace import TracerProvider from opentelemetry.sdk.trace.export import ConsoleSpanExporter,BatchSpanProcessor from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter as OTLPSpanHttpExporter from opentelemetry import trace resource = Resource( attributes={ SERVICE_NAME: 'aliyun_llm_demo_test', SERVICE_VERSION: '1.0.0', "source": "python agent", } ) xtrace_endpoint = '<your_endpoint>' span_exporter = BatchSpanProcessor(OTLPSpanHttpExporter( endpoint=xtrace_endpoint, )) provider = TracerProvider(resource=resource) provider.add_span_processor( span_exporter ) # 通过 OTLPSpanExporter 上报Trace provider.add_span_processor(BatchSpanProcessor(ConsoleSpanExporter())) # 在控制台输出Trace trace.set_tracer_provider(provider) AliyunLangChainInstrumentor().instrument()