
Sessiot, tracet ja spanit LLM-havainnoinnissa: yksi näistä ei ole rakennetaso
Datadogin termisivu, Googlen ykköstulos haulle LLM-havainnointi sessiot tracet spanit, määrittelee näistä kolmesta sanasta kaksi. Ei kolmea. Puuttuva vastaa attribuuttia gen_ai.conversation.id, ja syy sen puuttumiseen on se, ettei OpenTelemetry-speksi koskaan tehnyt siitä rakennetasoa. Jos tarvitset ensin perustelut itse havainnoinnille, aloita tästä. Tämä artikkeli jatkaa siitä, mihin se jää: datamallista.
Keskeiset opit
- Spanit asettuvat tracejen sisään; tracet ryhmittävät sessioiksi. Sisäkkäisyys kulkee sisältä ulos: span, sitten trace, sitten sessio.
- Span on yksi ajastettu operaatio. Trace on yksi päästä päähän -pyyntö. Sessio on yksi monivuoroinen keskustelu.
- OpenTelemetryn GenAI-sopimukset määrittelevät spanit ja
gen_ai.conversation.id-attribuutin. Ne eivät määrittele sessiotasoa. - Tracen ja spanin ID:t kulkevat automaattisesti kontekstin mukana. Sessio-ID ei kulje. Asetat sen itse, jokaisella vuorolla.
Sessiot vs tracet vs spanit yhdellä silmäyksellä
LLM-havainnoinnissa span on yksi ajastettu operaatio (mallikutsu, hakuvaihe), trace on yhden pyynnön tuottama span-puu, ja sessio ryhmittää monta tracea samasta keskustelusta. Sisäkkäisyys kulkee sisäänpäin: spanit tracejen sisällä, tracet sessioiden sisällä. Kolmas ryhmittely on se, joka ei ole sitä miltä näyttää.
| Taso | Mitä se kietoo | Kuinka kauan se elää | Kuka asettaa ID:n | Mihin se vastaa | Tyypillinen määrä per keskustelu |
|---|---|---|---|---|---|
| Sessio | Monta tracea yhdestä käyttäjäkeskustelusta | Minuuteista päiviin; päättyy toimettomuusajastukseen tai eksplisiittiseen sulkemiseen (toimittajan määrittämä) | Sinä, manuaalisesti, jokaisella vuorolla | Onnistuiko koko keskustelu? | 1 |
| Trace | Yksi päästä päähän -pyyntö tai vuoro | Millisekunneista sekunteihin | Automaattinen (SDK / OTel) | Mitä tällä vuorolla tapahtui? | Yleensä 5–20 |
| Span | Yksi operaatio: haku, mallikutsu, työkalukutsu | Alimillisekunnista sekunteihin | Automaattinen (SDK / OTel) | Mikä vaihe oli hidas, väärä tai kallis? | Karkeasti 3–30 per trace |
Nuo määrä- ja elinikäluvut ovat tyypillisiä vaihteluvälejä, joita odottaisit RAG-chatbotissa tai agenttisilmukassa, eivät mittauksia kontrolloidusta testistä. Sinun lukusi eroavat. Mikä ei eroa: Sessio-rivi on se, joka ei ole speksin rakennetaso, ja osio "Sessiot: tason, jonka työkalusi todennäköisesti keksi" todistaa sen.
Mikä on span, ja mikä on spanin laji?
Span on yksi ajastettu operaatio, jolla on nimi, aloitusaikaleima, lopetusaikaleima, tilakoodi ja joukko avain-arvo-attribuutteja. LLM-tracingissä hyödyllinen data elää attribuuteissa: gen_ai.usage.input_tokens, gen_ai.usage.output_tokens ja gen_ai.request.model kertovat, mitä operaatio maksoi ja mikä malli sen ajoi.
Span on yksi operaatio, ei yksi funktiokutsu
Jokaisella spanilla on vanhemman span-ID -viittaus (tyhjä juurispanilla), joka rakentaa puun. Attribuuttijoukko on avoin: liität siihen mitä tahansa kontekstia tarvitset. OpenTelemetry GenAI -span-sopimukset (tila: Development) vaativat attribuutit gen_ai.operation.name ja gen_ai.provider.name jokaisessa GenAI-spanissa ja suosittelevat yllä olevia token-käyttöattribuutteja.
Yksi käytännön sääntö Datadogin termisivulta: LLM-, Workflow- ja Agent-spanit voivat toimia juurispanina; Tool-, Task-, Embedding- ja Retrieval-spanit eivät voi. Se on Datadogin sääntö, ei yleispätevä, mutta se on ainoa toimittaja, joka sen sanoo, ja se säästää sinut rakentamasta tracea, joka alkaa työkalukutsusta ilman vanhempaa.
Span-lajit: sama idea, viisi sanastoa
Jokainen työkalu tarvitsee tavan sanoa "tämä span on mallikutsu" erotettuna "tämä span on haku". Ne vain eivät sovi samasta sanasta:
| Työkalu | Sen sana "operaation lajille" | Arvot |
|---|---|---|
| OpenTelemetry GenAI | gen_ai.operation.name -attribuutti | 15 tunnettua arvoa (chat, embeddings, execute_tool, invoke_agent, retrieval ja 10 lisää); yhtä MUST käyttää, jos se sopii, mukautetut arvot sallittuja kun mikään ei sovi |
| Datadog | Span-laji | LLM, Workflow, Agent, Tool, Task, Embedding, Retrieval |
| OpenInference / Phoenix | Span-laji | CHAIN, LLM, TOOL, RETRIEVER, RERANKER, EMBEDDING, AGENT, GUARDRAIL, EVALUATOR, PROMPT |
| Langfuse | Observation-tyyppi | generation, span, event |
| LangSmith | Run-tyyppi | LLM, chain, tool, retriever |
OpenInference-speksi listaa kymmenen lajia. Datadog listaa seitsemän. OTel valitsee kolmannen reitin: sen GenAI-attribuuttirekisteri julkaisee 15 tunnettua arvoa attribuutille gen_ai.operation.name (chat, create_agent, create_memory, create_memory_store, delete_memory, delete_memory_store, embeddings, execute_tool, generate_content, invoke_agent, invoke_workflow, plan, retrieval, search_memory, text_completion) ja toteaa, että jos yksi niistä sopii, sitä arvoa MUST käyttää; mukautettua arvoa MAY käyttää vain kun mikään ei sovi. Kyse on siis puoliksi avoimesta enumista, ei sen puuttumisesta. Kolme listaa, kolme pituutta, eikä niiden välillä ole linjausta. Jos olet valitsemassa työkalua, tämä sanastokuilu merkitsee enemmän kuin ominaisuuslista, koska se on se, mihin kojelautasi ja hälytyssuodattimesi avaimoidaan.
Mikä on trace, ja miksi puun muodolla on väliä?
Trace on yhden pyynnön tuottama span-puu. Yksi juurispan istuu huipulla; jokainen muu span roikkuu sen alla vanhemman span-ID:n reunojen kautta. Puun muoto on koko pointti: tasainen loki kertoo jonkin olleen hidasta, mutta puu kertoo mikä vaihe oli hidas ja mikä vaihe tuotti huonon tuloksen.
chat_request (root) 2,340ms
├── retrieval 410ms
│ └── rerank 85ms
├── chat gpt-4o 1,720ms
└── tool_call: search_calendar 190msLue tuo puu ja diagnoosi on välitön: 74 % viiveestä istui mallikutsussa, ei haussa. Viiden aikaleiman tasainen loki antaa saman kokonaissumman mutta ei lainkaan syyttämisvaltaa.
Agenttisilmukka tekee tästä puusta syvemmän ja leveämmän kuin tavallinen RAG-pyyntö. Jokainen työkalukutsu synnyttää oman alipuunsa; viisivaiheinen agenttivuoro voi helposti tuottaa 30+ spania yhden juuren alle. Se on normaalia, ja se on syy siihen, miksi alla oleva spanin rakeisuuskysymys on olemassa.
Tracingin ja lokituksen ero merkitsee tässäkin: lokitus tallentaa tapahtumia, tracing tallentaa kausaalisuutta. Jos vielä päätät, mitä lokittaa ja mitä traceata, artikkelimme LLM-lokituksen parhaat käytännöt vetää sen rajan.
Sessiot: tason, jonka työkalusi todennäköisesti keksi
Ei. Sessio ei ole rakennetaso OpenTelemetry GenAI -sopimuksissa. Speksi määrittelee spanit ja gen_ai.conversation.id-attribuutin (ehdollisesti vaadittu, "when available", tila: Development), jota kuvaillaan keskustelun tai säikeen yksilölliseksi tunnisteeksi, jota käytetään viestien korrelointiin. Toimittajat rakentavat sen jälkeen oman sessio-objektinsa sen attribuutin päälle. Kukaan muu tällä SERP-sivulla ei sano speksin tilaa suoraan, joten tässä se on.
Seuraus on se lause, jonka vuoksi tämä koko artikkeli on olemassa:
Sessio on ryhmittelyavain, ei vanhempi span. Se ei kulje samalla tavalla kuin trace-ID; asetat sen itse jokaisella vuorolla.
Jos unohdat yhden vuoron, tuo vuoro putoaa pois sessiosta. Sille ei ole automaattista kontekstin etenemistä.
Milloin sessio alkaa ja päättyy?
Toimittajan määrittämä. Jotkin työkalut avaavat session ensimmäisellä tracella, jolla on uusi keskustelu-ID, ja sulkevat sen toimettomuusajastukseen (Langfusen oletus on muokattavissa oleva ikkuna). Toiset vaativat eksplisiittisen sulkukutsun. Speksi ei sano elinkaaresta mitään, koska speksi ei mallinna sessiota objektina.
Mikä kulkee vuorojen yli, ja mikä ei?
Mallin konteksti-ikkuna ei ole sessio. Sessio on ryhmittelyavain itsenäisten tracejen päällä. Jokainen vuoro saa oman tracensa, oman juurispaninsa, omien token-määränsä. Mikä kulkee, on keskustelu-ID-attribuutti, jonka leimasit jokaiseen juurispaniin. Mikä ei kulje: viive, token-käyttö, span-rakenne. Ne ovat trace-kohtaisia.
Mitä sessiotason metriikka mittaa?
Asioita, joita yksittäinen trace ei voi: ratkaisuaste (ratkaisiko keskustelu käyttäjän ongelman?), vuorot vastaukseen (kuinka monta tracea ennen kuin käyttäjä sai tarvitsemansa?) ja hylätyt keskustelut (sessiot, joilla ei ole sulkusignaalia). Evalien ajaminen live-traceilla sessiotasolla on se, miten nappaat monivuoroisia epäonnistumisia, jotka näyttävät vuoro kerrallaan hyviltä.
Koodi, toimittajariippumaton
Tämä pätkä käyttää vain vakaita OTel-perusosia. Ei toimittaja-SDK:ta. Se luo juurispanin yhdelle vuorolle, lapsispanin haulle, lapsen mallikutsulle ja asettaa gen_ai.conversation.id:n niin, että kolme vuoroa päätyy yhteen sessioon:
from opentelemetry import trace
tracer = trace.get_tracer("my-llm-app")
SESSION_ID = "conv-8f3a2c" # sama arvo jokaisella vuorolla
def handle_turn(user_message: str):
with tracer.start_as_current_span("chat_request") as root:
# Sinä asetat tämän. Se ei etene automaattisesti.
root.set_attribute("gen_ai.conversation.id", SESSION_ID)
with tracer.start_as_current_span("retrieval") as ret:
ret.set_attribute("gen_ai.operation.name", "retrieval")
docs = retrieve(user_message)
with tracer.start_as_current_span("chat gpt-4o") as llm:
llm.set_attribute("gen_ai.operation.name", "chat")
llm.set_attribute("gen_ai.provider.name", "openai")
llm.set_attribute("gen_ai.request.model", "gpt-4o")
response = call_model(user_message, docs)
llm.set_attribute("gen_ai.usage.input_tokens", 1_204)
llm.set_attribute("gen_ai.usage.output_tokens", 312)
return responseKutsu handle_turn kolme kertaa samalla SESSION_ID:llä ja kaikki kolme tracea ryhmittävät yhden session alle missä tahansa backendissä, joka lukee attribuutin. Vaihda ID ja olet aloittanut uuden session. Siinä koko mekanismi.
Luimme viiden toimittajan dokumentit rinnakkain. Ne eivät ole samaa mieltä.
30.7.2026 luimme nykyiset datamallidokumentit toimittajille Langfuse, LangSmith, OpenInference / Phoenix ja Datadog rinnakkain, sekä OpenTelemetry GenAI -span-speksin. Neljä viidestä kutsuu samaa objektia joksikin muuksi. Vain yksi käsittelee sessiota ensiluokkaisena objektina eikä attribuuttina. Datadogin termisivu, Googlen ykköstulos tälle haulle, ei määrittele sessiota lainkaan.
| Käsite | OTel GenAI semconv | Langfuse | LangSmith | OpenInference / Phoenix | Datadog |
|---|---|---|---|---|---|
| Koko keskustelu | gen_ai.conversation.id -attribuutti | Sessio (valinnainen tracejen ryhmittely) | Thread (session_id / thread_id -metadatan kautta) | session.id-span-attribuutti | Ei määritelty termisivulla |
| Yksi pyyntö | Trace | Trace | Trace ("a collection of runs") | Trace | Trace |
| Yksi operaatio | Span | Observation (span / generation / event) | Run ("a span representing a single unit of work") | Span, jolla on span-laji | Span, jolla on span-laji |
Yksi lähdehuomio tuosta ensimmäisestä rivistä: OpenInferencen session.id ei ole yllä linkitetyssä traces-speksissä, joka kattaa kymmenen span-lajia. Se määritellään sisartiedostossa OpenInference semantic conventions session yksilölliseksi tunnisteeksi. Kaksi tiedostoa, yksi speksi.
Emme keksineet toimittajien välistä vertailua; FutureAGI julkaisee myös OTel-vs-toimittaja-taulukon. Meidän kaksi lisäystämme ovat sessiorivi (FutureAGI ohittaa sen) ja sama-sana-eri-merkitys-ansa: Langfusen "observation" ja LangSmithin "run" ovat sama objekti kuin span, kun taas Datadogin ja OpenInferencen span-lajit ovat eri sanastoja samalle idealle.
Langfuse kutsuu sitä observationiksi, LangSmith kutsuu sitä runiksi, Datadog kutsuu sitä spaniksi. Sama objekti, kolme kojelautaa, jotka hajoavat kun migroijat.
Se on meidän tulkintamme migraatiokustannuksesta, ei toimittajan väite. Mutta se on syy siihen, miksi tallennetut suodattimet, eval-asetukset ja hälytyssäännöt, jotka on avaimoitu "observation"- tai "run"-sanaan, lakkaavat toimimasta päivänä, jona vaihdat työkalua. Et nimeä kenttää uudelleen. Nimeät tason uudelleen. Jos punnitset noita kahta tiettyä työkalua, Langfuse vs LangSmith -vertailumme menee syvemmälle eroavuuteen.
Lukijoilla voi olla jo Opik, PostHog, Sentry tai Weights & Biases pinossaan; Google liittää kaikki neljä hakuun llm tracing, ja jokainen kartoittaa nämä käsitteet hieman eri tavalla. Valitsetko oikeaa? Havainnointialustojen katsauksemme kattaa kentän.
Yksi tuoreushuomio: GenAI-sopimukset ovat siirtyneet omaan repositorioonsa, pois pää-semantic-conventions-repostosta. Vanha opentelemetry.io/docs/specs/semconv/gen-ai/-polku kantaa nyt vain viittauksen.
Mikä ID menee minne?
Trace-ID yksilöi yhden pyynnön ja etenee kontekstin kautta automaattisesti. Span-ID yksilöi yhden operaation tuon tracen sisällä, myös automaattisesti. Korrelaatio-ID (tai request-ID) tulee web-tasoltasi ennen kuin tracing alkaa, ja se on se, jonka ihmiset useimmiten sekoittavat trace-ID:hen. Sessio-ID on outo lintu: sinun asetettavasi, manuaalisesti, jokaisella vuorolla.
| ID | Asettaja | Näkyvyys | Sekoitetaan |
|---|---|---|---|
| Trace-ID | Automaattinen | Yksi pyyntö; etenee kontekstin kautta | Web-tason korrelaatio-ID |
| Span-ID | Automaattinen | Yksi operaatio | , |
| Vanhemman span-ID | Automaattinen | Rakentaa puun; tyhjä juurispanilla | , |
| Sessio- / keskustelu-ID | Sinä, manuaalisesti, jokaisella vuorolla | Monta tracea | Oletetaan etenevän. Ei etene. |
| Käyttäjä-ID | Sinä, manuaalisesti | Monta sessiota | Sessio-ID |
| Request- / korrelaatio-ID | Web-tasosi, ennen kuin tracing alkaa | Yksi HTTP-pyyntö | Trace-ID (tämä on se suuri) |
Käytännön sääntö: liitä gen_ai.conversation.id span-attribuuttina jokaisen vuoron juurispaniin ja leimaa käyttäjä-ID sen rinnalle. Ohita yksi vuoro ja sessiotason metriikkasi menettää sen vuoron hiljaisesti.
Yksi varoitus kardinaliteetista: käyttäjä-ID:t ja sessio-ID:t ovat korkeakardinaliteettisia arvoja. Sillä on väliä backendisi indeksointilaskun kannalta, mikä on seuraavan osion ongelma.
Kuinka rakeinen spanin pitäisi olla?
Kaksi epäonnistumistilaa, molemmat yleisiä:
Yli-spanaus. Span per funktiokutsu antaa sinulle 400-spanin tracen, jota kukaan ei voi lukea, ja span-kohtaisen laskun, jota kukaan ei hyväksynyt. Hostatut backendit (Datadog, Langfuse Cloud) hinnoittelevat span-volyymin mukaan. Puhelias agenttisilmukka, joka instrumentoi jokaisen merkkijonokatketun, polttaa ilmaistason iltapäivässä.
Ali-spanaus. Yksi span "koko ketjulle" kertoo sen olleen hidas mutta ei missä. Päädyt lisäämään print-lauseet takaisin, mikä on juuri se, mitä tracingin piti korvata.
Nyrkkisääntö (ja se on nyrkkisääntö, ei mittaus): spanaa rajat, joilla tapahtuu päätös tai ulkoinen kutsu.
- Hakuvaihe: spanaa se.
- Rerank-kutsu: spanaa se.
- Jokainen mallikutsu: spanaa se.
- Jokainen työkalukutsu: spanaa se.
- Jokainen guardrail-tarkistus: spanaa se.
- Puhdas prosessinsisäinen muunnos (merkkijonon muotoilu, JSON-jäsennys, promptin kokoaminen): attribuutteja vanhempaan spaniin, ei omia spineja.
Kardinaliteetista, näytteenotosta ja säilytyksestä:
- Korkeakardinaliteettiset attribuutit (käyttäjä-ID:t, täydet promptit) paisuttavat tallennuskustannuksia. Näytteistä tai katkaise niitä.
- Useimmat backendit antavat näytteistää tracetasolla. Pidä 100 % virhe-traceista; näytteistä onnellinen polku.
- Säilytysikkunat vaihtelevat: 7 päivää ilmaistasoilla, 30–90 päivää maksullisilla. Päätä ennen kuin tarvitset datan.
Span-volyymin ja span-kohtaisen hinnoittelun takana olevalle todelliselle kustannusmallille katso LLM-kustannusten seurantaoppaamme. Emme rakenna sitä uudelleen tässä.
Miten Techsy lähestyy tätä
Asiakasagenttityössä standardoimme kolmeen sääntöön:
- Yksi trace per vuoro. Älä koskaan yhdistä kahta käyttäjävuoroa yhteen traceen, vaikka agentti silmukoi sisäisesti.
- Sessio-ID leimattuna jokaiseen juurispaniin, asetettuna sovelluskoodissa, ei koskaan oletettuna etenevän.
- Span-lajit pidettynä pienenä kiinteänä joukkona (retrieval, inference, tool, guardrail), jotta kojelaudat selviävät toimittajan vaihdosta.
Tuo kolmas sääntö on se, jonka tiimit ohittavat, ja se on se, joka pelastaa migraation. Jos span-sanastosi on sidottu yhden toimittajan enumiin, jokainen hälytys ja tallennettu näkymä hajoaa päivänä, jona vaihdat.
Jos rakennat agenttijärjestelmää ja haluat toisen mielipiteen tracing-arkkitehtuuriin, ota ilmainen konsultaatio.
Tietoa kirjoittajasta
Mert Batur on Techsy.io:n perustajaosakas, missä tiimi toimittaa AI-agentteja, automaatiojärjestelmiä ja ääni-/SDR-putkia B2B-asiakkaille. Hän kirjoittaa LLM-työkalupinosta, jota Techsyn tiimi todella käyttää tuotannossa. Yhdistä LinkedInissä.
Usein kysytyt kysymykset
Mikä on span hajautetussa tracingissä?
Span on yksi ajastettu työyksikkö: sillä on nimi, aloitusaika, lopetusaika, tila ja joukko attribuutteja. Spanit linkittyvät toisiinsa vanhemman span-ID:n viittauksilla ja muodostavat puun. LLM-sovelluksissa span kietoo tyypillisesti yhden mallikutsun, yhden haun tai yhden työkalukutsun.
Mikä on span Datadogissa?
Datadogin LLM Observabilityssä span on sama ajastettu operaatio, mutta Datadog lisää span-laji-taksonomian: LLM, Workflow, Agent, Tool, Task, Embedding ja Retrieval. Vain LLM-, Workflow- ja Agent-lajit voivat toimia juurispanina. Taksonomia on Datadog-kohtainen; se ei ole osa OpenTelemetry-standardia.
Mitkä ovat havainnoinnin neljä pilaria?
Neljä pilaria ovat lokit, metriikat, tracet ja (käsitteistöstä riippuen) profiilit tai tapahtumat. Tracet ovat se pilari, jossa tämä artikkeli elää. LLM-tapaus lisää mutkan: token-käyttö ja mallin identiteetti ovat trace-spanien attribuutteja, eivät erillisiä metriikkavirtoja, mikä romahduttaa kaksi pilaria yhdeksi kyselyksi.
Mitkä ovat havainnoinnin neljä kultaista signaalia?
Viive, liikenne, virheet ja kyllästyminen. LLM-järjestelmissä viive tarkoittaa aikaa ensimmäiseen tokeniin ja kokonaisgenerointiaikaa; liikenne tarkoittaa pyyntöjä sekunnissa per malli; virheet tarkoittavat epäonnistuneita spineja (tilakoodi ERROR); kyllästyminen tarkoittaa token-budjetin ehtymistä tai jonon syvyyttä. Signaalit ovat samat; yksiköt eroavat.
Onko sessio osa OpenTelemetry-spesifikaatiota?
Ei rakennetasona. OTel GenAI -span-sopimukset määrittelevät gen_ai.conversation.id:n ehdollisesti vaadituksi attribuutiksi ("when available") viestien korrelointiin keskustelussa tai säikeessä. Se istuu spineissa. Toimittajat kuten Langfuse ja LangSmith rakentavat omat sessio- tai thread-objektinsa sen päälle.
Mikä on ero trace-ID:n, span-ID:n ja korrelaatio-ID:n välillä?
Trace-ID yksilöi yhden pyynnön ja etenee automaattisesti kaikkien alavirran palveluiden läpi. Span-ID yksilöi yhden operaation tuon tracen sisällä. Korrelaatio-ID (tai request-ID) generoidaan web-tasollasi ennen kuin tracing alkaa, ja se on arvo, jota ihmiset useimmiten luulevat trace-ID:ksi. Ne menevät päällekkäin näkyvyydessä mutta syntyvät eri tavalla.
Kuinka monta spania yhdellä tracella pitäisi olla?
Kiinteää vastausta ei ole, mutta tyypilliset vaihteluvälit ovat 3–30 RAG-pyynnölle ja 10–50+ agenttisilmukalle, jossa on useita työkalukutsuja. Nyrkkisääntö: spanaa ulkoiset kutsut ja päätöspisteet, et prosessinsisäisiä muunnoksia. Jos tracesi ylittää 100 spania, instrumentoit todennäköisesti liikaa.
Ovatko Langfusen "observationit" sama asia kuin spanit?
Kyllä. Langfusen observation on sama objekti kuin OTel-span: yksi ajastettu operaatio attribuutteineen. Langfuse jakaa observationit kolmeen tyyppiin (generation, span, event), missä OTel käyttää gen_ai.operation.name-attribuuttia. Jos arvioit työkaluja, jotka lukevat tracejasi, LLM-eval-työkalujen katsauksemme kattaa ne, jotka hyväksyvät molemmat sanastot.
Miten ryhmität monivuoroisen chatbot-keskustelun yhteen sessioon?
Aseta sama keskustelutunniste jokaisen vuoron juurispaniin. OTel-termeissä se on gen_ai.conversation.id. Langfusessa annat session_id:n traceja luodessasi. LangSmithissä asetat session_id- tai thread_id-metadatan. Ohita yksi vuoro ja tuo vuoro putoaa pois ryhmittelystä.
Tarvitsenko sessioita, jos käsittelen vain yksivuoroisia pyyntöjä?
Todennäköisesti et. Sessiot ovat olemassa korreloimaan monta tracea yhdeksi keskusteluksi. Jos jokainen pyyntö on itsenäinen (luokittelu-API, yhden kerran tiivistäjä), trace-tason metriikat riittävät. Lisää sessiot kun tarvitset vuorojen välisiä metriikoita: ratkaisuastetta, vuoroja vastaukseen tai keskustelutason kustannuksia. LLM-eval-oppaamme kattaa, milloin sessiotason evalit ansaitsevat paikkansa.
Lyhyt versio
Spanit asettuvat tracejen sisään; tracet ryhmittävät sessioiksi. Sisäkkäisyys on todellinen, mutta speksi rakentaa vain kaksi kolmesta tasosta. gen_ai.conversation.id on attribuutti, jonka asetat itse, ei vanhempi span, joka etenee. Ja toimittaja, jonka valitset tänään, nimeää nämä objektit eri tavalla kuin toimittaja, johon vaihdat 18 kuukauden kuluttua, joten pidä span-sanastosi pienenä ja siirrettävänä.
Jos olet valitsemassa alustaa, aloita havainnointialustojen vertailustamme. Jos rakennat evalia tracejesi päälle, LLM-eval-opas jatkaa tästä.