Sdílet prostřednictvím


Povolení trasování a shromažďování zpětné vazby pro nasazení toku

Důležité

Položky označené (Preview) v tomto článku jsou aktuálně ve verzi Public Preview. Tato verze Preview je poskytována bez smlouvy o úrovni služeb a nedoporučujeme ji pro produkční úlohy. Některé funkce se nemusí podporovat nebo mohou mít omezené možnosti. Další informace najdete v dodatečných podmínkách použití pro verze Preview v Microsoft Azure.

Po nasazení aplikace Generative AI v produkčním prostředí můžete zlepšit pochopení a optimalizaci výkonu. Trasování dat pro každý požadavek, agregované metriky a zpětná vazba uživatelů hrají kritické role.

V tomto článku se dozvíte, jak povolit trasování, shromažďovat agregované metriky a shromažďovat názory uživatelů během odvozování nasazení toku.

Poznámka:

Pokud chcete zlepšit způsob průběžného monitorování nasazených aplikací (kromě toku výzvy), zvažte použití online vyhodnocení Azure AI.

Požadavky

  • Azure CLI a rozšíření Azure Machine Learning pro Azure CLI.
  • Projekt Azure AI Foundry Pokud projekt ještě nemáte, můžete ho vytvořit tady.
  • An Application Insights. Pokud ještě prostředek Application Insights nemáte, můžete ho vytvořit tady.
  • Řízení přístupu na základě role v Azure slouží k udělení přístupu k operacím ve službě Azure Machine Learning. Pokud chcete provést kroky v tomto článku, musíte mít oprávnění vlastníka nebo přispěvatele pro vybranou skupinu prostředků. Další informace najdete v tématu Řízení přístupu na základě role na portálu Azure AI Foundry.

Nasazení toku pro odvozování v reálném čase

Po správném otestování toku můžete tok nasadit v produkčním prostředí, a tok flex nebo tok DAG. V tomto článku jako příklad použijeme nasazení toku pro odvozování v reálném čase. Pro flex toky musíte připravit flow.flex.yaml soubor místo flow.dag.yaml.

Můžete také nasadit na jiné platformy, jako je kontejner Dockeru, cluster Kubernetes a další.

Poznámka:

K nasazení toku je potřeba použít nejnovější bitovou kopii základního toku výzvy, aby podporovala rozhraní API pro trasování a shromažďování zpětné vazby.

Povolení trasování a shromažďování systémových metrik pro vaše nasazení

Pokud k nasazení používáte portál Azure AI Foundry, můžete zapnout diagnostiku Application Insights v kroku Nasazení rozšířeného nastavení>v průvodci nasazením, jakým způsobem se data trasování a systémové metriky shromažďují do projektu propojeného s Application Insights.

Pokud používáte sadu SDK nebo rozhraní příkazového řádku, můžete přidat vlastnost app_insights_enabled: true do souboru yaml nasazení, která shromažďuje data do projektu propojeného s Application Insights.

app_insights_enabled: true

Další Application Insights můžete také zadat pomocí proměnné APPLICATIONINSIGHTS_CONNECTION_STRING prostředí v souboru yaml nasazení následujícím způsobem. Připojovací řetězec application Insights najdete na stránce Přehled na webu Azure Portal.

environment_variables:
  APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string>

Poznámka:

Pokud nastavíte app_insights_enabled: true jenom projekt, ale váš projekt nemá propojený prostředek Application Insights, nasazení se nezdaří, ale nebudou shromážděna žádná data.

Pokud současně zadáte proměnnou app_insights_enabled: true prostředí i výše uvedenou proměnnou prostředí, data a metriky trasování se odešlou do projektu propojeného s Application Insights. Proto pokud chcete zadat jinou službu Application Insights, stačí zachovat proměnnou prostředí.

Pokud nasadíte na jiné platformy, můžete také použít proměnnou APPLICATIONINSIGHTS_CONNECTION_STRING: <connection_string> prostředí ke shromažďování dat trasování a metrik pro speicifed Application Insights.

Zobrazení dat trasování ve službě Application Insights

Trasuje zaznamenává konkrétní události nebo stav aplikace během provádění. Může obsahovat data o voláních funkcí, hodnotách proměnných, systémových událostech a dalších událostech. Trasování pomáhá rozdělit komponenty aplikace na samostatné vstupy a výstupy, což je zásadní pro ladění a pochopení aplikace. Další informace najdete tady o trasováních. Data trasování se řídí specifikací OpenTelemetry.

Podrobné trasování můžete zobrazit v zadané službě Application Insights. Následující snímek obrazovky ukazuje příklad události nasazeného toku obsahujícího více uzlů. V Application Insights –> Prošetření –> Vyhledávání transakcí a můžete vybrat každý uzel, abyste zobrazili podrobné trasování.

Události typu závislostí zaznamenávají volání z vašich nasazení. Název této události je název složky toku. Přečtěte si další informace o vyhledávání a diagnostice transakcí v Application Insights.

Zobrazení systémových metrik v Application Insights

Název metrik Typ Dimenze Popis
token_consumption counter -téct
-uzel
- llm_engine
- token_type: prompt_tokens: Vstupní tokeny rozhraní LLM API; completion_tokens: Tokeny odpovědí rozhraní LLM API ; total_tokens = prompt_tokens + completion tokens
Metriky spotřeby tokenů OpenAI
flow_latency histogram tok, response_code, streamování, response_type náklady na provedení požadavku, response_type znamená, jestli je úplná/ firstbyte/lastbyte
flow_request counter tok, response_code, výjimka, streamování počet požadavků toku
node_latency histogram flow, node, run_status Náklady na spuštění uzlu
node_request counter flow, node, exception, run_status Počet spuštění uzlu
rpc_latency histogram flow, node, api_call Náklady na rpc
rpc_request counter flow, node, api_call, exception Počet rpc
flow_streaming_response_duration histogram tok streaming response sending cost, from sending first byte to sending last byte

Výchozí application Insights pracovního prostoru najdete na stránce přehledu pracovního prostoru na webu Azure Portal.

  1. Otevřete Application Insights a v levém navigačním panelu vyberte Využití a odhadované náklady . Vyberte Vlastní metriky (Preview) a vyberte S dimenzemi a uložte změnu.
  2. V levém navigačním panelu vyberte kartu Metriky . V oboru názvů metrik vyberte standardní metrikypromptflow a metriky můžete prozkoumat z rozevíracího seznamu Metriky s různými metodami agregace.

Shromažďování názorů a odesílání do Application Insights

Obsluha toku výzvy poskytuje nové /feedback rozhraní API, které zákazníkovi pomůže shromáždit zpětnou vazbu. Datovou částí zpětné vazby můžou být libovolná data formátu JSON. Služba PF pomáhá zákazníkovi ukládat data zpětné vazby do rozsahu trasování. Data budou uložena do nakonfigurovaného cílového zákazníka vývozce trasování. Podporuje také šíření standardního trasovacího kontextu OpenTelemetry. Říká se, že bude respektovat kontext trasování nastavený v hlavičce požadavku a použít ho jako kontext nadřazeného rozsahu požadavku. K korelaci trasování zpětné vazby s trasováním žádosti o chat můžete využít funkci distribuovaného trasování trasování.

Následuje ukázkový kód, který ukazuje, jak určit skóre trasování nasazeného spravovaného koncového bodu a odeslat zpětnou vazbu do stejného rozsahu trasování žádosti o bodování. Tok má vstupy question a chat_historyvýstup answer. Po vyhodnocení koncového bodu shromáždíme zpětnou vazbu a pošleme ji do Application Insights zadanou při nasazování toku.

import urllib.request
import json
import os
import ssl
from opentelemetry import trace, context
from opentelemetry.baggage.propagation import W3CBaggagePropagator
from opentelemetry.trace.propagation.tracecontext import TraceContextTextMapPropagator
from opentelemetry.sdk.trace import TracerProvider

# Initialize your tracer
tracer = trace.get_tracer("my.genai.tracer")
trace.set_tracer_provider(TracerProvider())

# Request data goes here
# The example below assumes JSON formatting which may be updated
# depending on the format your endpoint expects.
data = {
    "question": "hello",
    "chat_history": []
}

body = str.encode(json.dumps(data))

url = 'https://basic-chat-endpoint-0506.eastus.inference.ml.azure.com/score'
feedback_url = 'https://basic-chat-endpoint-0506.eastus.inference.ml.azure.com/feedback'
# Replace this with the primary/secondary key, AMLToken, or Microsoft Entra ID token for the endpoint
api_key = ''
if not api_key:
    raise Exception("A key should be provided to invoke the endpoint")

# The azureml-model-deployment header will force the request to go to a specific deployment.
# Remove this header to have the request observe the endpoint traffic rules
headers = {'Content-Type':'application/json', 'Authorization':('Bearer '+ api_key), 'azureml-model-deployment': 'basic-chat-deployment' }

try:
    with tracer.start_as_current_span('genai-request') as span:

        ctx = context.get_current()
        TraceContextTextMapPropagator().inject(headers, ctx)
        print(headers)
        print(ctx)
        req = urllib.request.Request(url, body, headers)
        response = urllib.request.urlopen(req)

        result = response.read()
        print(result)

        # Now you can process the answer and collect feedback
        feedback = "thumbdown"  # Example feedback (modify as needed)

        # Make another request to save the feedback
        feedback_body = str.encode(json.dumps(feedback))
        feedback_req = urllib.request.Request(feedback_url, feedback_body, headers)
        urllib.request.urlopen(feedback_req)


except urllib.error.HTTPError as error:
    print("The request failed with status code: " + str(error.code))

    # Print the headers - they include the requert ID and the timestamp, which are useful for debugging the failure
    print(error.info())
    print(error.read().decode("utf8", 'ignore'))

Trasování žádosti můžete zobrazit spolu se zpětnou vazbou v Application Insights.

Rozšířené využití: Export trasování do vlastní služby kolektoru OpenTelemetry

V některých případech můžete chtít exportovat data trasování do nasazené služby kolektoru OTel, která je povolená nastavením "OTEL_EXPORTER_OTLP_ENDPOINT". Tento exportér použijte, pokud chcete přizpůsobit vlastní logiku zpracování rozsahu a vlastní trvalý cíl trasování.