Code Velocity
Kūrėjo įrankiai

Dirbtinio intelekto agentų vertinimas: 'Strands Evals' paruošimui gamybai

·7 min skaitymo·AWS·Originalus šaltinis
Dalintis
'Strands Evals' architektūros diagrama, iliustruojanti 'Cases' (Atvejų), 'Experiments' (Eksperimentų) ir 'Evaluators' (Vertintojų) sąveiką išsamiam DI agento vertinimui.

Paradigmos pokytis: DI agentų vertinimas gamybai

Kaip dirbtinio intelekto agentai pereina nuo eksperimentinių prototipų prie kritinių komponentų gamybinėse sistemose, atsiranda esminis iššūkis: kaip patikimai įvertinti jų veikimą ir užtikrinti jų pasirengimą diegti realiame pasaulyje? Tradicinės programinės įrangos testavimo metodikos, sukurtos remiantis prielaida, kad deterministiniai įvesties duomenys duoda deterministinius išvesties duomenis, yra nepakankamos, susidūrus su dinamiška, prisitaikančia ir kontekstą suvokiančia DI agentų prigimtimi. Šios sudėtingos sistemos yra sukurtos generuoti natūralią kalbą, priimti sudėtingus sprendimus ir net mokytis, o tai lemia įvairias išvestis net iš identiškų įvesties duomenų. Šis būdingas lankstumas, nors ir galingas, sisteminį kokybės užtikrinimą paverčia dideliu iššūkiu.

Tvirtos ir prisitaikančios vertinimo sistemos poreikis yra didžiulis. Tai pripažindami, kūrėjai ir tyrėjai kreipiasi į specializuotus įrankius, kurie gali priimti nedeterministiškas DI agentų savybes, tuo pat metu teikdami griežtus, pakartojamus vertinimus. Vienas iš tokių galingų sprendimų yra Strands Evals – struktūrizuota sistema, skirta palengvinti sistemingą DI agentų, ypač tų, kurie sukurti naudojant Strands Agents SDK, vertinimą. Ji teikia išsamius įrankius, įskaitant specializuotus vertintojus, daugiapakopių simuliacijų galimybes ir išsamią ataskaitų teikimo sistemą, leidžiančią komandoms užtikrintai perkelti savo DI agentus į gamybinę aplinką.

Kodėl tradicinis testavimas yra nepakankamas prisitaikantiems DI agentams

Pagrindinis DI agentų vertinimo iššūkis kyla iš paties jų dizaino. Skirtingai nuo tipinės API, kuri grąžina tikslią duomenų struktūrą, DI agento atsakymas į užklausą, pvz., "Koks oras Tokijuje?" gali teisėtai žymiai skirtis. Jis gali pranešti temperatūrą Celsijaus ar Farenheito laipsniais, įtraukti drėgmę ir vėją, arba galbūt tiesiog sutelkti dėmesį į temperatūrą. Visi šie variantai gali būti laikomi teisingais ir naudingais, priklausomai nuo konteksto ir vartotojo pageidavimų. Tradicinis patvirtinimu pagrįstas testavimas, reikalaujantis tikslaus atitikimo iš anksto nustatytam išvesties duomenims, tiesiog negali atsižvelgti į šį galiojančių atsakymų diapazoną.

Be paprasto teksto generavimo, DI agentai yra sukurti veikti. Jie naudoja įrankius, gauna informaciją ir priima sudėtingus sprendimus viso pokalbio metu. Vien tik galutinės išvesties vertinimas praleidžia kritinius agento vidinio mąstymo ir vykdymo kelio aspektus. Ar buvo iškviestas teisingas įrankis? Ar informacija buvo gauta tiksliai? Ar agentas sekė tinkama trajektorija, kad pasiektų savo tikslą? Tai yra klausimai, į kuriuos tradicinis testavimas sunkiai randa atsakymus.

Be to, agentų sąveika dažnai yra pokalbinė ir daugiapakopė. Agentas gali nepriekaištingai tvarkyti individualias užklausas, tačiau nesugeba išlaikyti konteksto ar nuoseklumo per ilgą dialogą. Ankstesni atsakymai daro įtaką vėlesniems, sukuriant sudėtingus sąveikos modelius, kurių negali užfiksuoti vieno posūkio, izoliuoti testai. Atsakymas gali būti faktiškai tikslus, bet nenaudingas, arba naudingas, bet neištikimas savo šaltiniui. Nė vienas matas negali apimti šių daugiapusių kokybės aspektų. Šios charakteristikos reikalauja vertinimo metodo, kuris pabrėžia subjektyvų sprendimą ir niuansuotą supratimą, o ne griežtus, mechaninius patikrinimus. Didelių kalbos modelių (DKM) pagrindu atliekamas vertinimas pasirodo kaip tinkamas sprendimas, galintis įvertinti kokybinius atributus, tokius kaip naudingumas, nuoseklumas ir tikslumas.

Pagrindinės „Strands Evals“ koncepcijos: „Cases“, „Experiments“ ir „Evaluators“

„Strands Evals“ siūlo struktūrizuotą agentų vertinimo metodą, kuris programinės įrangos kūrėjams atrodo pažįstamas, tuo pat metu prisitaikydamas prie unikalių DI reikalavimų. Jis pristato tris pagrindines koncepcijas, kurios veikia sinergiškai: Cases (Atvejai), Experiments (Eksperimentai) ir Evaluators (Vertintojai). Šis atskiras rūpesčių sprendimas leidžia lanksčiai, bet griežtai testuoti.

KoncepcijaAprašymasTikslas ir vaidmuo
Case (Atvejis)Atstovauja vienam, atominiam testavimo scenarijui su įvestimi, pasirenkama laukiama išvestimi/trajektorija ir metaduomenimis.Apibrėžia, testuoti – konkrečią vartotojo sąveiką arba agento tikslą.
Experiment (Eksperimentas)Sujungia kelis 'Cases' (Atvejus) su vienu ar daugiau 'Evaluators' (Vertintojų).Orkestruoja, kaip testuoti, paleisdamas agentą su atvejais ir taikydamas sprendimą.
Evaluator (Vertintojas)Vertina faktinę agento išvestį/trajektoriją, palyginti su lūkesčiais, pirmiausia naudojant DKM niuansuotiems vertinimams.Teikia sprendimą dėl kokybės aspektų (naudingumo, nuoseklumo), kurie atsparūs mechaniniams patikrinimams.

Case (Atvejis) yra atominis vertinimo vienetas, panašus į vieną testavimo atvejį tradiciniame vienetų testavime. Jis apima konkretų scenarijų, kurį norite, kad jūsų agentas apdorotų. Tai apima įvestį, pvz., vartotojo užklausą „Koks oras Paryžiuje?“, ir gali pasirinktinai apibrėžti laukiamus rezultatus, įrankių ar veiksmų seką (žinomą kaip trajektoriją) ir bet kokius susijusius metaduomenis. Kiekvienas atvejis yra miniatiūrinis testas, detalizuojantis konkrečią situaciją jūsų agentui.

from strands_evals import Case

case = Case(
    name="Weather Query",
    input="What is the weather like in Tokyo?",
    expected_output="Should include temperature and conditions",
    expected_trajectory=["weather_api"]
)

Experiment (Eksperimentas) veikia kaip testavimo rinkinys, orkestruojantis visą vertinimo procesą. Jis sujungia kelis 'Cases' (Atvejus) ir vieną ar daugiau sukonfigūruotų 'Evaluators' (Vertintojų). Vertinimo vykdymo metu 'Experiment' paima kiekvieną 'Case', perduoda jo įvestį jūsų DI agentui, surenka agento atsakymą ir vykdymo seką, o tada perduoda šiuos rezultatus paskirtiems 'Evaluators' (Vertintojams) įvertinti. Ši abstrakcija užtikrina, kad vertinimas būtų sistemingas ir pakartojamas per apibrėžtą scenarijų rinkinį.

Galiausiai, Evaluators (Vertintojai) veikia kaip „teisėjai“, vertindami faktinę agento išvestį ir trajektoriją, palyginti su lūkesčiais. Skirtingai nuo paprastų patvirtinimo patikrinimų, 'Strands Evals' vertintojai daugiausia yra pagrįsti DKM. Tai yra kritinis skirtumas; pasitelkiant kalbos modelius, vertintojai gali atlikti sudėtingus, niuansuotus vertinimus dėl tokių savybių kaip tinkamumas, naudingumas, nuoseklumas ir tikslumas – atributų, kurių neįmanoma tiksliai įvertinti paprastais eilučių palyginimais. Šis lankstus, bet griežtas vertinimo gebėjimas yra svarbiausias efektyviai vertinant DI agentus gamybinei aplinkai.

„Task Function“: agento vykdymo ir vertinimo sujungimas

Norint integruoti savo DI agentą su 'Strands Evals' sistema, naudojamas esminis komponentas, žinomas kaip Task Function (Užduoties funkcija). Ši iškviečiama funkcija veikia kaip tiltas, priimanti Case (Atvejo) objektą ir grąžinanti to konkretaus atvejo paleidimo per jūsų agento sistemą rezultatus. Ši sąsaja yra labai lanksti, palaikanti du iš esmės skirtingus vertinimo modelius: internetinį ir neprisijungus. Norėdami gauti daugiau informacijos apie DI agentų paruošimą praktiniam diegimui, skaitykite Agentinio DI įdiegimas, 1 dalis: suinteresuotųjų šalių vadovas.

Interneto vertinimas apima jūsų DI agento iškvietimą realiuoju laiku vertinimo metu. 'Task Function' (Užduoties funkcija) dinamiškai sukuria agento egzempliorių, siunčia atvejo įvestį, fiksuoja agento realaus laiko atsakymą ir įrašo jo vykdymo seką. Šis modelis yra neįkainojamas kūrimo etape, teikiantis tiesioginį grįžtamąjį ryšį apie pakeitimus, ir yra būtinas nuolatinės integracijos ir pristatymo (CI/CD) konvejeriuose, kur agento elgesys turi būti patikrintas prieš diegimą. Tai užtikrina, kad agento veikimas būtų įvertintas jo faktinėje veikimo būsenoje.

from strands import Agent

def online_task(case):
    agent = Agent(tools=[search_tool, calculator_tool])
    result = agent(case.input)

    return {
        "output": str(result),
        "trajectory": agent.session
    }

Priešingai, neprisijungus atliekamas vertinimas veikia su istoriniais duomenimis. Užuot inicijavusi gyvą agentą, 'Task Function' (Užduoties funkcija) atkuria anksčiau įrašytas sąveikos sekas iš šaltinių, tokių kaip žurnalai, duomenų bazės ar stebėjimo sistemos. Tada ji suskaido šias istorines sekas į vertintojų laukiamą formatą, leidžianti jiems priimti sprendimą. Šis metodas yra labai efektyvus analizuojant gamybinį srautą, atliekant istorinę veikimo analizę arba lyginant skirtingas agentų versijas su nuosekliu realių vartotojų sąveikų rinkiniu, nepatiriant skaičiavimo sąnaudų, susijusių su agento pakartotiniu paleidimu realiuoju laiku. Tai ypač naudinga retrospektyvinei analizei ir didelio masto duomenų rinkinių vertinimams.

def offline_task(case):
    trace = load_trace_from_database(case.session_id)
    session = session_mapper.map_to_session(trace)

    return {
        "output": extract_final_response(trace),
        "trajectory": session
    }

Nepriklausomai nuo to, ar testuojate naujai įdiegtą agentą ar kruopščiai analizuojate mėnesių gamybos duomenis, tos pačios galingos vertinimo priemonės ir tvirta ataskaitų teikimo infrastruktūra „Strands Evals“ sistemoje yra taikytinos. „Task Function“ (Užduoties funkcija) abstrahuoja duomenų šaltinį, sklandžiai pritaikydama jį prie vertinimo sistemos, taip suteikdama nuoseklias ir išsamias įžvalgas apie agento veikimą. Toks tvirtas vertinimas yra esminis pažangiems agentinio kodavimo darbo srautams, panašiems į tuos, kurie aptariami Xcode Agentiniame Kodavime.

Agento kokybės vertinimas naudojant įmontuotus vertintojus

Efektyviai nukreipiant agento išvestį į vertinimo sistemą naudojant „Task Function“ (Užduoties funkciją), kitas svarbus žingsnis yra nustatyti, kuriuos agento kokybės aspektus matuoti. „Strands Evals“ yra sukurta siekiant pasiūlyti išsamų vertinimą, todėl ji teikia įmontuotų vertintojų rinkinį. Kiekvienas iš jų yra specialiai sukurtas, kad būtų nukreiptas ir įvertintų skirtingus DI agento veikimo ir išvesties kokybės aspektus.

Sistema supranta, kad agento kokybė yra daugialypė. Nepakanka, kad agentas tiesiog generuotų tekstą; tas tekstas turi būti naudingas, aktualus, nuoseklus ir tikslus savo kontekstui ar šaltinio medžiagai. Tradicinės metrikos dažnai nesugeba užfiksuoti šių subjektyvių, bet kritinių atributų. Būtent čia DKM pagrindu veikiančių vertintojų, minėtų anksčiau, galia tampa nepakeičiama. Pasitelkiant pačius didelius kalbos modelius veikti kaip teisėjus, „Strands Evals“ gali atlikti sudėtingus kokybinius vertinimus. Šie DKM gali analizuoti agento atsakymą dėl jo bendro naudingumo vartotojui, loginio srauto, atitikties nurodytiems faktams ar instrukcijoms ir gebėjimo išlaikyti nuoseklumą per pokalbį. Šis protingas, niuansuotas sprendimas leidžia kūrėjams peržengti paprastų raktinių žodžių atitikimo ribas ir tikrai suprasti savo DI agentų efektyvumą ir patikimumą realaus pasaulio scenarijuose.

Išvada: užtikrinant gamybai paruoštus DI agentus su „Strands Evals“

Perkeliant DI agentus nuo koncepcijos iki patikimo diegimo gamyboje, reikalinga sudėtinga vertinimo strategija, kuri peržengia tradicinio programinės įrangos testavimo apribojimus. „Strands Evals“ siūlo būtent tai: praktinę, struktūrizuotą sistemą, kuri pripažįsta DI agentų būdingą nedeterministiškumą ir sudėtingą prisitaikančią prigimtį. Aiškiu vertinimo apibrėžimu per Cases (Atvejus), orkestruojant jį per Experiments (Eksperimentus) ir taikant niuansuotus Evaluators (Vertintojus) – ypač tuos, kurie varomi DKM kokybiniam vertinimui – „Strands Evals“ leidžia kūrėjams sistemingai įvertinti veikimą.

Jos Task Function (Užduoties funkcijos) universalumas, palaikantis tiek realaus laiko internetinį vertinimą greitam kūrimui, tiek istorinių duomenų neprisijungus analizę, dar labiau sustiprina jos naudingumą viso agento gyvavimo ciklo metu. Šis išsamus požiūris užtikrina, kad DI agentai būtų ne tik funkcionalūs, bet ir naudingi, nuoseklūs ir tvirti, suteikiant pasitikėjimą, reikalingą jų sėkmingam integravimui į kritines gamybos aplinkas. Tokių sistemų kaip „Strands Evals“ priėmimas yra būtinas visiems, kurie rimtai vertina aukštos kokybės, gamybai paruoštų DI agentų kūrimą, diegimą ir palaikymą šiuolaikiniame sparčiai besikeičiančiame technologijų kraštovaizdyje.

Dažniausiai užduodami klausimai

What fundamental challenge do AI agents pose for traditional software testing methodologies?
AI agents, by their inherent nature, are flexible, adaptive, and highly context-aware, making their outputs non-deterministic. Unlike traditional software where the same input reliably yields the same expected output, AI agents generate natural language responses and make decisions that can vary even with identical inputs. This variability means that conventional assertion-based testing, which relies on precise, predictable outcomes, is inadequate. Agents' ability to use tools, retrieve information, and engage in multi-turn conversations further complicates evaluation, requiring a shift from simple keyword comparisons to nuanced, judgment-based assessments that can handle the fluidity and creativity of AI-driven interactions. This necessitates specialized frameworks like Strands Evals to systematically gauge quality dimensions beyond strict determinism.
How does Strands Evals address the non-deterministic nature of AI agent outputs?
Strands Evals tackles the non-deterministic challenge by introducing a framework centered on judgment-based evaluation, primarily leveraging large language models (LLMs) as evaluators. Instead of relying on strict assertion checks, LLM-based evaluators can make nuanced assessments of qualitative aspects such as helpfulness, coherence, relevance, and faithfulness of agent responses. The framework organizes evaluation into Cases (individual scenarios), Experiments (collections of cases and evaluators), and Evaluators (the judging mechanism), allowing for systematic yet flexible assessment. This approach moves beyond simple string comparisons to understand the subjective quality of agent interactions, ensuring that even varied but valid outputs are correctly recognized as successful.
Explain the core concepts of Strands Evals: Cases, Experiments, and Evaluators.
Strands Evals builds upon three foundational concepts to enable systematic AI agent evaluation. A **Case** serves as the atomic unit of testing, defining a single test scenario. It includes the user input (e.g., a query), optional expected outputs, anticipated tool usage sequences (trajectories), and relevant metadata. An **Experiment** functions as a test suite, bundling multiple Cases together with one or more Evaluators. It orchestrates the entire evaluation process, running the agent against each Case and applying the configured Evaluators. Finally, **Evaluators** act as the 'judges,' assessing the agent's actual output and trajectory against the expectations. Crucially, Strands Evals primarily uses LLM-based Evaluators to make qualitative judgments on attributes like helpfulness and coherence, which are difficult to quantify with traditional assertion methods, providing a flexible yet rigorous assessment.
What is the purpose of the Task Function in Strands Evals, and how do online and offline evaluation differ?
The Task Function in Strands Evals is a critical callable component that bridges your AI agent's execution environment with the evaluation system. Its purpose is to receive a Case (a test scenario) and return the agent's results (output and execution trace) in a format suitable for evaluation. This function enables two distinct patterns: **Online Evaluation** involves invoking your agent live during the evaluation run. Here, the Task Function creates an agent, feeds it the case input, and captures its real-time response and execution trace. This is ideal for development, testing immediate changes, or integrating into CI/CD pipelines. In contrast, **Offline Evaluation** works with historical data. The Task Function retrieves previously recorded agent traces from logs or databases, parsing them into the expected format. This is highly effective for analyzing production traffic, performing historical performance analysis, or comparing different agent versions against consistent real-world interactions, offering flexibility without requiring live agent invocation.
Why are LLM-based evaluators crucial for assessing AI agents effectively?
LLM-based evaluators are crucial because they overcome the limitations of traditional, assertion-based testing when assessing AI agents. Agents often produce natural language outputs and make context-dependent decisions, meaning there isn't always one single 'correct' answer that can be checked with a simple string comparison. LLM-based evaluators, leveraging their understanding of language and context, can make nuanced judgments about subjective qualities such as a response's helpfulness, coherence, relevance, or faithfulness to source material. They can discern whether an agent's varied but valid output still meets user goals or maintains context across multi-turn conversations. This capability is essential for systematically measuring the qualitative dimensions of agent performance that are vital for real-world utility and user satisfaction, ensuring agents are not only factually accurate but also user-friendly and effective.

Būkite informuoti

Gaukite naujausias AI naujienas el. paštu.

Dalintis