AI-agenter med LangChain og autonome arbeidsflyter · leksjon

Asynkron kjøring av agenter

Lær å implementere asynkrone mønstre slik at agenter kan utføre oppgaver parallelt og bli mer responsive

Leksjon 2 av 410 trinn

Asynkron kjøring av agenter er en gratis leksjon i AI-agenter med LangChain og autonome arbeidsflyter på CoddyKit. Dette er leksjon 2 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i AI-agenter med LangChain og autonome arbeidsflyter, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i AI-agenter med LangChain og autonome arbeidsflyter inneholder totalt 4 leksjoner.

Hvorfor asynkrone agenter?

Se for Dem at AI-agenten må gjøre flere ting samtidig: hente data fra to API-er, analysere tekst med en LLM og deretter lagre et resultat. Hvis den gjør dette synkront (det ene etter det andre), må den vente på at hvert trinn fullføres før den starter det neste.

Denne ventingen kan gjøre agenten treg og lite responsiv, særlig ved nettverkskall eller komplekse beregninger.

Synkront kontra asynkront

Synkron kjøring er som en vei med ett kjørefelt: Bare én bil kan passere om gangen. Hvis en bil får motorstopp, stopper all trafikk.

  • Synkront: Oppgaver kjøres én etter én.
  • Asynkront: Oppgaver kan starte, settes på pause mens de venter på noe (for eksempel et API-svar), og la andre oppgaver kjøre i mellomtiden. Det er som en motorvei med flere kjørefelt eller å sjonglere med flere baller.

Asynkron programmering hjelper agenter med å utnytte ledig tid mer effektivt.

Pythons async/await-nøkkelord

Python bruker nøkkelordene async og await for å muliggjøre asynkron programmering. Tenk på dem som signaler:

  • async def: Definerer en funksjon (kalt en korutine) som kan kjøre asynkront.
  • await: Setter den gjeldende korutinen på pause til den ventede oppgaven er fullført, slik at andre oppgaver kan kjøre.

La oss se på et grunnleggende eksempel:

import asyncio

async def say_hello():
    print("Hello ")
    await asyncio.sleep(1) # Simulate a delay
    print("World!")

async def main():
    await say_hello()

if __name__ == "__main__":
    asyncio.run(main())

Hendelsesløkken i asyncio

Bak kulissene håndterer Python-biblioteket asyncio hvordan asynkrone oppgaver kjøres. Det bruker en hendelsesløkke.

  • Hendelsesløkken overvåker kontinuerlig oppgavene.
  • Når en await-setning setter en oppgave på pause, bytter hendelsesløkken til en annen oppgave som er klar.
  • Når den ventede oppgaven er ferdig, fortsetter hendelsesløkken den oppgaven som var satt på pause.

Dette muliggjør ikke-blokkerende operasjoner og forbedrer den samlede effektiviteten.

Asynkrone LLM-kall i LangChain

Mange LangChain-komponenter, særlig LLM-er, tilbyr asynkrone varianter av metodene sine. I stedet for .invoke() kan De for eksempel ofte bruke .ainvoke() for et asynkront kall.

Dette er avgjørende for å holde agenten responsiv ved spørringer til store språkmodeller, som kan bruke tid.

import asyncio
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

async def main():
    # Make sure you have your OpenAI API key set up
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    
    # Using .ainvoke() for an asynchronous call
    response = await llm.ainvoke([HumanMessage(content="What is the capital of Canada?")])
    print(response.content)

if __name__ == "__main__":
    asyncio.run(main())

Kjøre flere LLM-kall samtidig

Den virkelige styrken ved async blir tydelig når De må utføre flere LLM-kall. De trenger ikke å vente på at hvert kall skal bli ferdig før De starter det neste.

Bruk asyncio.gather() til å kjøre flere asynkrone oppgaver parallelt og samle inn resultatene.

import asyncio
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage

async def main():
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    
    # Create multiple asynchronous LLM invocation tasks
    task1 = llm.ainvoke([HumanMessage(content="Tell me a fact about the sun.")])
    task2 = llm.ainvoke([HumanMessage(content="Tell me a fact about the moon.")])
    task3 = llm.ainvoke([HumanMessage(content="Tell me a fact about Earth.")])
    
    # Run all tasks concurrently and wait for them to complete
    results = await asyncio.gather(task1, task2, task3)
    
    for i, res in enumerate(results):
        print(f"Result {i+1}: {res.content}\n")

if __name__ == "__main__":
    asyncio.run(main())

Asynkron kjøring av verktøy

Akkurat som LLM-er kan også egendefinerte verktøy være asynkrone! Hvis verktøyet utfører I/O-bundne operasjoner (for eksempel henter data fra en database eller et eksternt API), vil asynkron kjøring forbedre agentens ytelse betydelig.

For å opprette et async-verktøy implementerer De metoden _arun i en underklasse av BaseTool.

import asyncio
from langchain.tools import BaseTool

class AsyncWebSearchTool(BaseTool):
    name: str = "AsyncWebSearch"
    description: str = "Searches the web asynchronously for a query."

    async def _arun(self, query: str) -> str:
        # Simulate an asynchronous web search API call
        await asyncio.sleep(1.5) 
        return f"Results for '{query}': Found 5 articles."

    def _run(self, query: str) -> str:
        # Fallback for synchronous calls (optional but good practice)
        return f"Sync results for '{query}': Found 4 articles."

async def main():
    tool = AsyncWebSearchTool()
    result = await tool.arun("latest AI news")
    print(result)

if __name__ == "__main__":
    asyncio.run(main())

Bygge asynkrone kjeder og agenter

Når De kombinerer asynkrone LLM-er og verktøy i kjeder eller agenter, utnytter LangChain automatisk de asynkrone funksjonene deres. De fleste kjørbare komponenter og kjeder i LangChain tilbyr også en .ainvoke()-metode.

Det betyr at De kan bygge komplette asynkrone arbeidsflyter, slik at agenten kan behandle komplekse oppgaver med flere trinn og eksterne kall mye raskere.

import asyncio
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.runnables import RunnableSequence

async def main():
    llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
    prompt = ChatPromptTemplate.from_template("What is a unique fact about {animal}?")
    
    # Define a simple chain
    chain = prompt | llm
    
    # Invoke the chain asynchronously
    response = await chain.ainvoke({"animal": "platypus"})
    print(response.content)

if __name__ == "__main__":
    asyncio.run(main())

Kort kontroll: Fordeler med async

La oss kontrollere forståelsen Deres av asynkron kjøring.

Oppsummering: Mestre asynkrone agenter

Godt jobbet! De har lært det grunnleggende om asynkron kjøring i Python og hvordan dette brukes i LangChain-agentene Deres.

  • Asynkron programmering (async/await) gjør det mulig for agenter å utføre oppgaver samtidig i stedet for å vente på hver enkelt.
  • Dette forbedrer responsiviteten og gjennomstrømningen betydelig for I/O-bundne operasjoner.
  • LLM-er, verktøy og kjeder i LangChain tilbyr ofte asynkrone metoder (for eksempel .ainvoke() og .arun()) for å utnytte denne styrken.

Ved å integrere asynkrone mønstre kan De bygge mer effektive og høytytende autonome arbeidsflyter!

Gratis å komme i gang

Lær deg AI-agenter med LangChain og autonome arbeidsflyter med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
50

Ofte stilte spørsmål

Er leksjonen «Asynkron kjøring av agenter» gratis?

Ja – hele teksten i «Asynkron kjøring av agenter» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av AI-agenter med LangChain og autonome arbeidsflyter-kurset, kan du oppgradere til CoddyKit PRO. Kurset i AI-agenter med LangChain og autonome arbeidsflyter inneholder totalt 4 leksjoner.

Hva lærer jeg i «Asynkron kjøring av agenter»?

Lær å implementere asynkrone mønstre slik at agenter kan utføre oppgaver parallelt og bli mer responsive Du øver på AI-agenter med LangChain og autonome arbeidsflyter med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med AI-agenter med LangChain og autonome arbeidsflyter?

Ingen tidligere erfaring er nødvendig. AI-agenter med LangChain og autonome arbeidsflyter på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 2 av 4.

Hvor lang tid tar leksjonen «Asynkron kjøring av agenter»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne AI-agenter med LangChain og autonome arbeidsflyter-leksjonen?

Ja. Alle AI-agenter med LangChain og autonome arbeidsflyter-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Utforming av komplekse arbeidsflyter
  2. Asynkron kjøring av agenter
  3. Feilhåndtering og robusthet
  4. Godkjenninger med mennesket i løkken
← Tilbake til AI-agenter med LangChain og autonome arbeidsflyter