LangChain / RAG / vektordatabaser · leksjon

Integrering av eksterne API-er som verktøy

Koble RAG-systemet til eksterne API-er og tjenester, slik at agenter kan hente sanntidsdata eller utføre handlinger.

Leksjon 3 av 411 trinn

Integrering av eksterne API-er som verktøy er en gratis leksjon i LangChain / RAG / vektordatabaser på CoddyKit. Dette er leksjon 3 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 LangChain / RAG / vektordatabaser, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i LangChain / RAG / vektordatabaser inneholder totalt 4 leksjoner.

Agenter og eksterne API-er

Agenter kan gjøre mer enn bare å generere tekst! De kan samhandle med den virkelige verden ved hjelp av spesialfunksjoner som kalles «verktøy». Eksterne API-er egner seg perfekt til dette, fordi de lar agenter hente sanntidsdata eller utføre handlinger.

Verktøy for samhandling med den virkelige verden

I LangChain er et verktøy i praksis en Python-funksjon som en agent kan kalle. Disse funksjonene kan pakke inn nesten hva som helst:

  • Søke på nettet
  • Spørre en database
  • Sende e-post
  • Samhandle med et eksternt API

Verktøy gir agentene superkrefter og utvider funksjonaliteten deres utover den interne kunnskapen.

Utforme et API-verktøy

For å integrere et eksternt API definerer du først en standard Python-funksjon som utfører API-kallet. Deretter pakker du inn denne funksjonen ved hjelp av LangChains Tool-klasse.

Tool trenger:

  • Et navn: Hvordan agenten viser til verktøyet.
  • En beskrivelse: Hva verktøyet gjør, og hvilken inndata det forventer.
  • Den faktiske funksjonen (func) som utfører handlingen.

Eksempel på en enkel verktøyfunksjon

La oss starte med en grunnleggende Python-funksjon som simulerer et API-kall. Denne funksjonen skal «hente gjeldende klokkeslett» for en bestemt by.

Legg merke til at funksjonen tar ett enkelt strengargument, som agenten oppgir basert på resonnementet sitt.

from langchain.tools import Tool

def get_current_time(city: str) -> str:
    """Gets the current time for a specified city."""
    # This would typically make an actual API call
    if city.lower() == "london":
        return "10:30 AM GMT"
    elif city.lower() == "new york":
        return "05:30 AM EST"
    else:
        return "Time not available for that city."

# This function will be wrapped into a Tool later.

Agent som bruker et enkelt verktøy

Her er et komplett eksempel der en LangChain-agent bruker verktøyet get_current_time. Agenten avgjør når verktøyet skal kalles, basert på brukerens forespørsel og beskrivelsen av verktøyet.

Merk: Du må angi miljøvariabelen OPENAI_API_KEY for at dette skal kjøre.

import os
from langchain.tools import Tool
from langchain_openai import OpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub

# Mock function for getting time (simulates API)
def get_current_time(city: str) -> str:
    """Gets the current time for a specified city."""
    if city.lower() == "london":
        return "10:30 AM GMT"
    elif city.lower() == "new york":
        return "05:30 AM EST"
    else:
        return "Time not available for that city."

# Create the LangChain Tool
time_tool = Tool(
    name="get_time",
    func=get_current_time,
    description="Useful for getting the current time for a given city. Input should be a city name (e.g., 'London')."
)

# List of tools available to the agent
tools = [time_tool]

# Initialize the LLM (ensure OPENAI_API_KEY is set)
llm = OpenAI(temperature=0)

# Pull the ReAct prompt template from LangChain Hub
prompt = hub.pull("hwchase17/react")

# Create the agent
agent = create_react_agent(llm, tools, prompt)

# Create the AgentExecutor to run the agent
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Invoke the agent with a query
response = agent_executor.invoke({"input": "What time is it in London?"})
print(response["output"])

Koble til ekte API-er med `requests`

For API-interaksjoner i den virkelige verden er Python-biblioteket requests et naturlig førstevalg. Det gjør det enklere å sende HTTP-forespørsler til eksterne tjenester.

Inne i verktøyfunksjonen sender du vanligvis en forespørsel, mottar et HTTP-svar og analyserer deretter innholdet (ofte JSON) for å hente ut relevante data.

import requests

def fetch_data_from_api(query: str) -> str:
    """Fetches data from a hypothetical external API."""
    try:
        # Example: calling a public API (e.g., a mock weather API)
        # Replace with your actual API endpoint and parameters
        api_url = f"https://api.example.com/data?q={query}" # Placeholder URL
        response = requests.get(api_url)
        response.raise_for_status() # Raise HTTPError for bad responses (4xx or 5xx)
        data = response.json()
        return str(data) # Return relevant part of the data
    except requests.exceptions.RequestException as e:
        return f"Error fetching data: {e}"

# This function would then be wrapped in a LangChain Tool.

Bygge et værverktøy

La oss lage et mer praktisk eksempel: et verktøy som henter gjeldende vær for en by ved hjelp av et simulert vær-API. I et reelt scenario ville du integrert med en tjeneste som OpenWeatherMap.

Legg merke til den detaljerte beskrivelsen, som veileder LLM-en om inndataformatet.

import requests
from langchain.tools import Tool

# Mock weather API function
def get_weather_for_city(city: str) -> str:
    """
    Fetches the current weather for a specified city.
    Uses a mock API for demonstration.
    """
    # In a real app, replace with an actual weather API call
    mock_weather_data = {
        "london": {"temperature": "15C", "conditions": "Cloudy"},
        "new york": {"temperature": "22C", "conditions": "Sunny"},
        "paris": {"temperature": "18C", "conditions": "Partly Cloudy"}
    }
    weather = mock_weather_data.get(city.lower())
    if weather:
        return f"The current weather in {city} is {weather['temperature']} and {weather['conditions']}."
    else:
        return f"Weather data not available for {city}."

# Create the LangChain Tool for weather
weather_tool = Tool(
    name="get_weather",
    func=get_weather_for_city,
    description="Useful for getting the current weather conditions (temperature, conditions) for a specific city. Input should be a city name (e.g., 'London')."
)

# This tool can now be added to an agent's tool list.

Agenten kaller vær-API-et

La oss nå se en agent bruke verktøyet get_weather. Agentens resonnement (hvis verbose=True) viser hvordan den avgjør at verktøyet skal brukes, kaller det og deretter bruker resultatet til å svare på forespørselen.

import os
from langchain.tools import Tool
from langchain_openai import OpenAI
from langchain.agents import AgentExecutor, create_react_agent
from langchain import hub

# Mock weather API function (from previous scene)
def get_weather_for_city(city: str) -> str:
    """
    Fetches the current weather for a specified city.
    Uses a mock API for demonstration.
    """
    mock_weather_data = {
        "london": {"temperature": "15C", "conditions": "Cloudy"},
        "new york": {"temperature": "22C", "conditions": "Sunny"},
        "paris": {"temperature": "18C", "conditions": "Partly Cloudy"}
    }
    weather = mock_weather_data.get(city.lower())
    if weather:
        return f"The current weather in {city} is {weather['temperature']} and {weather['conditions']}."
    else:
        return f"Weather data not available for {city}."

# Create the LangChain Tool for weather
weather_tool = Tool(
    name="get_weather",
    func=get_weather_for_city,
    description="Useful for getting the current weather conditions (temperature, conditions) for a specific city. Input should be a city name (e.g., 'London')."
)

# List of tools available to the agent
tools = [weather_tool]

# Initialize the LLM (ensure OPENAI_API_KEY is set)
llm = OpenAI(temperature=0)

# Pull the ReAct prompt template from LangChain Hub
prompt = hub.pull("hwchase17/react")

# Create the agent
agent = create_react_agent(llm, tools, prompt)

# Create the AgentExecutor to run the agent
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)

# Invoke the agent with a query
response = agent_executor.invoke({"input": "What's the weather like in Paris?"})
print(response["output"])

Effektive verktøybeskrivelser

LLM-en er i stor grad avhengig av verktøyets description for å avgjøre om og hvordan det skal brukes. Gjør beskrivelsene:

  • Klare og konsise: Angi nøyaktig hva verktøyet gjør.
  • Spesifikke om inndata: Forklar tydelig hva slags argument det forventer.
  • Formålsorienterte: Forklar hvorfor verktøyet er nyttig, eller i hvilke situasjoner det skal brukes.
  • Inneholder eksempler: Hvis inndataene er komplekse, bør du vise et eksempel på formatet.

En godt utformet beskrivelse er avgjørende for at agenten skal lykkes.

Kontroll av verktøyintegrasjon

Du bygger en agent som skal hjelpe brukere med å finne sanntidsinformasjon. Du må lage et verktøy som henter gjeldende aksjekurser for en bestemt selskapskode (for eksempel «AAPL») ved å kalle et eksternt API.

Hvilket av alternativene nedenfor beskriver det viktigste aspektet ved definisjonen av Tool for at LLM-en skal forstå og bruke den riktig?

Oppsummering: API-er som agentverktøy

Du har lært hvordan du kan styrke LangChain-agenter ved å integrere eksterne API-er som verktøy. Dette gjør at agentene kan:

  • få tilgang til sanntidsdata fra internett
  • utføre handlinger i den virkelige verden (for eksempel sende e-post eller oppdatere databaser)
  • utvide funksjonaliteten langt utover de opprinnelige treningsdataene

Ved å pakke inn API-kall i Tool-objekter med gode beskrivelser forbedrer du agentens intelligens og nytteverdi betydelig.

Gratis å komme i gang

Lær deg LangChain / RAG / vektordatabaser 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
48

Ofte stilte spørsmål

Er leksjonen «Integrering av eksterne API-er som verktøy» gratis?

Ja – hele teksten i «Integrering av eksterne API-er som verktøy» 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 LangChain / RAG / vektordatabaser-kurset, kan du oppgradere til CoddyKit PRO. Kurset i LangChain / RAG / vektordatabaser inneholder totalt 4 leksjoner.

Hva lærer jeg i «Integrering av eksterne API-er som verktøy»?

Koble RAG-systemet til eksterne API-er og tjenester, slik at agenter kan hente sanntidsdata eller utføre handlinger. Du øver på LangChain / RAG / vektordatabaser 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 LangChain / RAG / vektordatabaser?

Ingen tidligere erfaring er nødvendig. LangChain / RAG / vektordatabaser 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 3 av 4.

Hvor lang tid tar leksjonen «Integrering av eksterne API-er som verktøy»?

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 LangChain / RAG / vektordatabaser-leksjonen?

Ja. Alle LangChain / RAG / vektordatabaser-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. LangChain-agenter og verktøykonsepter
  2. Bygging av arbeidsflyter for multi-agent-RAG
  3. Integrering av eksterne API-er som verktøy
  4. Minne og tilstand i agentisk RAG
← Tilbake til LangChain / RAG / vektordatabaser