Создание продвинутого исследовательского агента PaperQA2 с помощью Google Gemini для анализа научной литературы

В этом руководстве мы рассмотрим создание продвинутого агента искусственного интеллекта PaperQA2 на базе модели Gemini от Google, разработанной специально для анализа научной литературы. Мы настроим среду в Google Colab/Notebook, сконфигурируем API Gemini и интегрируем его с PaperQA2 для обработки и запроса множества научных статей.

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

Установка необходимых библиотек

Мы начнём с установки необходимых библиотек, включая PaperQA2 и SDK Google Generative AI, а затем импортируем необходимые модули для нашего проекта. Мы устанавливаем ключ API Gemini в качестве переменной окружения и настраиваем его, обеспечивая готовность интеграции к использованию.

“`python
!pip install paper-qa>=5 google-generativeai requests pypdf2 -q

import os
import asyncio
import tempfile
import requests
from pathlib import Path
from paperqa import Settings, ask, agent_query
from paperqa.settings import AgentSettings
import google.generativeai as genai

GEMINIAPIKEY = “Use Your Own API Key Here”
os.environ[“GEMINIAPIKEY”] = GEMINIAPIKEY

genai.configure(apikey=GEMINIAPI_KEY)
print(” Gemini API key configured successfully!”)
“`

Скачивание образцов научных статей

“`python
def downloadsamplepapers():
“””Download sample AI/ML research papers for demonstration”””
papers = {
“attentionisallyouneed.pdf”: “https://arxiv.org/pdf/1706.03762.pdf”,
“bert_paper.pdf”: “https://arxiv.org/pdf/1810.04805.pdf”,
“gpt3_paper.pdf”: “https://arxiv.org/pdf/2005.14165.pdf”
}

papersdir = Path(“samplepapers”)
papersdir.mkdir(existok=True)

print(” Downloading sample research papers…”)
for filename, url in papers.items():
filepath = papers_dir / filename
if not filepath.exists():
try:
response = requests.get(url, stream=True, timeout=30)
response.raiseforstatus()
with open(filepath, ‘wb’) as f:
for chunk in response.itercontent(chunksize=8192):
f.write(chunk)
print(f” Downloaded: {filename}”)
except Exception as e:
print(f” Failed to download {filename}: {e}”)
else:
print(f” Already exists: {filename}”)

return str(papers_dir)

papersdirectory = downloadsample_papers()
“`

Создание настроек для PaperQA2 с моделями Gemini

“`python
def creategeminisettings(paper_dir: str, temperature: float = 0.1):
“””Create optimized settings for PaperQA2 with Gemini models”””

return Settings(
llm=”gemini/gemini-1.5-flash”,
summary_llm=”gemini/gemini-1.5-flash”,

agent=AgentSettings(
agent_llm=”gemini/gemini-1.5-flash”,
search_count=6,
timeout=300.0,
),

embedding=”gemini/text-embedding-004″,

temperature=temperature,
paperdirectory=paperdir,

answer=dict(
evidence_k=8,
answermaxsources=4,
evidencesummarylength=”about 80 words”,
answer_length=”about 150 words, but can be longer”,
maxconcurrentrequests=2,
),

parsing=dict(
chunk_size=4000,
overlap=200,
),

verbosity=1,
)
“`

Класс PaperQAAgent

“`python
class PaperQAAgent:
“””Advanced AI Agent for scientific literature analysis using PaperQA2″””

def init(self, papers_directory: str, temperature: float = 0.1):
self.settings = creategeminisettings(papers_directory, temperature)
self.papersdir = papersdirectory
print(f” PaperQA Agent initialized with papers from: {papers_directory}”)

async def askquestion(self, question: str, useagent: bool = True):
“””Ask a question about the research papers”””
print(f”\n Question: {question}”)
print(” Searching through research papers…”)

try:
if use_agent:
response = await agent_query(query=question, settings=self.settings)
else:
response = ask(question, settings=self.settings)

return response

except Exception as e:
print(f” Error processing question: {e}”)
return None

def display_answer(self, response):
“””Display the answer with formatting”””
if response is None:
print(” No response received”)
return

print(“\n” + “=”*60)
print(” ANSWER:”)
print(“=”*60)

answer_text = getattr(response, ‘answer’, str(response))
print(f”\n{answer_text}”)

contexts = getattr(response, ‘contexts’, getattr(response, ‘context’, []))
if contexts:
print(“\n” + “-“*40)
print(” SOURCES USED:”)
print(“-“*40)
for i, context in enumerate(contexts[:3], 1):
context_name = getattr(context, ‘name’, getattr(context, ‘doc’, f’Source {i}’))
context_text = getattr(context, ‘text’, getattr(context, ‘content’, str(context)))
print(f”\n{i}. {context_name}”)
print(f” Text preview: {context_text[:150]}…”)

async def multiquestionanalysis(self, questions: list):
“””Analyze multiple questions in sequence”””
results = {}
for i, question in enumerate(questions, 1):
print(f”\n Processing question {i}/{len(questions)}”)
response = await self.ask_question(question)
results = response

if response:
print(f” Completed: {question[:50]}…”)
else:
print(f” Failed: {question[:50]}…”)

return results

async def comparative_analysis(self, topic: str):
“””Perform comparative analysis across papers”””
questions = [
f”What are the key innovations in {topic}?”,
f”What are the limitations of current {topic} approaches?”,
f”What future research directions are suggested for {topic}?”,
]

print(f”\n Starting comparative analysis on: {topic}”)
return await self.multiquestionanalysis(questions)
“`

Мы создали продвинутого исследовательского агента PaperQA2 с помощью Google Gemini для анализа научной литературы. Теперь мы можем интерактивно исследовать научные статьи, выполнять целевые запросы и даже проводить углублённый сравнительный анализ с минимальными усилиями. Эта настройка повышает нашу способность усваивать сложные исследования и упрощает весь процесс обзора литературы, позволяя нам сосредоточиться на выводах, а не на ручном поиске.

Полезные советы по использованию PaperQA2 с Gemini:

* Формулировка вопроса:
* Будьте конкретны в том, что вы хотите узнать.
* Спрашивайте о сравнениях, механизмах или последствиях.
* Используйте специальную терминологию.

* Конфигурация модели:
* Gemini 1.5 Flash — это бесплатный и надёжный вариант.
* Настройте температуру (0,0–1,0) для творчества и точности.
* Используйте меньший размер chunk_size для лучшей обработки.

* Управление документами:
* Добавляйте PDF-файлы в каталог документов.
* Используйте осмысленные имена файлов.
* Смешивайте разные типы документов для лучшего охвата.

* Оптимизация производительности:
* Ограничьте количество одновременных запросов для бесплатной версии.
* Используйте меньшие значения evidence_k для более быстрых ответов.
* Кэш результатов путём сохранения состояния агента.

* Продвинутое использование:
* Соединяйте несколько вопросов для более глубокого анализа.
* Используйте сравнительный анализ для обзоров исследований.
* Комбинируйте с другими инструментами для комплексных рабочих процессов.

1. Какие ключевые шаги необходимо выполнить для создания продвинутого исследовательского агента PaperQA2 с помощью Google Gemini?

Для создания продвинутого исследовательского агента PaperQA2 с помощью Google Gemini необходимо выполнить следующие ключевые шаги:
1. Установить необходимые библиотеки, включая PaperQA2 и SDK Google Generative AI.
2. Импортировать необходимые модули для проекта.
3. Установить ключ API Gemini в качестве переменной окружения и настроить его.
4. Скачать образцы научных статей.
5. Создать настройки для PaperQA2 с моделями Gemini.
6. Инициализировать класс PaperQAAgent и задать параметры для работы с научными статьями.

2. Какие параметры можно настроить при создании настроек для PaperQA2 с моделями Gemini?

При создании настроек для PaperQA2 с моделями Gemini можно настроить следующие параметры:
* Выбор модели для анализа (llm, summaryllm, agentllm).
* Количество поисковых запросов (search_count).
* Таймаут (timeout).
* Модель для встраивания (embedding).
* Температуру (temperature).
* Путь к каталогу с научными статьями (paper_directory).
* Параметры для генерации ответов (answermaxsources, evidencesummarylength, answerlength, maxconcurrent_requests).
* Параметры для парсинга (chunk_size, overlap).
* Уровень детализации (verbosity).

3. Какие полезные советы даются в статье по использованию PaperQA2 с Gemini?

В статье даются следующие полезные советы по использованию PaperQA2 с Gemini:
* Будьте конкретны в том, что вы хотите узнать.
* Спрашивайте о сравнениях, механизмах или последствиях.
* Используйте специальную терминологию.
* Настройте температуру (0,0–1,0) для творчества и точности.
* Используйте меньший размер chunk_size для лучшей обработки.
* Добавляйте PDF-файлы в каталог документов.
* Используйте осмысленные имена файлов.
* Смешивайте разные типы документов для лучшего охвата.
* Ограничьте количество одновременных запросов для бесплатной версии.
* Используйте меньшие значения evidence_k для более быстрых ответов.
* Кэш результатов путём сохранения состояния агента.

Источник