AI

Создание местного агента глубокого исследования с помощью Bright Data

Научитесь автоматизировать веб-исследования с помощью интеграции API Bright Data, Streamlit и локального ИИ. Следуйте этому пошаговому руководству, чтобы создать своего личного помощника для исследований.
4 мин. чтения
Local Deep Research App with Bright Data blog iamge

В этом руководстве вы узнаете:

  • Что такое исследовательский агент и почему традиционные методы не работают
  • Как настроить Bright Data для надежного сбора данных
  • Как создать локального исследовательского агента на базе ИИ с помощью Streamlit UI
  • Как интегрировать API Bright Data с локальными моделями для получения структурированных данных

Давайте погрузимся в создание вашего интеллектуального исследовательского помощника. Мы также предлагаем вам ознакомиться с Deep Lookup, поисковой системой Bright Data на базе ИИ, которая позволяет искать в Интернете как в базе данных.

Проблема отрасли

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

Решение: Агент исследования

Агент глубоких исследований – это система ИИ, которая автоматизирует исследования от сбора до подготовки отчета. Она учитывает контекст, управляет задачами и предоставляет хорошо структурированные данные.

Ключевые компоненты:

  • Агент-планировщик: разбивает исследование на задачи
  • Подагенты-исследователи: выполняют поиск и извлекают данные
  • Агент-писатель: составляет структурированные отчеты
  • Агент условий: проверяет качество и при необходимости запускает более глубокие исследования.

В этом руководстве показано, как создать локальную исследовательскую систему, используя API Bright Data, пользовательский интерфейс Streamlit и локальные LLM для обеспечения конфиденциальности и контроля.

Необходимые условия

  • Учетная запись Bright Data с ключом API.
  • Python 3.10+
  • Зависимости:
  • запросы
  • faiss или chromadb
  • python-dotenv
  • streamlit
  • ollama (для локальных моделей)

Конфигурация Bright Data

Создайте учетную запись Bright Data

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

BRIGHT_DATA_API_KEY="ваш_bright_data_api_token_здесь"

Настройка окружения

# Создайте venv
python -m venv venv
source venv/bin/activate

# Установите зависимости
pip install requests openai chromadb python-dotenv streamlit

Реализация

Шаг 1: Исследование

Это будет наша исследовательская задача.

query = "Случаи использования ИИ в здравоохранении"

Шаг 2: Получение данных

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

import requests, os
from dotenv import load_dotenv

load_dotenv()

url = "https://api.brightdata.com/dca/trigger"
payload = {"query": query, "limit": 20}
headers = {"Authorization": f "Bearer {os.getenv('BRIGHT_DATA_API_KEY')}"}

res = requests.post(url, json=payload, headers=headers)
print(res.json())

Шаг 3: Обработка и встраивание

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

import chromadb
из chromadb.config import Settings

# Инициализация ChromaDB
client = chromadb.PersistentClient(path="./research_db")
коллекция = client.get_or_create_collection("research_data")

# Сохраняем результаты исследований
def store_research_data(results):
    documents = []
    метаданные = []
    идентификаторы = []

    for i, item in enumerate(results):
        documents.append(item.get('content', ''))
        metadatas.append({
            'source': item.get('source', ''),
            'query': query,
            'timestamp': item.get('timestamp', '')
        })
        ids.append(f "doc_{i}")

    collection.add(
        documents=documents,
        metadatas=metadatas,
        ids=ids
    )

Шаг 4: Резюме локальных моделей

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

импорт subprocess
импортировать json

def summarize_with_ollama(content, model="llama2"):
    """Резюмируем содержимое исследования, используя локальную модель Ollama"""
    try:
        result = subprocess.run(
            ['ollama', 'run', model, f "Обобщить содержание исследования: {content[:2000]}"],
            capture_output=True, 
            text=True, 
            таймаут=120
        )
        return result.stdout.strip()
    except Exception as e:
        return f "Summarization failed: {str(e)}"

# Пример использования
research_data = res.json().get('results', [])
for item in research_data:
    summary = summarize_with_ollama(item.get('content', ''))
    print(f "Summary: {summary}")
ollama run llama2 "Обобщение примеров использования ИИ в здравоохранении"

Пользовательский интерфейс Streamlit

Наконец-то создан полноценный веб-интерфейс, сочетающий сбор данных из Bright Data с локальным обобщением ИИ с помощью Ollama. Интерфейс позволяет пользователям настраивать параметры исследования, запускать сбор данных и генерировать сводки ИИ с помощью интуитивно понятной панели.

Создайте app.py

import streamlit as st
import requests, os
from dotenv import load_dotenv
import subprocess
импортировать json

load_dotenv()

st.set_page_config(page_title="Агент глубоких исследований", page_icon="🔎")

st.title("🔎 Локальный агент глубоких исследований с яркими данными")

# Конфигурация боковой панели
с помощью st.sidebar:
    st.header("Конфигурация")
    api_key = st.text_input(
        "Ключ API Bright Data", 
        type="password",
        value=os.getenv('BRIGHT_DATA_API_KEY', '')
    )
    выбор_модели = st.selectbox(
        "Модель Ollama",
        ["llama2", "mistral", "codellama"]
    )
    глубина исследования = st.slider("Глубина исследования", 5, 50, 20)

# Основной интерфейс исследования
query = st.text_input("Введите тему исследования:", "Случаи использования ИИ в здравоохранении")

col1, col2 = st.columns(2)

с col1:
    if st.button("🚀 Запустить исследование", type="primary"):
        if not api_key:
            st.error("Пожалуйста, введите ваш ключ API Bright Data")
        elif not query:
            st.error("Пожалуйста, введите тему исследования")
        else:
            with st.spinner("Сбор данных исследования..."):
                # Получение данных из Bright Data
                url = "https://api.brightdata.com/dca/trigger"
                payload = {"query": query, "limit": research_depth}
                headers = {"Authorization": f "Bearer {api_key}"}

                res = requests.post(url, json=payload, headers=headers)

                если res.status_code == 200:
                    st.success(f "Успешно собраны {len(res.json().get('results', []))} источников!")
                    st.session_state.research_data = res.json()

                    # Отображение результатов
                    for i, item in enumerate(res.json().get('results', [])):
                        with st.expander(f "Источник {i+1}: {item.get('title', 'No title')}"):
                            st.write(item.get('content', 'No content available'))
                else:
                    st.error(f "Не удалось получить данные: {res.status_code}")

с col2:
    if st.button("🤖 Summarize with Ollama"):
        if 'research_data' in st.session_state:
            with st.spinner("Генерируем резюме ИИ..."):
                for i, item in enumerate(st.session_state.research_data.get('results', [])):
                    content = item.get('content', '')[:1500]  # Ограничение длины содержимого
                    try:
                        result = subprocess.run(
                            ['ollama', 'run', model_choice, f "Summary this content: {content}"],
                            capture_output=True, 
                            text=True, 
                            таймаут=60
                        )
                        summary = result.stdout.strip()

                        с st.expander(f "Сводка ИИ {i+1}"):
                            st.write(summary)
                    except Exception as e:
                        st.error(f "Summarization failed for source {i+1}: {str(e)}")
        else:
            st.warning("Пожалуйста, сначала запустите исследование, чтобы собрать данные")

# Отобразите необработанные данные, если они доступны
if 'research_data' in st.session_state:
    with st.expander("View Raw Research Data"):
        st.json(st.session_state.research_data)

Запустите приложение:

streamlit run app.py

При запуске приложения и посещении порта 8501 должен появиться вот такой пользовательский интерфейс:

The final UI of the deep research agent

Запуск агента глубоких исследований

Запустите приложение, чтобы начать проводить комплексные исследования с помощью анализа на основе ИИ. Откройте терминал и перейдите в каталог проекта.

streamlit run app.py

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

  • Фаза сбора данных: Агент получает всесторонние данные исследований из различных веб-источников с помощью надежных API Bright Data, автоматически фильтруя их на предмет релевантности и достоверности.
  • Обработка контента: Каждый источник подвергается интеллектуальному анализу, в ходе которого система извлекает ключевую информацию, определяет основные темы и оценивает качество контента, используя семантическое понимание.
  • ИИ обобщение: Локальные модели Ollama обрабатывают собранные данные, генерируя краткие резюме, сохраняя критически важные сведения и поддерживая контекстную точность во всех источниках.
  • Синтез знаний: Система выявляет повторяющиеся закономерности, связывает связанные концепции и обнаруживает возникающие тенденции, анализируя информацию из нескольких источников одновременно.
  • Структурированная отчетность: Наконец, агент собирает все результаты в комплексный исследовательский отчет с правильной организацией, четкими ссылками и профессиональным форматированием, в котором подчеркиваются ключевые открытия и идеи.

Расширенная линия исследований

Чтобы получить более широкие возможности исследования, расширьте внедрение.
Этот расширенный конвейер создает полный рабочий процесс исследования, который выходит за рамки простого обобщения и обеспечивает структурированный анализ, ключевые выводы и практические заключения на основе собранных данных исследования. Конвейер объединяет Bright Data для сбора информации и локальные модели Ollama для интеллектуального анализа.

# advanced_research.py
def comprehensive_research_pipeline(query, api_key, model="llama2"):
    """Полный конвейер исследований со сбором данных и анализом ИИ"""

    # Шаг 1: Получение данных из Bright Data
    url = "https://api.brightdata.com/dca/trigger"
    payload = {"query": query, "limit": 20}
    headers = {"Authorization": f "Bearer {api_key}"}

    response = requests.post(url, json=payload, headers=headers)

    if response.status_code != 200:
        return { "error": "Сбор данных не удался"}

    research_data = response.json()

    # Шаг 2: Обработка и анализ с помощью Ollama
    выводы = []
    for item in research_data.get('results', []):
        content = item.get('content', '')

        # Сгенерируйте выводы для каждого источника
        analysis_prompt = f"""
        Проанализируйте этот контент и предоставьте ключевые выводы:
        {content[:2000]}

        Сосредоточьтесь на:
        - Основные моменты и выводы
        - Ключевые данные и статистика
        - Потенциальные приложения
        - Упомянутые ограничения
        """

        try:
            result = subprocess.run(
                ['ollama', 'run', model, analysis_prompt],
                capture_output=True, 
                text=True, 
                таймаут=90
            )
            insights.append({
                'source': item.get('source', ''),
                'analysis': result.stdout.strip(),
                'title': item.get('title', '')
            })
        except Exception as e:
            insights.append({
                'source': item.get('source', ''),
                'analysis': f "Анализ не удался: {str(e)}",
                'title': item.get('title', '')
            })

    return {
        'research_data': research_data,
        'ai_insights': insights,
        'query': query
    }

Заключение

Этот агент локального глубокого исследования демонстрирует, как построить автоматизированную исследовательскую систему, сочетающую надежный сбор веб-данных Bright Data с локальной обработкой ИИ с помощью Ollama. Реализация обеспечивает:

  • Подход, основанный на конфиденциальности: Вся обработка ИИ происходит локально с помощью Ollama
  • Надежный сбор данных: Bright Data обеспечивает высокое качество структурированных веб-данных.
  • Удобный интерфейс: Streamlit UI делает сложные исследования доступными
  • Настраиваемый рабочий процесс: Адаптация к различным областям исследований и требованиям.

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

Чтобы еще больше расширить свои исследовательские возможности, изучите решения Bright Data по набору данных для конкретных отраслей и рассмотрите возможность использования Deep Lookup для запроса и поиска в самой большой в мире базе веб-данных.

Готовы создать своего собственного агента для исследований? Создайте бесплатную учетную запись Bright Data, чтобы начать надежный сбор веб-данных и преобразовать свои исследовательские процессы уже сегодня.