Asynkron eksekvering af agents
Lær at implementere asynkrone mønstre, så agents kan udføre parallelle opgaver og forbedre reaktionsevnen.
Asynkron eksekvering af agents er en gratis AI-agenter med LangChain og autonome arbejdsgange-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i AI-agenter med LangChain og autonome arbejdsgange, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. AI-agenter med LangChain og autonome arbejdsgange-kurset indeholder 4 lektioner i alt.
Hvorfor asynkrone agenter?
Forestil dig, at din AI-agent skal gøre flere ting på én gang: hente data fra to API'er, analysere tekst med en LLM og derefter gemme et resultat. Hvis den gør dette synkront (det ene efter det andet), venter den på, at hvert trin bliver færdigt, før det næste startes.
Denne ventetid kan gøre din agent langsom og ufleksibel, især når den håndterer netværkskald eller komplekse beregninger.
Synkront kontra asynkront
Synkron udførelse er som en ensrettet vej med én vognbane: Kun én bil kan passere ad gangen. Hvis en bil går i stå, stopper al trafik.
- Synkront: Opgaver kører én efter én.
- Asynkront: Opgaver kan starte, sættes på pause, mens de venter på noget (f.eks. et API-svar), og lade andre opgaver køre imens. Det svarer til en motorvej med flere vognbaner eller at jonglere med flere bolde.
Asynkron programmering hjælper agenter med at udnytte inaktiv tid mere effektivt.
Pythons nøgleord async og await
Python bruger nøgleordene async og await til at aktivere asynkron programmering. Tænk på dem som signaler:
async def: Definerer en funktion (kaldet en coroutine), der kan køre asynkront.await: Sætter den aktuelle coroutine på pause, indtil den ventede opgave er færdig, så andre opgaver kan køre.
Lad os se på et grundlæggende 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())asyncios hændelsesløkke
Bag kulisserne styrer Pythons bibliotek asyncio, hvordan asynkrone opgaver kører. Det bruger en hændelsesløkke.
- Hændelsesløkken overvåger konstant opgaver.
- Når en
await-sætning sætter en opgave på pause, skifter hændelsesløkken til en anden opgave, der er klar. - Når den ventede opgave er færdig, genoptager hændelsesløkken den satte opgave.
Det muliggør ikke-blokerende operationer og forbedrer den samlede effektivitet.
Asynkrone LLM-kald i LangChain
Mange LangChain-komponenter, især LLM'er, tilbyder asynkrone versioner af deres metoder. I stedet for .invoke() kan du for eksempel ofte bruge .ainvoke() til et asynkront kald.
Det er afgørende for at gøre din agent responsiv, når den forespørger store sprogmodeller, hvilket kan tage 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())Kørsel af flere LLM-kald samtidigt
Den virkelige styrke ved async viser sig, når du skal foretage flere LLM-kald. Du behøver ikke vente på, at hvert kald bliver færdigt, før du starter det næste.
Brug asyncio.gather() til at køre flere asynkrone opgaver parallelt og indsamle deres resultater.
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 udførelse af værktøjer
Ligesom LLM'er kan dine brugerdefinerede værktøjer også være asynkrone! Hvis dit værktøj udfører I/O-bundne operationer (f.eks. henter data fra en database eller en ekstern API), vil det forbedre agentens ydeevne betydeligt at gøre det asynkront.
Opret et async-værktøj ved at implementere metoden _arun i din underklasse af 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())Opbygning af asynkrone kæder og agenter
Når du kombinerer asynkrone LLM'er og værktøjer i kæder eller agenter, udnytter LangChain automatisk deres asynkrone funktioner. De fleste LangChain-kørbare enheder og kæder har også en metode med navnet .ainvoke().
Det betyder, at du kan bygge komplette asynkrone arbejdsgange, så din agent kan behandle komplekse opgaver med flere trin og eksterne kald langt hurtigere.
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())Hurtigt tjek: Fordele ved async
Lad os tjekke din forståelse af asynkron udførelse.
Opsummering: Beherskelse af asynkrone agenter
Godt gået! Du har lært det grundlæggende i asynkron udførelse i Python, og hvordan du anvender det i dine LangChain-agenter.
- Asynkron programmering (
async/await) gør det muligt for agenter at udføre opgaver samtidigt i stedet for at vente på hver enkelt. - Det forbedrer responsiviteten og gennemløbet betydeligt ved I/O-bundne operationer.
- LangChains LLM'er, værktøjer og kæder tilbyder ofte asynkrone metoder (f.eks.
.ainvoke()og.arun()), så du kan udnytte denne styrke.
Ved at integrere asynkrone mønstre kan du bygge mere effektive og højtydende autonome arbejdsgange!
Lær AI-agenter med LangChain og autonome arbejdsgange med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 12
- Lektioner
- 50
Ofte stillede spørgsmål
Er lektionen “Asynkron eksekvering af agents” gratis?
Ja — hele teksten til “Asynkron eksekvering af agents” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af AI-agenter med LangChain og autonome arbejdsgange-kurset, skal du opgradere til CoddyKit PRO. AI-agenter med LangChain og autonome arbejdsgange-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Asynkron eksekvering af agents”?
Lær at implementere asynkrone mønstre, så agents kan udføre parallelle opgaver og forbedre reaktionsevnen. Du øver dig i AI-agenter med LangChain og autonome arbejdsgange med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på AI-agenter med LangChain og autonome arbejdsgange?
Der kræves ingen tidligere erfaring. AI-agenter med LangChain og autonome arbejdsgange på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Asynkron eksekvering af agents”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne AI-agenter med LangChain og autonome arbejdsgange-lektion?
Ja. Alle AI-agenter med LangChain og autonome arbejdsgange-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Design af komplekse workflows
- Asynkron eksekvering af agents
- Fejlhåndtering og robusthed
- Godkendelser med human-in-the-loop