Tekoälyagentit LangChainilla ja autonomiset työnkulut · Oppitunti

Agenttien asynkroninen suoritus

Oppikaa toteuttamaan asynkronisia malleja, joiden avulla agentit voivat suorittaa tehtäviä rinnakkain ja parantaa responsiivisuutta.

Oppitunti 2/410 vaihetta

Agenttien asynkroninen suoritus on ilmainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppitunti CoddyKitissä. Tämä on oppitunti 2/4. Voit lukea koko oppitunnin alta ilmaiseksi ja harjoitella sen jälkeen käytännössä selaimessa sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla. Oppitunti kuuluu Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppimispolkuun, ja edistymisesi synkronoituu verkon ja CoddyKit-sovelluksen välillä. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.

Miksi asynkronisia agentteja?

Kuvitelkaa, että AI-agenttinne on tehtävä useita asioita samanaikaisesti: haettava tietoja kahdesta API:sta, analysoitava tekstiä LLM:n avulla ja tallennettava sitten tulos. Jos se tekee nämä tehtävät synkronisesti eli peräkkäin, se odottaa kunkin vaiheen valmistumista ennen seuraavan aloittamista.

Tällainen odottaminen voi tehdä agentista hitaan ja reagoimattoman etenkin verkkokutsujen tai monimutkaisten laskutoimitusten aikana.

Synkroninen ja asynkroninen suoritus

Synkroninen suoritus muistuttaa yksikaistaista tietä: vain yksi auto voi kulkea kerrallaan. Jos auto hajoaa, koko liikenne pysähtyy.

  • Synkroninen: Tehtävät suoritetaan yksi kerrallaan.
  • Asynkroninen: Tehtävät voivat alkaa ja keskeytyä odottaessaan jotakin, kuten API-vastausta, samalla kun muut tehtävät suoritetaan. Tämä muistuttaa monikaistaista moottoritietä tai usean pallon jongleeraamista.

Asynkroninen ohjelmointi auttaa agentteja hyödyntämään joutoajan tehokkaammin.

Pythonin async- ja await-avainsanat

Python käyttää async- ja await-avainsanoja asynkronisen ohjelmoinnin mahdollistamiseen. Ajatelkaa niitä signaaleina:

  • async def: Määrittää funktion eli korutiinin, joka voi toimia asynkronisesti.
  • await: Keskeyttää nykyisen korutiinin, kunnes odotettu tehtävä valmistuu, jolloin muut tehtävät voivat suorittua.

Katsotaanpa yksinkertaista esimerkkiä:

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())

asyncio-tapahtumasilmukka

Kulissien takana Pythonin asyncio-kirjasto hallitsee asynkronisten tehtävien suorittamista. Se käyttää tapahtumasilmukkaa.

  • Tapahtumasilmukka valvoo tehtäviä jatkuvasti.
  • Kun await-lause keskeyttää tehtävän, tapahtumasilmukka siirtyy toiseen valmiina olevaan tehtävään.
  • Kun odotettu tehtävä on valmis, tapahtumasilmukka jatkaa keskeytettyä tehtävää.

Tämä mahdollistaa estämättömät operaatiot ja parantaa kokonaistehokkuutta.

Asynkroniset LLM-kutsut LangChainissa

Monet LangChain-komponentit, erityisesti LLM:t, tarjoavat metodeistaan asynkroniset versiot. Esimerkiksi .invoke()-metodin sijaan voitte usein käyttää asynkroniseen kutsuun .ainvoke()-metodia.

Tämä on olennaista agentin pitämiseksi reagoivana suuria kielimalleja kyseltäessä, sillä niiden käsittely voi kestää jonkin aikaa.

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())

Useiden LLM-kutsujen suorittaminen samanaikaisesti

Asynkronisuuden todellinen hyöty näkyy, kun useita LLM-kutsuja on tehtävä. Jokaisen valmistumista ei tarvitse odottaa ennen seuraavan aloittamista.

Useaa asynkronista tehtävää voi suorittaa rinnakkain ja niiden tulokset kerätä käyttämällä asyncio.gather()-funktiota.

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())

Työkalujen asynkroninen suoritus

LLM:ien tavoin myös mukautetut työkalunne voivat toimia asynkronisesti! Jos työkalu suorittaa I/O-sidonnaisia toimintoja, kuten tietojen hakemista tietokannasta tai ulkoisesta API:sta, sen muuttaminen asynkroniseksi parantaa agentin suorituskykyä huomattavasti.

Voitte luoda asynkronisen työkalun toteuttamalla _arun-metodin BaseTool-aliluokassa.

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())

Asynkronisten ketjujen ja agenttien rakentaminen

Kun yhdistätte asynkronisia LLM:iä ja työkaluja ketjuiksi tai agenteiksi, LangChain hyödyntää automaattisesti niiden asynkronisia ominaisuuksia. Useimmat LangChainin runnable-komponentit ja ketjut tarjoavat myös .ainvoke()-metodin.

Tämän ansiosta voitte rakentaa kokonaan asynkronisia työnkulkuja, joiden avulla agentti käsittelee useita vaiheita ja ulkoisia kutsuja sisältäviä monimutkaisia tehtäviä paljon nopeammin.

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())

Pikatarkistus: asynkronisuuden hyödyt

Tarkistetaan, miten hyvin ymmärrätte asynkronisen suorituksen.

Kertaus: asynkronisten agenttien hallinta

Hienoa työtä! Olette oppineet Pythonin asynkronisen suorituksen perusteet ja niiden soveltamisen LangChain-agentteihin.

  • Asynkroninen ohjelmointi (async/await) mahdollistaa tehtävien suorittamisen samanaikaisesti sen sijaan, että jokaista tehtävää odotettaisiin erikseen.
  • Tämä parantaa merkittävästi reagointikykyä ja suorituskykyä I/O-sidonnaisissa operaatioissa.
  • LangChainin LLM:t, työkalut ja ketjut tarjoavat usein asynkronisia metodeja, kuten .ainvoke() ja .arun(), tämän hyödyn hyödyntämiseen.

Integroimalla asynkronisia rakenteita voitte rakentaa tehokkaampia ja suorituskykyisempiä autonomisia työnkulkuja!

Aloita maksutta

Opi Tekoälyagentit LangChainilla ja autonomiset työnkulut tekoälytuutorin avulla — ilmaiseksi

Kirjoita ja suorita oikeaa koodia selaimessa, saa välitöntä apua tekoälytuutorilta ympäri vuorokauden ja jatka siitä, mihin jäit, verkossa tai sovelluksessa.

Kurssit
12
Oppitunnit
50

Usein kysytyt kysymykset

Onko oppitunti ”Agenttien asynkroninen suoritus” ilmainen?

Kyllä – oppitunnin ”Agenttien asynkroninen suoritus” koko tekstin voi lukea täällä verkossa ilmaiseksi. Jos haluat harjoitella interaktiivisesti sisäänrakennetulla koodieditorilla ja ympäri vuorokauden käytettävissä olevan tekoälytuutorin avulla sekä avata koko Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssin, päivitä CoddyKit PROhon. Tekoälyagentit LangChainilla ja autonomiset työnkulut-kurssilla on yhteensä 4 oppituntia.

Mitä opin oppitunnilla ”Agenttien asynkroninen suoritus”?

Oppikaa toteuttamaan asynkronisia malleja, joiden avulla agentit voivat suorittaa tehtäviä rinnakkain ja parantaa responsiivisuutta. Harjoittelet Tekoälyagentit LangChainilla ja autonomiset työnkulut-aihetta koodilla, jonka suoritat suoraan selaimessa. Ympäri vuorokauden käytettävissä oleva tekoälytuutori vastaa kysymyksiisi oppitunnin aikana.

Tarvitsenko kokemusta aloittaakseni Tekoälyagentit LangChainilla ja autonomiset työnkulut-opiskelun?

Aiempi kokemus ei ole tarpeen. CoddyKitin Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppimispolku sopii vasta-alkajista edistyneisiin, joten voit aloittaa tästä tai alusta ja edetä omaan tahtiisi. Tämä on oppitunti 2/4.

Kuinka kauan ”Agenttien asynkroninen suoritus”-oppitunnin suorittaminen kestää?

Useimmat CoddyKitin oppitunnit kestävät noin 5–10 minuuttia. Jokainen oppitunti on lyhyt ja interaktiivinen, joten edistyt tasaisesti ja voit jatkaa siitä, mihin jäit – sekä verkossa että sovelluksessa.

Voinko kirjoittaa ja suorittaa koodia tällä Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppitunnilla?

Kyllä. Jokainen Tekoälyagentit LangChainilla ja autonomiset työnkulut-oppitunti sisältää sisäänrakennetun koodieditorin, joten voit kirjoittaa ja suorittaa oikeaa koodia suoraan selaimessa ja saada välitöntä palautetta tekoälyltä – paikallista asennusta ei tarvita.

Kaikki tämän kurssin oppitunnit

  1. Monimutkaisten työnkulkujen suunnittelu
  2. Agenttien asynkroninen suoritus
  3. Virheenkäsittely ja vikasietoisuus
  4. Ihmisen hyväksyntä työnkulussa
← Takaisin: Tekoälyagentit LangChainilla ja autonomiset työnkulut