art/config.yaml
emfurst 7b2bb49e3c Art 0.1.0
Built from art-dev 78fb10b.
2026-09-29 20:52:52 -04:00

68 lines
3.2 KiB
YAML

# Personal settings go in user/config.yaml, which is merged over this file
# (nested keys override, lists replace). See data/examples/config.yaml.
contact:
email: null # sent to arXiv and Crossref (polite pool); set in user/config.yaml
llm:
model: art-researcher # built from the Modelfile by art/llm.py
modelfile: modelfiles/researcher.Modelfile
num_ctx: 8192 # set on every call; Ollama's default silently truncates longer prompts
think: false # gemma4 supports thinking; recorded on every call
enforce_schema: true # structured calls pass the JSON schema as Ollama's `format`
retries: 1 # extra attempts for a structured call that fails validation
timeout_s: 300
# Per-task options, sent explicitly on every call. Low temperature makes a
# small model's summaries formulaic; labels stay low so they group.
tasks:
summarize: {temperature: 0.7}
label: {temperature: 0.2}
explain: {temperature: 0.3}
llm_score: {temperature: 0.0}
profile_draft: {temperature: 0.3} # bingham init; drafts for a person to edit
max_results_per_feed: 30 # arXiv API backfill only
feed_cache_ttl_hours: 6 # skip network fetch if raw feed data is fresher than this
digest:
# Field-pulse labels whose bge embeddings average at least this cosine
# similarity are grouped. Set 2026-09-28 from the first week: unrelated
# labels median 0.52; same-topic pairs 0.8 and above.
label_cluster_threshold: 0.8
paths: # relative to the repository root
db: data/art.sqlite
digests: digests
models: models # HuggingFace cache (HF_HUB_CACHE)
arxiv:
# Daily run reads rss.arxiv.org/rss/<category>. Every paper is screened
# against every profile in data/profiles.yaml, whatever its category.
# Override the list in user/config.yaml to follow other categories.
categories:
- cond-mat.soft
- physics.flu-dyn
include_cross_lists: true # papers whose primary category is elsewhere
include_replacements: false # new versions of already-announced papers
request_delay_s: 3 # between requests to any arXiv endpoint
max_catchup_days: 14 # longer gaps in daily runs are filled as backfill
jor:
issn: [0148-6055, 1520-8516] # print, online; Crossref filter
backfill_from: 2025-01-01 # first-run reach for the J. Rheol. stream
crossref_overlap_days: 7 # re-query this far before the last fetch
screen:
embed_model: BAAI/bge-large-en-v1.5
rerank_model: BAAI/bge-reranker-v2-m3
max_embed_tokens: 512 # bge-large limit; longer abstracts are truncated and logged
rerank_max_length: 1024 # tokens for a (profile description, paper) pair
# Candidates per profile from each retriever (cosine, BM25): the larger of
# top_k and top_frac of the batch. The union goes to the re-ranker.
top_k: 30
top_frac: 0.2
# Re-ranker score (0-1) above which a paper is highlighted. Broad profile
# descriptions score relevant papers lower, so set per-profile values in
# user/config.yaml (keyed by profile id) once you have looked at the first
# screen. The digest applies the current values; no re-screen is needed.
thresholds:
default: 0.2
calibrated: null # date of the last calibration