В этом руководстве вы узнаете:
- Что такое исследовательский агент и почему традиционные методы не работают
- Как настроить Bright Data для надежного сбора данных
- Как создать локального исследовательского агента на базе ИИ с помощью Streamlit UI
- Как интегрировать API Bright Data с локальными моделями для получения структурированных данных
Давайте погрузимся в создание вашего интеллектуального исследовательского помощника. Мы также предлагаем вам ознакомиться с Deep Lookup, поисковой системой Bright Data на базе ИИ, которая позволяет искать в Интернете как в базе данных.
Проблема отрасли
- Исследователи сталкиваются со слишком большим объемом информации из множества источников, что делает ручной поиск непрактичным.
- Традиционные исследования предполагают медленный ручной поиск, извлечение и обобщение информации.
- Результаты часто оказываются неполными, несвязными и плохо организованными.
- Простые инструменты для соскабливания предоставляют необработанные данные без достоверности и контекста.
Решение: Агент исследования
Агент глубоких исследований – это система ИИ, которая автоматизирует исследования от сбора до подготовки отчета. Она учитывает контекст, управляет задачами и предоставляет хорошо структурированные данные.
Ключевые компоненты:
- Агент-планировщик: разбивает исследование на задачи
- Подагенты-исследователи: выполняют поиск и извлекают данные
- Агент-писатель: составляет структурированные отчеты
- Агент условий: проверяет качество и при необходимости запускает более глубокие исследования.
В этом руководстве показано, как создать локальную исследовательскую систему, используя API Bright Data, пользовательский интерфейс Streamlit и локальные LLM для обеспечения конфиденциальности и контроля.
Необходимые условия
- Учетная запись Bright Data с ключом API.
- Python 3.10+
- Зависимости:
запросыfaissилиchromadbpython-dotenvstreamlitollama(для локальных моделей)
Конфигурация Bright Data
Создайте учетную запись Bright Data
- Зарегистрируйтесь на сайте Bright Data
- Перейдите в раздел учетных данных API
- Сгенерируйте токен API
Храните учетные данные 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 должен появиться вот такой пользовательский интерфейс:

Запуск агента глубоких исследований
Запустите приложение, чтобы начать проводить комплексные исследования с помощью анализа на основе ИИ. Откройте терминал и перейдите в каталог проекта.
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, чтобы начать надежный сбор веб-данных и преобразовать свои исследовательские процессы уже сегодня.