Integracja z zewnętrznymi API
Połącz agentów z usługami zewnętrznymi i własnościowymi API, aby wykorzystać bogaty ekosystem danych i funkcji.
Integracja z zewnętrznymi API to bezpłatna lekcja AI Agents with LangChain & Autonomous Workflows na CoddyKit. To lekcja 2 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej AI Agents with LangChain & Autonomous Workflows, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs AI Agents with LangChain & Autonomous Workflows zawiera 4 lekcji w sumie.
Agenci i zewnętrzne API
Agenci AI są potężnymi narzędziami, ale ich wiedza często ogranicza się do danych treningowych. Aby wchodzić w interakcje z rzeczywistym światem, muszą pobierać aktualne informacje lub wykonywać działania.
Właśnie tutaj przydają się zewnętrzne API! Stanowią one pomost umożliwiający agentom dostęp do rozległego ekosystemu usług i danych.
Narzędzia dostępu zewnętrznego
W LangChain Tools to sposób, w jaki agenci wchodzą w interakcje z systemami zewnętrznymi. Można myśleć o nich jak o wyspecjalizowanych funkcjach, które agent może „wywołać”, gdy są potrzebne.
- Narzędzie może wyszukiwać informacje w internecie.
- Inne może pobierać dane pogodowe.
- Może nawet wysyłać wiadomości e-mail!
Zbudujemy narzędzia opakowujące wywołania API.
API: interfejs agenta
API (Application Programming Interface) to zestaw reguł umożliwiających komunikację między różnymi aplikacjami.
Gdy agent korzysta z API, wysyła żądanie (na przykład zadaje pytanie) i otrzymuje odpowiedź (wynik lub dane).
- Endpoint: Konkretny URL funkcji API.
- Żądanie: Dane wysyłane przez agenta (np. „pobierz dla mnie aktualną pogodę w Londynie”).
- Odpowiedź: Dane zwracane przez API (np. dane pogodowe w formacie JSON).
Zabezpieczanie dostępu do API
Wiele zewnętrznych API wymaga uwierzytelniania, aby zapewnić dostęp do usług wyłącznie upoważnionym użytkownikom. Typowe metody obejmują:
- Klucze API: Unikalny tekst przekazywany z każdym żądaniem.
- OAuth: Bardziej złożony protokół bezpiecznego dostępu delegowanego.
Klucze API należy zawsze przechowywać w tajemnicy i nigdy nie umieszczać ich bezpośrednio w publicznym kodzie!
Python i żądania HTTP
Aby komunikować się z API, Python musi wysyłać żądania HTTP. Biblioteka requests to standardowy sposób wykonywania takich operacji.
Oto sposób wykonania prostego żądania GET do publicznego 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"])
Od funkcji do narzędzia LangChain
Teraz przekształćmy naszą funkcję wywołującą API w narzędzie LangChain Tool. Wymaga to zdefiniowania modelu Pydantic dla danych wejściowych narzędzia i opakowania funkcji.
Agent użyje tego schematu, aby zrozumieć, jak wywoływać narzędzie.
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 z narzędziem API
Gdy nasze JokeTool jest gotowe, możemy udostępnić je agentowi LangChain. Agent zdecyduje wtedy, kiedy i jak użyć tego narzędzia na podstawie promptu użytkownika.
Należy pamiętać, aby najpierw zainicjalizować LLM!
# 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 korzystający z narzędzia API
Poprośmy teraz agenta o opowiedzenie dowcipu. Obserwuj, jak korzysta z udostępnionego mu narzędzia get_random_joke.
Ustawienie verbose=True pozwala zobaczyć „tok rozumowania” agenta i wywołania narzędzi.
# 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"])
Niezawodna integracja z API
Zewnętrzne API mogą nie działać z powodu problemów z siecią, limitów zapytań, nieprawidłowych żądań lub błędów serwera. Niezwykle ważne jest tworzenie odpornych narzędzi, które prawidłowo obsługują takie sytuacje.
- Bloki try-except: Przechwytują błędy sieciowe.
- Kody statusu: Sprawdzają kody statusu HTTP (np. 200 oznacza powodzenie, 4xx — błędy po stronie klienta, a 5xx — błędy serwera).
- Informacyjne komunikaty: Zwracają agentowi jasne komunikaty o błędach.
Poza prostymi API
Omówione tutaj zasady można stosować również do bardziej złożonych API. Mogą Państwo napotkać:
- API wymagające określonych nagłówków lub danych w treści żądania (żądania POST).
- Stronicowanie w przypadku dużych zbiorów danych.
- Wywołania asynchroniczne dla długo trwających operacji.
Należy zawsze korzystać z oficjalnej dokumentacji API!
Sprawdź integrację z API
Wiedzą już Państwo, jak zwiększać możliwości agentów, łącząc je z zewnętrznymi API. Sprawdźmy tę wiedzę.
Podsumowanie i kolejne kroki
Świetna praca! Wiedzą już Państwo, jak zwiększać możliwości agentów AI, łącząc je z zewnętrznymi API.
- API rozszerzają możliwości agenta poza jego wewnętrzną wiedzę.
- Niestandardowe narzędzia opakowują wywołania API, zapewniając agentowi uporządkowany interfejs.
- Uwierzytelnianie i obsługa błędów mają kluczowe znaczenie dla niezawodnych integracji.
Ta umiejętność ma podstawowe znaczenie przy tworzeniu naprawdę dynamicznych i użytecznych agentów AI. Warto nadal poznawać różne API!
Ucz się AI Agents with LangChain & Autonomous Workflows dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 12
- Lekcje
- 50
Często zadawane pytania
Czy lekcja „Integracja z zewnętrznymi API” jest bezpłatna?
Tak — pełny tekst „Integracja z zewnętrznymi API” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu AI Agents with LangChain & Autonomous Workflows, przejdź na CoddyKit PRO. Kurs AI Agents with LangChain & Autonomous Workflows zawiera 4 lekcji w sumie.
Co nauczysz się w „Integracja z zewnętrznymi API”?
Połącz agentów z usługami zewnętrznymi i własnościowymi API, aby wykorzystać bogaty ekosystem danych i funkcji. Ćwiczysz AI Agents with LangChain & Autonomous Workflows z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć AI Agents with LangChain & Autonomous Workflows?
Nie wymagamy żadnego doświadczenia. AI Agents with LangChain & Autonomous Workflows w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 2 z 4.
Ile czasu zajmuje lekcja „Integracja z zewnętrznymi API”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji AI Agents with LangChain & Autonomous Workflows?
Tak. Każda lekcja AI Agents with LangChain & Autonomous Workflows zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Tworzenie własnych narzędzi LangChain
- Integracja z zewnętrznymi API
- Web scraping i wzbogacanie danych
- Toolkity i ustrukturyzowane dane wejściowe narzędzi