Skip to main content

Инструменты на основе API

Инструменты на основе API позволяют автономным агентам взаимодействовать с внешними сервисами, расширяя их возможности за счет доступа к дополнительной информации, обработки данных и выполнения действий, которые невозможно выполнить локально. Эти инструменты используют интерфейсы прикладного программирования (API) для связи с публичными или частными сервисами, предоставляя динамический и масштабируемый способ расширения функциональности агента.

Инструменты на основе API особенно ценны в сценариях, где агенту необходимо интегрироваться с различными внешними системами, получать данные в реальном времени или выполнять сложные вычисления, которые были бы слишком ресурсоемкими для внутренней обработки. Подключаясь к API, агенты могут получить доступ к широкому спектру сервисов, таких как информация о погоде, данные фондового рынка, сервисы перевода и многое другое, что позволяет им предоставлять более богатые и точные ответы на пользовательские запросы.

Преимущества API-инструментов

Используя внешние сервисы, эти инструменты могут значительно расширить диапазон задач, которые может выполнять агент. Например, агент может использовать API погоды для предоставления текущих погодных условий и прогнозов, финансовый API для получения цен на акции или API перевода для поддержки нескольких языков. Эта способность интегрировать разнообразные внешние сервисы значительно расширяет функциональность агента, и все это без необходимости переобучения модели.

Доступ к данным в реальном времени — еще одно важное преимущество инструментов на основе API. API позволяют агентам получать доступ к самой актуальной информации из внешних источников, обеспечивая, чтобы их ответы и действия основывались на актуальных данных. Это особенно важно для приложений, которые зависят от своевременной и точной информации, таких как финансовые торговые системы или системы экстренного реагирования, где решения должны приниматься быстро на основе последних доступных данных.

Пример: Поиск в Wikipedia

Чтобы проиллюстрировать реализацию инструментов на основе API, давайте начнем с предоставления вашему агенту возможности просматривать открытый веб для получения дополнительной информации. В этом фрагменте кода мы регистрируем инструмент для получения информации из Wikipedia, шаг к полноценному веб-браузинговому агенту:

from langchain_openai import ChatOpenAI
from langchain_community.tools import WikipediaQueryRun
from langchain_community.utilities import WikipediaAPIWrapper
from langchain_core.messages import HumanMessage

api_wrapper = WikipediaAPIWrapper(top_k_results=1, doc_content_chars_max=300)
tool = WikipediaQueryRun(api_wrapper=api_wrapper)

# Инициализируем LLM с GPT-4o и привязываем инструменты
llm = ChatOpenAI(model_name="gpt-4o", temperature=0)
llm_with_tools = llm.bind_tools([tool])

messages = [HumanMessage("What was the most impressive thing about Buzz Aldrin?")]
ai_msg = llm_with_tools.invoke(messages)
messages.append(ai_msg)

for tool_call in ai_msg.tool_calls:
tool_msg = tool.invoke(tool_call)
print(tool_msg.name)
print(tool_call['args'])
print(tool_msg.content)
messages.append(tool_msg)

final_response = llm_with_tools.invoke(messages)
print(final_response.content)

Базовая модель идентифицирует объект интереса в запросе и ищет в Wikipedia этот термин. Затем она использует эту дополнительную информацию для генерации своего окончательного ответа при решении вопроса.

Пример: Получение данных фондового рынка

Давайте теперь рассмотрим второй пример для агента, который предназначен для получения и отображения данных фондового рынка. Этот процесс включает определение взаимодействия с API, обработку ответа и интеграцию инструмента в рабочий процесс агента. Следуя этому подходу, агенты могут бесшовно интегрировать внешние источники данных, улучшая общую функциональность и эффективность.

Сначала мы определяем функцию, которая взаимодействует с API фондового рынка. Затем мы регистрируем эту функцию как инструмент для нашего агента, и мы можем затем вызвать её так же, как предыдущие инструменты:

from langchain_core.tools import tool
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage
import requests

@tool
def get_stock_price(ticker: str) -> float:
"""Get the stock price for the stock exchange ticker for the company."""
api_url = f"https://api.example.com/stocks/{ticker}"
response = requests.get(api_url)
if response.status_code == 200:
data = response.json()
return data["price"]
else:
raise ValueError(f"Failed to fetch stock price for {ticker}")

# Инициализируем LLM с GPT-4o и привязываем инструменты
llm = ChatOpenAI(model_name="gpt-4o", temperature=0)
llm_with_tools = llm.bind_tools([get_stock_price])

messages = [HumanMessage("What is the stock price of Apple?")]
ai_msg = llm_with_tools.invoke(messages)
messages.append(ai_msg)

for tool_call in ai_msg.tool_calls:
tool_msg = get_stock_price.invoke(tool_call)
print(tool_msg.name)
print(tool_call['args'])
print(tool_msg.content)
messages.append(tool_msg)

final_response = llm_with_tools.invoke(messages)
print(final_response.content)

Аналогичные инструменты можно создать для поиска по информации, специфичной для команды или компании. Предоставляя вашему агенту инструменты, необходимые для доступа к информации, которая ему нужна для выполнения задачи, и конкретные инструменты для работы с этой информацией, вы можете значительно расширить объем и сложность задач, которые можно автоматизировать.

Рекомендации по проектированию API-инструментов

При проектировании API-инструментов для агентов сосредоточьтесь на надежности, безопасности и корректной обработке ошибок. Внешние сервисы могут выходить из строя, поэтому агентам нужны резервные варианты или четкие сообщения об ошибках. Защищайте все коммуникации с помощью HTTPS и строгой аутентификации, особенно для чувствительных данных.

Следите за лимитами скорости API, чтобы избежать сбоев, и обеспечивайте соответствие законам о конфиденциальности данных — анонимизируйте или обфусцируйте пользовательские данные при необходимости. Надежно обрабатывайте ошибки, чтобы агент мог восстановиться после сетевых проблем или недопустимых ответов без нарушения пользовательского опыта. Когда это возможно, рассмотрите альтернативы и несколько поставщиков для большей надежности, если какой-либо поставщик деградирует.

API наделяют агентов данными в реальном времени, тяжелыми вычислениями и внешними действиями, которые они не могли бы выполнить в одиночку, делая их гораздо более способными и эффективными.