-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.example.yaml
More file actions
134 lines (117 loc) · 4.1 KB
/
Copy pathconfig.example.yaml
File metadata and controls
134 lines (117 loc) · 4.1 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
125
126
127
128
129
130
131
132
133
134
# Poet Role Evolution - 配置示例
#
# 用法:
# cp config.example.yaml config.yaml
# 然后按需修改模型与参数,再运行:
# python scripts/run.py --config config.yaml
#
# 建议不要把真实 API Key 写进 config.yaml;推荐写到 `.env` 或环境变量里,
# 然后在这里通过 `api_key_env/base_url_env` 引用。
mock: false
persona:
name: "诗人"
run:
cipai: "水调歌头"
title: "人类进化"
rounds: 10
candidates_per_round: 3
seed: 42
poet_temperature: 0.8
judge_temperature: 0.3
memory_temperature: 0.3
skip_llm_eval_for_invalid: true
tonal_threshold: 0.7
judge_mode: "relative" # absolute | relative(同轮 k 个候选做相对排序,缓解分数饱和)
allusion_weight: 0.05 # selection_score 的 allusion 因子权重:selection_score = fitness + allusion_weight * ac_factor
rhyme_weight: 0.05 # selection_score 的押韵因子权重:+ rhyme_weight * rhyme_score
output:
out_dir: "results/poet_role_evolve"
# Prompt 方案切换:
# - v1:原始单段写作 prompt
# - v2:分层约束 + intention(推荐)
prompts:
profile: "v2" # v1 | v2
intention:
enabled: true
seed: "" # 可选:本次创作触发语(空则纯自动)
max_chars: 600
# 是否把“上一轮入选作品全文 + 结构/平仄/押韵评估描述”写入 poet memory,并注入下一轮写作 prompt
last_round_poem:
enabled: false
# 是否在长期记忆中加入押韵要点(中华新韵韵部 + 同韵/换韵策略)
rhyme_memory:
enabled: false
# Memory 容量与展示长度(可按实验需要调)
memory_settings:
max_inspirations: 20
max_revision_checks: 20
max_avoid_patterns: 20
max_rhyme_lessons: 20
max_good_phrases: 10
max_bad_cases: 10
prompt_section_max_items: 10
prompt_examples_max_items: 5
prompt_allusions_max_items: 5
prompt_allusion_forms_per_item: 2
prompt_quotes_max_items: 5
prompt_item_clip_len: 60
prompt_example_text_clip_len: 30
prompt_example_why_clip_len: 40
prompt_allusion_source_term_clip_len: 20
prompt_allusion_form_clip_len: 10
prompt_allusion_story_clip_len: 16
prompt_quote_content_clip_len: 28
prompt_quote_source_clip_len: 14
patch_example_text_clip_len: 40
patch_example_why_clip_len: 80
# 知识图谱(Neo4j/ACKG)典故检索:可选。连不上时会自动降级为空典故池,不影响 mock/离线运行。
kg:
enabled: false
uri_env: "NEO4J_URI"
user_env: "NEO4J_USER"
password_env: "NEO4J_PASSWORD"
# database: "neo4j" # 可选
kw_source: "title" # 当前只支持 title
query_mode: "poem_title" # poem_title | allusion_origin_story
cache_enabled: true
cache_path: "data/poet_role_evolve/kg_title_memory_cache.json"
poem_limit_m: 50
top_k: 5
forms_per_allusion: 2
connect_timeout_s: 5
query_timeout_s: 10
# 供应商(provider)配置:你可以有 1~2 个(或更多)供应商,每个供应商对应一套 base_url + api_key。
# role(poet/judge/memory)再选择“用哪个供应商 + 哪个模型 ID”。
#
# 注意:provider 的 `provider: openai` 表示“OpenAI-compatible Chat Completions”协议,
# 并不限定必须是 OpenAI 官方;只要 base_url 兼容即可。
providers:
vendor_a:
provider: "openai"
api_key_env: "JIGUANG_API_KEY"
base_url_env: "JIGUANG_BASE_URL"
timeout_s: 60
max_retries: 3
vendor_b:
provider: "kimi"
api_key_env: "KIMI_API_KEY"
base_url_env: "KIMI_BASE_URL"
timeout_s: 60
max_retries: 3
llm:
poet:
provider_ref: "vendor_a"
model: "deepseek-v3.2" # 供应商侧的模型 ID
# judge ensemble(多个评审模型):每个 candidate 会被这些 judge 各评一次,然后对 info/aes 取平均
# 你可以把公共的 provider_ref 放在 llm.judge 里,然后 judges 里只写 model;也可以每个 judge 单独写 provider_ref。
# judge:
# provider_ref: "vendor_a"
judges:
- provider_ref: "vendor_a"
model: deepseek-v3.2
# - model: "gemini-3-pro-preview"
# - model: "kimi-k2-0905-preview"
# - model: "doubao-seed-1-6-251015"
memory:
provider_ref: "vendor_a"
model: "deepseek-v3.2"