Integrering med externa API:er
Anslut Era agenter till tredjepartstjänster och proprietära API:er för att dra nytta av ett stort ekosystem av data och funktioner.
Integrering med externa API:er är en gratis lektion i AI-agenter med LangChain och autonoma arbetsflöden på CoddyKit. Detta är lektion 2 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för AI-agenter med LangChain och autonoma arbetsflöden, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i AI-agenter med LangChain och autonoma arbetsflöden innehåller totalt 4 lektioner.
Agenter och externa API:er
AI-agenter är kraftfulla, men deras kunskap är ofta begränsad till träningsdatan. För att interagera med verkligheten behöver de hämta aktuell information eller utföra åtgärder.
Det är här externa API:er kommer in! De fungerar som en bro som ger agenter åtkomst till ett stort ekosystem av tjänster och data.
Verktyg för extern åtkomst
I LangChain är verktyg det sätt på vilket agenter interagerar med externa system. Tänk på dem som specialiserade funktioner som en agent kan ”anropa” vid behov.
- Ett verktyg kan söka på webben.
- Ett annat kan hämta väderdata.
- Eller så kan det skicka ett e-postmeddelande!
Vi ska bygga verktyg som kapslar in API-anrop.
API: agentens gränssnitt
Ett API (Application Programming Interface) är en uppsättning regler som gör att olika program kan kommunicera med varandra.
När din agent använder ett API skickar den en begäran (som att ställa en fråga) och får ett svar (svaret eller datan) tillbaka.
- Slutpunkt: En specifik URL för en API-funktion.
- Begäran: Det som din agent skickar (till exempel ”hämta det aktuella vädret i London”).
- Svar: Det som API:et skickar tillbaka (till exempel väderdata i JSON-format).
Skydda API-åtkomsten
Många externa API:er kräver autentisering för att säkerställa att endast behöriga användare får åtkomst till deras tjänster. Vanliga metoder är:
- API-nycklar: En unik sträng som skickas med varje begäran.
- OAuth: Ett mer komplext protokoll för säker delegerad åtkomst.
Förvara alltid dina API-nycklar hemligt och hårdkoda dem aldrig direkt i din offentliga kod!
Python och HTTP-begäranden
För att interagera med API:er måste Python skicka HTTP-begäranden. Biblioteket requests är standardsättet att göra detta.
Så här skickar du en enkel GET-begäran till ett offentligt API:
import requests
def fetch_joke():
url = "https://official-joke-api.appspot.com/random_joke"
response = requests.get(url)
if response.status_code == 200:
return response.json()
else:
return {"error": "Could not fetch joke."}
if __name__ == "__main__":
joke_data = fetch_joke()
if "error" not in joke_data:
print(f"Setup: {joke_data['setup']}")
print(f"Punchline: {joke_data['punchline']}")
else:
print(joke_data["error"])
Från funktion till LangChain-verktyg
Nu omvandlar vi vår API-anropande funktion till ett LangChain-Tool. Det innebär att definiera en Pydantic-modell för verktygets indata och kapsla in funktionen.
Agenten använder detta schema för att förstå hur verktyget ska anropas.
from langchain.tools import BaseTool
from pydantic import BaseModel, Field
import requests
# Define the input schema for the tool
class JokeInput(BaseModel):
# Our joke API doesn't need specific input,
# but tools usually define what they expect.
query: str = Field(description="A placeholder query, not used by this API.")
class JokeTool(BaseTool):
name = "get_random_joke"
description = (
"Useful for when you need a random joke. "
"Returns a setup and a punchline."
)
args_schema: type[BaseModel] = JokeInput
def _run(self, query: str):
url = "https://official-joke-api.appspot.com/random_joke"
response = requests.get(url)
if response.status_code == 200:
joke = response.json()
return f"Setup: {joke['setup']}\nPunchline: {joke['punchline']}"
return "Failed to fetch a joke."
async def _arun(self, query: str):
# Asynchronous version (optional, but good practice)
raise NotImplementedError("Asynchronous call not implemented for this tool yet.")
if __name__ == "__main__":
joke_tool = JokeTool()
print(joke_tool._run("tell me a joke"))
Agent med API-verktyg
När vårt JokeTool är klart kan vi göra det tillgängligt för en LangChain-agent. Agenten avgör sedan när och hur verktyget ska användas utifrån användarens prompt.
Kom ihåg att initiera din LLM först!
# Assuming you have an OpenAI API key set as an environment variable
# export OPENAI_API_KEY="..."
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub
from langchain.tools import BaseTool
from pydantic import BaseModel, Field
import requests
import os
# Re-define JokeTool for completeness in runnable snippet
class JokeInput(BaseModel):
query: str = Field(description="A placeholder query, not used by this API.")
class JokeTool(BaseTool):
name = "get_random_joke"
description = "Useful for when you need a random joke. Returns a setup and a punchline."
args_schema: type[BaseModel] = JokeInput
def _run(self, query: str):
url = "https://official-joke-api.appspot.com/random_joke"
response = requests.get(url)
if response.status_code == 200:
joke = response.json()
return f"Setup: {joke['setup']}\nPunchline: {joke['punchline']}"
return "Failed to fetch a joke."
async def _arun(self, query: str):
raise NotImplementedError("Async not implemented.")
if __name__ == "__main__":
# Ensure OPENAI_API_KEY is set in environment
if not os.getenv("OPENAI_API_KEY"):
print("Please set your OPENAI_API_KEY environment variable.")
exit()
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
tools = [JokeTool()]
# Get the prompt for the ReAct agent
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
print("Agent is ready!")
# Example usage will be in the next scene.
Agenten använder API-verktyget
Nu ber vi vår agent att berätta ett skämt. Observera hur den använder verktyget get_random_joke som vi tillhandahöll.
Inställningen verbose=True hjälper oss att se agentens ”tankeprocess” och verktygsanrop.
# This code block assumes the setup from the previous scene
# has been executed and the agent_executor is available.
# In a real interactive environment, you'd run this after Scene 7.
# For demonstration, we re-initialize parts needed for execution
import os
from langchain_openai import ChatOpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub
from langchain.tools import BaseTool
from pydantic import BaseModel, Field
import requests
# Re-define JokeTool for completeness
class JokeInput(BaseModel):
query: str = Field(description="A placeholder query, not used by this API.")
class JokeTool(BaseTool):
name = "get_random_joke"
description = "Useful for when you need a random joke. Returns a setup and a punchline."
args_schema: type[BaseModel] = JokeInput
def _run(self, query: str):
url = "https://official-joke-api.appspot.com/random_joke"
response = requests.get(url)
if response.status_code == 200:
joke = response.json()
return f"Setup: {joke['setup']}\nPunchline: {joke['punchline']}"
return "Failed to fetch a joke."
async def _arun(self, query: str):
raise NotImplementedError("Async not implemented.")
if __name__ == "__main__":
if not os.getenv("OPENAI_API_KEY"):
print("Please set your OPENAI_API_KEY environment variable.")
exit()
llm = ChatOpenAI(model="gpt-3.5-turbo", temperature=0)
tools = [JokeTool()]
prompt = hub.pull("hwchase17/react")
agent = create_react_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
print("--- Asking the agent for a joke ---")
response = agent_executor.invoke({"input": "Tell me a random joke."})
print("\nAgent's final answer:")
print(response["output"])
Robust API-integration
Externa API:er kan sluta fungera på grund av nätverksproblem, hastighetsbegränsningar, ogiltiga begäranden eller serverfel. Det är viktigt att bygga robusta verktyg som hanterar sådana situationer på ett smidigt sätt.
- Try-except-block: Fånga nätverksfel.
- Statuskoder: Kontrollera HTTP-statuskoder (till exempel 200 för lyckade anrop, 4xx för klientfel och 5xx för serverfel).
- Informativa meddelanden: Returnera tydliga felmeddelanden till agenten.
Bortom enkla API:er
Principerna vi har lärt oss här kan tillämpas på mer komplexa API:er. Du kan stöta på:
- API:er som kräver särskilda headers eller data i request body (POST-begäranden).
- Sidindelning för stora datamängder.
- Asynkrona anrop för långvariga åtgärder.
Läs alltid API:ets officiella dokumentation!
Kontroll av API-integration
Du har lärt dig hur du kan ge dina agenter större möjligheter genom att ansluta dem till externa API:er. Nu testar vi din förståelse.
Sammanfattning och nästa steg
Bra jobbat! Du har lärt dig hur du kan ge dina AI-agenter större möjligheter genom att ansluta dem till externa API:er.
- API:er utökar agentens funktioner bortom dess interna kunskap.
- Anpassade verktyg kapslar in API-anrop och ger agenten ett strukturerat gränssnitt.
- Autentisering och felhantering är avgörande för robusta integrationer.
Den här färdigheten är grundläggande för att bygga verkligt dynamiska och användbara AI-agenter. Fortsätt utforska olika API:er!
Lär dig AI-agenter med LangChain och autonoma arbetsflöden med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 50
Vanliga frågor
Är lektionen ”Integrering med externa API:er” gratis?
Ja – hela texten till ”Integrering med externa API:er” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i AI-agenter med LangChain och autonoma arbetsflöden, kan Ni uppgradera till CoddyKit PRO. Kursen i AI-agenter med LangChain och autonoma arbetsflöden innehåller totalt 4 lektioner.
Vad lär jag mig i ”Integrering med externa API:er”?
Anslut Era agenter till tredjepartstjänster och proprietära API:er för att dra nytta av ett stort ekosystem av data och funktioner. Ni övar på AI-agenter med LangChain och autonoma arbetsflöden med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig AI-agenter med LangChain och autonoma arbetsflöden?
Du behöver inga förkunskaper. Utbildningen i AI-agenter med LangChain och autonoma arbetsflöden på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 2 av 4.
Hur lång tid tar lektionen ”Integrering med externa API:er”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här AI-agenter med LangChain och autonoma arbetsflöden-lektionen?
Ja. Varje AI-agenter med LangChain och autonoma arbetsflöden-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Skapa anpassade LangChain Tools
- Integrering med externa API:er
- Webbskrapning och datautökning
- Toolkits och strukturerade verktygsindata