forked from ChelseaKR/sprout
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsprout.yaml
More file actions
124 lines (112 loc) · 5.16 KB
/
Copy pathsprout.yaml
File metadata and controls
124 lines (112 loc) · 5.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
# Sprout configuration — the only file an adopter edits to point Sprout at a different
# corpus, switch the offline generator for Claude-on-Bedrock, or add a language.
# Every key is validated (extra keys fail loudly). Secrets come from the environment.
corpus:
path: corpus/processed # cleaned, chunked passages
glob: "**/*.md"
manifest: corpus/manifest.yaml # per-doc source / license / fetch_date / language
default_language: en
chunk:
max_words: 120
overlap_words: 24
retrieval:
top_k: 6
min_score: 0.12 # below this, refuse rather than pad
embedding_dim: 512
embedding_provider: deterministic # deterministic (offline hashing) | static (offline curated EN/ES vectors, ADR-0017) | bedrock (Titan)
hybrid: true # fuse dense + BM25 via reciprocal rank fusion
rrf_k: 60
dedup_threshold: 0.92
topic_filter: true # scope to the named species when the question names one
species_aliases: # common/Spanish names -> corpus species slug
potos: pothos
potho: pothos
"lengua de suegra": snake-plant
"planta de serpiente": snake-plant
sansevieria: snake-plant
serpiente: snake-plant
"lirio de la paz": peace-lily
espatifilo: peace-lily
filodendro: philodendron
"ficus lira": fiddle-leaf-fig
"arbol del caucho": rubber-plant
"ficus elastica": rubber-plant
dracena: dracaena
drácena: dracaena
hiedra: english-ivy
"arbol de jade": jade-plant
jade: jade-plant
"helecho de boston": boston-fern
helecho: boston-fern
orquidea: orchid
cinta: spider-plant
malamadre: spider-plant
calatea: calathea
"planta zz": zz-plant
zamioculca: zz-plant
sabila: aloe
generation:
provider: deterministic # deterministic (extractive) | bedrock | anthropic
max_sentences: 3
relevance_floor: 0.30
support_overlap: 0.66 # citation guard: a sentence must be this covered by its chunk
# model: anthropic.claude-haiku-4-5-20251001-v1:0 # provider: bedrock
# model: claude-haiku-4-5-20251001 # provider: anthropic (native)
region: us-west-2
max_cost_usd: 0.05 # per-answer preflight ceiling; unpriced models refuse
redact_query_pii: false # redact PII before sending to a network provider
# EXP-04 (docs/adr/0018): an additional cross-encoder NLI entailment gate behind the
# citation guard, for the cloud path only — provider must not be "deterministic" and
# nli.model_sha256 must be pinned, enforced at config load (fail closed).
support_verifier: lexical # lexical (default, zero-dependency) | nli
# nli:
# model_id: cross-encoder/nli-deberta-v3-xsmall
# revision: main # pin to a commit sha, not a branch, in production
# onnx_filename: onnx/model.onnx
# model_sha256: "<sha256 of the pinned onnx file — required to enable nli>"
# entail_threshold: 0.5
# entailment_label_index: 1 # this checkpoint's "entailment" index; verify per model
identification: # photo plant-ID -> grounded care lookup
provider: offline # offline (no network, always falls back) | plantnet
min_confidence: 0.30 # below this visual-match score, ask for the name instead
top_k: 5
endpoint: https://my-api.plantnet.org/v2/identify/all # the one allowlisted vision egress
timeout_s: 30.0
max_image_bytes: 8000000
# The Pl@ntNet API key is read from PLANTNET_API_KEY (env only). A returned species is a
# selector routed back through the cited corpus, never presented as a horticultural fact.
reminders: # local, offline watering/fertilizing reminders
path: var/reminders.json # stored on this machine only; nothing is uploaded
max_reminders: 200
default_intervals:
water: 7
fertilize: 30
repot: 365
mist: 3
rotate: 14
confidence:
abstain_threshold: 0.25 # below this, refuse rather than guess (per ADR-0012)
low_confidence_threshold: 0.50 # below this, answer but flag for human review (per ADR-0012)
reliability_bins: 10
review: # local review console (EXP-17): OFF by default -- see
enabled: false # docs/RESPONSIBLE-TECH-AUDITS.md section C and ADR-0020 before
path: var/review/queue.json # enabling. Stores question text on this machine only;
max_items: 500 # nothing is uploaded. A maintainer opts in with `enabled:
capture_on_low_confidence: true # true` to queue flagged/refused traces for `sprout review`.
capture_on_refusal: true
languages:
supported: [en, es] # first entry is the reference language for parity
server:
host: 127.0.0.1
port: 8000
max_question_chars: 500
observability:
log_format: text # text | json (Tier C offline CLI; Tier A for the API)
tier: C # C (offline CLI, default) | A (the optional serverless
# API, infra/ — turns on OTel traces/RED metrics; see
# docs/ROADMAP.md's Observability tier section)
service_name: sprout
service_version: 0.1.0
deployment_environment: production
store:
path: var/index.json