阿里云自研Python LLM SDK為LLM應用提供高質量的埋點能力,并自動上報鏈路數據至可觀測鏈路 OpenTelemetry 版。數據上報成功后,可觀測鏈路 OpenTelemetry 版即可開始監控應用,您可以查看LLM領域的新版TraceView,更直觀地分析不同操作類型的輸入輸出、Token消耗等信息。
LLM調用鏈分析功能正在內測中,如需體驗該功能,請加入釘釘群(群號:67690017432)獲取幫助。
前提條件
新版控制臺
登錄可觀測鏈路 OpenTelemetry 版控制臺,在左側導航欄單擊接入中心。
在開源框架區域單擊OpenTelemetry卡片。
在彈出的OpenTelemetry面板中選擇數據需要上報的地域。
說明初次接入的地域將會自動進行資源初始化。
選擇連接方式和上報方式,然后復制接入點信息。
連接方式:若您的服務部署在阿里云上,且所屬地域與選擇的接入地域一致,推薦使用阿里云內網方式,否則選擇公網方式。
上報方式:根據客戶端支持的協議類型選擇HTTP或gRPC協議上報數據。
舊版控制臺
在左側導航欄單擊集群配置,然后在右側頁面單擊接入點信息頁簽。
在頁面頂部選擇需要接入的地域,然后在集群信息區域打開顯示Token開關。
在客戶端采集工具區域單擊OpenTelemetry。
在相關信息列中,獲取接入點信息。
說明如果應用部署于阿里云生產環境,則選擇阿里云VPC網絡接入點,否則選擇公網接入點。
背景信息
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()