Создание продвинутого исследовательского агента 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 для более быстрых ответов.
* Кэш результатов путём сохранения состояния агента.

Источник