/
IvanMysin
/
Topics
Обзор
Документация
Войти
/
IvanMysin
/
Topics
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
common_agents_notes
config.py
232 строки
7 KB
ivan
Working on FS reseacher
10 мар 2026, 18:47
10 мар 2026, 18:47
6157465
Код
Авторство
О чём код?
import os from pathlib import Path # Базовые пути PROJECT_ROOT = Path(__file__).parent DATA_DIR = PROJECT_ROOT / "data" RESULTS_DIR = PROJECT_ROOT / "results" SRC_DIR = PROJECT_ROOT / "src" # Создаем директории for directory in [DATA_DIR, RESULTS_DIR]: directory.mkdir(exist_ok=True) # Настройки базы данных DB_CONFIG = { "db_path": DATA_DIR / 'navigation.db', #'subiculum.db', # "hippocampal_rhythms_articles.db", "text_column": "abstract", "table_name" : "Articles", "Articles" : { "id_column": "id", "doi_column": "doi", "title_column": "title", "text_column": "full_text", "abstract_column": "abstract", "date_column": "date", "journal_column": "journal", "authors_column": "authors", "volume_column": "volume", "issue_column": "issue", "pages_column": "pages", "pmid_column": "pmid", "filepath_column": "filepath", "ai_summury_column" : "ai_summary", }, } # Настройки Sci-Hub для скачивания PDF SCIHUB_CONFIG = { "base_url": "https://sci-hub.ru", "timeout": 30, "max_retries": 3, "retry_delay": 5, "max_year": 2021, } # Настройки модели эмбеддингов MODEL_CONFIG = { "name": "allenai/specter2_base", "embedding_dimension": 768, # SPECTER2 выдает векторы размерности 768 "batch_size": 16, "normalize_embeddings": True } # Настройки ChromaDB CHROMA_CONFIG = { "path": DATA_DIR / "chroma_db", "collection_name": "research_papers", "distance_function": "cosine" } # Настройки кластеризации CLUSTERING_CONFIG = { "min_clusters": 5, "max_clusters": 20, "default_clusters": 10, # Настройки KMeans "kmeans": { "random_state": 42, "n_init": 10, "max_iter": 300 }, # Настройки иерархической кластеризации "hierarchical": { "metric": "euclidean", "linkage": "ward", "compute_full_tree": True }, # Настройки DBSCAN "dbscan": { "min_samples": 5, "eps_auto": True, # Автоматический подбор eps "k_for_eps": 4 # k для k-distance graph }, # Настройки X-Means "xmeans": { "kmax": 50, "max_iter": 100, "random_state": 42 }, } # Методы кластеризации CLUSTERING_METHODS = { "kmeans": "K-Means", "hierarchical": "Иерархическая кластеризация", "hdbscan": "HDBSCAN", "xmeans": "X-Means", } # Настройки LLM для генерации описаний LLM_CONFIG = { "enabled": True, "provider": "ollama", # или "openai", "huggingface" "ollama": { "base_url": "http://localhost:11435", "timeout": 280, "models": { "small": "llama3.2", # Для быстрой генерации "medium": "llama3.2:70b", # Для качественных описаний "specialized": "mistral-nemo:12b", # Для научных текстов "writer": "llama3.2:70b", # Модель для Writer агента "reviewer": "mistral-nemo:12b" # Модель для Reviewer агента }, "default_model": "llama3.2" # модель по умолчанию }, "generation": { "max_tokens": 5000, "temperature": 0.7, "top_p": 0.9, "max_articles_per_cluster": 100, # Максимум статей для контекста "language": "russian", # Язык генерации описаний "prompt_path": SRC_DIR / "prompts_templates" / "theses_re.txt" }, "multiagent": { "enabled": True, "max_iterations": 3, "writer": { "model": "gpt-oss:20b", # "gpt-oss:20b-64k", "temperature": 0.7, "top_p": 0.9 }, "reviewer": { "model": "nemotron-3-nano:latest", # "olmo-3:7b-32k", "temperature": 0.5, "top_p": 0.85 } } } # Настройки суммаризации SUMMARIZATION_CONFIG = { "enabled": True, "provider": "ollama", "ollama": { "model": "llama3.2", # Модель для суммаризации "base_url": "http://localhost:11434", "timeout": 280, "max_input_length": 12000, # Максимальная длина входного текста }, "summarization": { "max_summary_length": 500, # Максимальная длина суммаризации "language": "english", # Язык суммаризации "batch_size": 5, # Размер батча для обработки "update_existing": False # Обновлять существующие суммаризации }, "database": { "summary_column": "ai_summary" # Название колонки для суммаризации } } # Настройки для обработки текста TEXT_PROCESSING_CONFIG = { "custom_stopwords_file": DATA_DIR / "custom_stopwords.txt", "default_language": "english", "use_custom_stopwords": True, "additional_stopwords": ["study", "results", "research", "paper", "article", "method"], # можно добавить и здесь "default_keyword_method": "tfidf", # Метод по умолчанию "n_keywords": 15, # Количество ключевых слов для извлечения } # Методы извлечения ключевых слов KEYWORD_EXTRACTION_METHODS = { "tfidf": "TF-IDF (Term Frequency-Inverse Document Frequency)", "yake": "YAKE (Yet Another Keyword Extractor)", "keybert": "KeyBERT (BERT-based Keyword Extraction)" } # Настройки FS-Researcher FS_RESEARCHER_CONFIG = { "enabled": True, "workspace_base_dir": PROJECT_ROOT / "context" / "fs_researcher_workspaces", # Agent settings "stage1_rounds": 3, "stage2_rounds": 5, # LLM settings "llm_model": "gpt-oss:20b-64k", "temperature": 0.7, "max_tokens": 500000, # Article processing "max_articles_per_cluster": 500, "chunk_size": 8000, # Task types "default_task": "results_review", # Output "output_format": "markdown", } # Типы задач FS-Researcher FS_RESEARCHER_TASK_TYPES = { "results_review": { "name": "Обзор результатов", "description": "Анализ основных результатов исследований в кластере", }, "methods_review": { "name": "Обзор методов", "description": "Систематизация методологий и подходов", }, "hypothesis_exp": { "name": "Генерация гипотез (эксперимент)", "description": "Поиск гипотез для экспериментальных исследований", }, "hypothesis_theory": { "name": "Генерация гипотез (теория)", "description": "Поиск гипотез для теоретических моделей", }, "custom": { "name": "Пользовательская задача", "description": "Задача на основе пользовательских инструкций", } }