Integreren met externe API’s
Verbind uw agents met services van derden en bedrijfseigen API’s om gebruik te maken van een groot ecosysteem aan gegevens en functionaliteit
Integreren met externe API’s is een gratis AI-agents met LangChain en autonome werkstromen-les op CoddyKit. Dit is les 2 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject AI-agents met LangChain en autonome werkstromen. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus AI-agents met LangChain en autonome werkstromen bevat in totaal 4 lessen.
Agents en externe API's
AI-agents zijn krachtig, maar hun kennis is vaak beperkt tot hun trainingsgegevens. Om met de echte wereld te communiceren, moeten ze actuele informatie ophalen of acties uitvoeren.
Daar komen externe API's van pas! Ze vormen de brug waarmee agents toegang krijgen tot een enorm ecosysteem van diensten en gegevens.
Hulpmiddelen voor externe toegang
In LangChain gebruiken agents hulpmiddelen om met externe systemen te communiceren. Zie ze als gespecialiseerde functies die een agent indien nodig kan 'aanroepen'.
- Een hulpmiddel kan op het web zoeken.
- Een ander kan weergegevens ophalen.
- Of het kan zelfs een e-mail versturen!
We bouwen hulpmiddelen die API-aanroepen omhullen.
API: de interface van je agent
Een API (Application Programming Interface) is een verzameling regels waarmee verschillende softwaretoepassingen met elkaar kunnen communiceren.
Wanneer je agent een API gebruikt, verstuurt deze een verzoek (bijvoorbeeld een vraag) en ontvangt deze een antwoord (de reactie of gegevens).
- Eindpunt: een specifieke URL voor een API-functie.
- Verzoek: wat je agent verstuurt (bijvoorbeeld: 'geef me het actuele weer voor Londen').
- Antwoord: wat de API terugstuurt (bijvoorbeeld weergegevens in JSON).
API-toegang beveiligen
Veel externe API's vereisen authenticatie om ervoor te zorgen dat alleen bevoegde gebruikers toegang krijgen tot hun diensten. Veelgebruikte methoden zijn:
- API-sleutels: een unieke tekenreeks die met elk verzoek wordt meegestuurd.
- OAuth: een complexer protocol voor veilige gedelegeerde toegang.
Houd je API-sleutels altijd geheim en neem ze nooit rechtstreeks op in je openbare code!
Python en HTTP-verzoeken
Om met API's te communiceren, moet Python HTTP-verzoeken versturen. De bibliotheek requests is de standaardmanier om dit te doen.
Zo stuur je een eenvoudig GET-verzoek naar een openbare 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"])
Van functie naar LangChain-hulpmiddel
Laten we nu onze functie die een API aanroept omzetten in een LangChain-Tool. Hiervoor definiëren we een Pydantic-model voor de invoer van het hulpmiddel en omhullen we de functie.
De agent gebruikt dit schema om te begrijpen hoe het hulpmiddel moet worden aangeroepen.
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 met API-hulpmiddel
Nu onze JokeTool klaar is, kunnen we deze aan een LangChain-agent aanbieden. De agent bepaalt vervolgens op basis van de prompt van de gebruiker wanneer en hoe dit hulpmiddel moet worden gebruikt.
Denk eraan om eerst je LLM te initialiseren!
# 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.
Agent gebruikt het API-hulpmiddel
Laten we onze agent nu vragen om een grap te vertellen. Bekijk hoe de agent het hulpmiddel get_random_joke gebruikt dat we hebben aangeboden.
Met de instelling verbose=True kun je het 'denkproces' en de aanroepen van hulpmiddelen door de agent bekijken.
# 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"])
Robuuste API-integratie
Externe API's kunnen mislukken door netwerkproblemen, limieten voor de aanroe frequentie, ongeldige verzoeken of serverfouten. Het is cruciaal om robuuste hulpmiddelen te bouwen die deze situaties op een nette manier afhandelen.
- Try-except-blokken: vangen netwerkfouten op.
- Statuscodes: controleer HTTP-statuscodes (bijvoorbeeld 200 voor succes, 4xx voor fouten aan de clientzijde en 5xx voor serverfouten).
- Informatieve meldingen: retourneer duidelijke foutmeldingen aan de agent.
Verder dan eenvoudige API's
De principes die je hier hebt geleerd, zijn ook van toepassing op complexere API's. Je kunt bijvoorbeeld te maken krijgen met:
- API's die specifieke headers of gegevens in de hoofdtekst vereisen (POST-verzoeken).
- Paginering voor grote gegevensverzamelingen.
- Asynchrone aanroepen voor langdurige bewerkingen.
Raadpleeg altijd de officiële documentatie van de API!
Controle van API-integratie
Je hebt geleerd hoe je je agents krachtiger maakt door ze met externe API's te verbinden. Laten we je begrip testen.
Samenvatting en volgende stappen
Goed gedaan! Je hebt geleerd hoe je je AI-agents krachtiger maakt door ze met externe API's te verbinden.
- API's breiden de mogelijkheden van een agent uit tot voorbij diens interne kennis.
- Aangepaste hulpmiddelen omhullen API-aanroepen en bieden de agent een gestructureerde interface.
- Authenticatie en foutafhandeling zijn essentieel voor robuuste integraties.
Deze vaardigheid is essentieel voor het bouwen van echt dynamische en nuttige AI-agents. Blijf verschillende API's verkennen!
Leer AI-agents met LangChain en autonome werkstromen met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 50
Veelgestelde vragen
Is de les “Integreren met externe API’s” gratis?
Ja — de volledige tekst van “Integreren met externe API’s” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus AI-agents met LangChain en autonome werkstromen wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus AI-agents met LangChain en autonome werkstromen bevat in totaal 4 lessen.
Wat leer ik in “Integreren met externe API’s”?
Verbind uw agents met services van derden en bedrijfseigen API’s om gebruik te maken van een groot ecosysteem aan gegevens en functionaliteit Je oefent met AI-agents met LangChain en autonome werkstromen door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met AI-agents met LangChain en autonome werkstromen te beginnen?
Ervaring vooraf is niet nodig. AI-agents met LangChain en autonome werkstromen op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 2 van 4.
Hoe lang duurt de les “Integreren met externe API’s”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over AI-agents met LangChain en autonome werkstromen?
Ja. Elke les over AI-agents met LangChain en autonome werkstromen bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Aangepaste LangChain-tools maken
- Integreren met externe API’s
- Webscraping en data augmentation
- Toolkits en gestructureerde toolinvoer