0Pricing
AI Agents · Урок

Агент-исследователь для веб-поиска

Объедините инструмент поиска, инструмент загрузки страниц и LLM, чтобы исследовать тему и написать резюме с источниками.

«Агент-исследователь для веб-поиска» — бесплатный урок AI Agents на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Agents, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Agents содержит 4 уроков всего.

Части этого урока еще не переведены и отображаются на английском.

Цель проекта

Создайте агента, который исследует тему: ищет информацию в интернете, загружает страницы и пишет краткое резюме с источниками — небольшую версию Perplexity.

Необходимые инструменты

  1. search — отправляет запрос к API поиска (Tavily, Serper, Brave) и возвращает результаты
  2. fetch_url — загружает страницу и возвращает очищенный текст
  3. answer — агент пишет итоговое резюме с цитатами

Step 1: Search Tool

import requests

def search(query: str, k: int = 5) -> list[dict]:
    r = requests.post(
        'https://api.tavily.com/search',
        json={'api_key': TAVILY_KEY, 'query': query, 'max_results': k}
    )
    return r.json()['results']   # list of {url, title, snippet}

Step 2: Fetch Tool

from bs4 import BeautifulSoup

def fetch_url(url: str) -> str:
    r = requests.get(url, timeout=10)
    soup = BeautifulSoup(r.text, 'html.parser')
    for tag in soup(['script', 'style', 'nav', 'footer']):
        tag.decompose()
    return soup.get_text(separator='\n', strip=True)[:5000]   # truncate

Step 3: Tool Definitions

tools = [
    {'type': 'function', 'function': {
        'name': 'search',
        'description': 'Search the web for a query, return top results with URLs',
        'parameters': {'type': 'object', 'properties': {'query': {'type': 'string'}}, 'required': ['query']}
    }},
    {'type': 'function', 'function': {
        'name': 'fetch_url',
        'description': 'Download the text of a URL',
        'parameters': {'type': 'object', 'properties': {'url': {'type': 'string'}}, 'required': ['url']}
    }}
]
import json
print(json.dumps(tools, indent=2))

Step 4: The Agent Loop

def research(question, max_steps=8):
    messages = [
        {'role': 'system', 'content': 'You are a research agent. Use search and fetch_url to gather facts. Cite each claim with a URL.'},
        {'role': 'user', 'content': question}
    ]
    for _ in range(max_steps):
        r = oai.chat.completions.create(model='gpt-4o-mini', messages=messages, tools=tools)
        msg = r.choices[0].message
        messages.append(msg)
        if not msg.tool_calls:
            return msg.content
        for tc in msg.tool_calls:
            result = dispatch(tc)
            messages.append({'role': 'tool', 'tool_call_id': tc.id, 'content': json.dumps(result)})
    return 'Step limit reached'

Tool Dispatcher

def dispatch(tc):
    args = json.loads(tc.function.arguments)
    if tc.function.name == 'search':
        return search(**args)
    if tc.function.name == 'fetch_url':
        return fetch_url(**args)
    return {'error': 'unknown tool'}

Ограничьте число шагов

Без ограничения агент может работать бесконечно. max_steps=8 — разумное значение по умолчанию.

Обрезайте загруженные страницы

Большинство страниц занимают более 50 КБ — это слишком много. Обрезайте их до 5000 символов (примерно 1300 токенов). Модели редко требуется больше.

Учитывайте robots.txt

При работе в производственной среде браузинг должен учитывать robots.txt и условия использования сайта. Если сомневаетесь, используйте управляемый сервис поиска и загрузки.

Кэшируйте результаты

Один и тот же запрос и URL будут часто повторяться. Кэшируйте результаты в Redis на один час:

@lru_cache(maxsize=1000)
def cached_fetch(url):
    return fetch_url(url)

Обрабатывайте сбои

Сетевые ошибки — обычное дело. Возвращайте ошибку модели, чтобы она могла попробовать другой источник:

try:
    return fetch_url(url)
except Exception as e:
    return {'error': f'Could not fetch {url}: {e}'}

Принудительно добавляйте цитаты

Завершите системный промпт следующим текстом: "В итоговом ответе должны быть URL для каждого утверждения, например [1] https://..." — и рассмотрите возможность проверки схемы выхода.

Следите за стоимостью

Исследовательские агенты дороги: от 5 до 15 вызовов инструментов на вопрос, каждый из которых загружает килобайты данных. Установите ограничение бюджета на один запрос.

Ограничение числа шагов

Зачем устанавливать ограничение max_steps для цикла агента?

Повторим

Поиск + загрузка + LLM + ограничение числа шагов = работающий исследовательский агент из 50 строк. Отличный третий проект.

Часто задаваемые вопросы

Урок «Агент-исследователь для веб-поиска» бесплатный?

Да — полный текст урока «Агент-исследователь для веб-поиска» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Agents, подпишись на CoddyKit PRO. Курс AI Agents содержит 4 уроков всего.

Чему я научусь в уроке «Агент-исследователь для веб-поиска»?

Объедините инструмент поиска, инструмент загрузки страниц и LLM, чтобы исследовать тему и написать резюме с источниками. Ты практикуешь AI Agents с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Agents?

Предыдущий опыт не требуется. AI Agents на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Агент-исследователь для веб-поиска»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Agents?

Да. Каждый урок AI Agents включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Бот вопросов и ответов по вашим документам
  2. Агент для объяснения кода
  3. Агент-исследователь для веб-поиска
  4. SQL-ассистент для вашей DB
← Назад к AI Agents