JacobLinCool commited on
Commit
25de69b
·
verified ·
1 Parent(s): 7c468f3

Train runtime tool-call MiniCPM5 LoRA adapter

Browse files
README.md CHANGED
@@ -1,19 +1,15 @@
1
  # Hackathon Advisor MiniCPM5 LoRA
2
 
3
- This PEFT LoRA adapter was trained from The Unwritten Almanac demo session for MiniCPM5 tool-call routing and advisor voice.
4
 
5
  ## Recipe
6
 
7
  - Base model: `openbmb/MiniCPM5-1B`
8
  - Adapter repo: `build-small-hackathon/hackathon-advisor-minicpm5-lora`
 
9
  - Method: LoRA SFT
10
- - Examples: 4
11
- - Max steps: 12
12
  - LoRA rank: 16
13
  - LoRA alpha: 32
14
  - Publish status: published
15
-
16
- ## Dataset Provenance
17
-
18
- - Source: exact demo session trace from `build-small-hackathon/hackathon-advisor`
19
- - Snapshot digest: `1d59c168b446bc1268ef648897fac523e85b258fd6048a37409b9cfbc5c28329`
 
1
  # Hackathon Advisor MiniCPM5 LoRA
2
 
3
+ This PEFT LoRA adapter was trained for The Unwritten Almanac's runtime tool-call planner. It maps `system_prompt + render_context` chats to one XML function call.
4
 
5
  ## Recipe
6
 
7
  - Base model: `openbmb/MiniCPM5-1B`
8
  - Adapter repo: `build-small-hackathon/hackathon-advisor-minicpm5-lora`
9
+ - Task: runtime XML tool-call planning
10
  - Method: LoRA SFT
11
+ - Examples: 9
12
+ - Max steps: 120
13
  - LoRA rank: 16
14
  - LoRA alpha: 32
15
  - Publish status: published
 
 
 
 
 
adapter_config.json CHANGED
@@ -30,13 +30,13 @@
30
  "rank_pattern": {},
31
  "revision": null,
32
  "target_modules": [
33
- "gate_proj",
34
- "q_proj",
35
- "k_proj",
36
- "up_proj",
37
  "down_proj",
 
 
 
38
  "v_proj",
39
- "o_proj"
 
40
  ],
41
  "target_parameters": null,
42
  "task_type": "CAUSAL_LM",
 
30
  "rank_pattern": {},
31
  "revision": null,
32
  "target_modules": [
 
 
 
 
33
  "down_proj",
34
+ "up_proj",
35
+ "gate_proj",
36
+ "o_proj",
37
  "v_proj",
38
+ "q_proj",
39
+ "k_proj"
40
  ],
41
  "target_parameters": null,
42
  "task_type": "CAUSAL_LM",
adapter_model.safetensors CHANGED
@@ -1,3 +1,3 @@
1
  version https://git-lfs.github.com/spec/v1
2
- oid sha256:de23f494947b80130ea000c168a16121994929bf8581bfa7c36abf48278f8f5f
3
  size 44871152
 
1
  version https://git-lfs.github.com/spec/v1
2
+ oid sha256:057fb909eab7e44b6fa40e74ffdec44cf1bc04419d7d0531a9d80f2f609462c9
3
  size 44871152
lora-sft.jsonl CHANGED
@@ -1,5 +1,10 @@
1
- {"adapter_task": "hackathon_advisor_tool_call_and_voice", "app": "hackathon-advisor", "base_model": "openbmb/MiniCPM5-1B", "example_count": 4, "format": "chat-jsonl", "generated_at": "2026-06-07T06:19:01+00:00", "idea_count": 1, "included_turn_count": 2, "index": {"algorithm": "tfidf-sparse-v1", "index_generated_at": "2026-06-06T19:44:42+00:00", "snapshot_digest": "1d59c168b446bc1268ef648897fac523e85b258fd6048a37409b9cfbc5c28329", "snapshot_generated_at": "2026-06-06T19:20:47+00:00"}, "record_kinds": ["tool_call", "advisor_response"], "schema_version": 1, "source": "exact_session_trace", "turn_count": 2, "type": "lora_sft_manifest"}
2
- {"adapter_task": "hackathon_advisor_tool_call_and_voice", "base_model": "openbmb/MiniCPM5-1B", "example_index": 1, "example_kind": "tool_call", "goals": ["Off the Grid", "Well-Tuned", "Off-Brand", "Sharing is Caring", "Field Notes"], "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Choose exactly one validated tool call for the user's project-advice request. Return only the XML function call.", "role": "system"}, {"content": "idea: Archive Cartographer -- A local-first family-photo map that runs offline, cites nearby Spaces, and exports build notes.", "role": "user"}, {"content": "<function name=\"save_idea\">{\"pitch\":\"A local-first family-photo map that runs offline, cites nearby Spaces, and exports build notes.\",\"title\":\"Archive Cartographer\"}</function>", "role": "assistant"}], "schema_version": 1, "score": {"overall": 6.3, "plan_steps": 0, "verdict": "ECHO x2"}, "tool_call": {"arguments": {"pitch": "A local-first family-photo map that runs offline, cites nearby Spaces, and exports build notes.", "title": "Archive Cartographer"}, "name": "save_idea"}, "tool_observations": [{"name": "save_idea", "summary": "Wrote idea page 'Archive Cartographer'."}, {"name": "search_projects", "summary": "Checked 5 closest project echoes."}, {"name": "score_idea", "summary": "Pressed a five-quadrant seal: 6.3/10."}], "turn_index": 1, "type": "lora_sft_example"}
3
- {"adapter_task": "hackathon_advisor_tool_call_and_voice", "base_model": "openbmb/MiniCPM5-1B", "example_index": 2, "example_kind": "advisor_response", "goals": ["Off the Grid", "Well-Tuned", "Off-Brand", "Sharing is Caring", "Field Notes"], "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Write concise, evidence-grounded advice from the tool observations, cited pages, score, and selected goals.", "role": "system"}, {"content": "idea: Archive Cartographer -- A local-first family-photo map that runs offline, cites nearby Spaces, and exports build notes.\n\nTool call: <function name=\"save_idea\">{\"pitch\":\"A local-first family-photo map that runs offline, cites nearby Spaces, and exports build notes.\",\"title\":\"Archive Cartographer\"}</function>\nTool observations:\n- save_idea: Wrote idea page 'Archive Cartographer'.\n- search_projects: Checked 5 closest project echoes.\n- score_idea: Pressed a five-quadrant seal: 6.3/10.\nVerdict: ECHO x2\nOverall: 6.3\nPlan steps: 0", "role": "user"}, {"content": "The ink bleeds around Archive Cartographer. Closest echoes: page 54: My Build Small Hackathon; page 18: Come And Compare; page 13: briefing-32. The seal reads ECHO x2 at 6.3/10. Keep the audience, but change the mechanism or artifact so the demo proves a gap instead of joining a cluster.", "role": "assistant"}], "schema_version": 1, "score": {"overall": 6.3, "plan_steps": 0, "verdict": "ECHO x2"}, "tool_call": {"arguments": {"pitch": "A local-first family-photo map that runs offline, cites nearby Spaces, and exports build notes.", "title": "Archive Cartographer"}, "name": "save_idea"}, "tool_observations": [{"name": "save_idea", "summary": "Wrote idea page 'Archive Cartographer'."}, {"name": "search_projects", "summary": "Checked 5 closest project echoes."}, {"name": "score_idea", "summary": "Pressed a five-quadrant seal: 6.3/10."}], "turn_index": 1, "type": "lora_sft_example"}
4
- {"adapter_task": "hackathon_advisor_tool_call_and_voice", "base_model": "openbmb/MiniCPM5-1B", "example_index": 3, "example_kind": "tool_call", "goals": ["Off the Grid", "Well-Tuned", "Off-Brand", "Sharing is Caring", "Field Notes"], "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Choose exactly one validated tool call for the user's project-advice request. Return only the XML function call.", "role": "system"}, {"content": "make a build plan", "role": "user"}, {"content": "<function name=\"make_plan\">{}</function>", "role": "assistant"}], "schema_version": 1, "score": {"overall": 6.3, "plan_steps": 10, "verdict": "ECHO x2"}, "tool_call": {"arguments": {}, "name": "make_plan"}, "tool_observations": [{"name": "score_idea", "summary": "Pressed a five-quadrant seal: 6.3/10."}, {"name": "make_plan", "summary": "Drafted 10 build steps."}], "turn_index": 2, "type": "lora_sft_example"}
5
- {"adapter_task": "hackathon_advisor_tool_call_and_voice", "base_model": "openbmb/MiniCPM5-1B", "example_index": 4, "example_kind": "advisor_response", "goals": ["Off the Grid", "Well-Tuned", "Off-Brand", "Sharing is Caring", "Field Notes"], "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Write concise, evidence-grounded advice from the tool observations, cited pages, score, and selected goals.", "role": "system"}, {"content": "make a build plan\n\nTool call: <function name=\"make_plan\">{}</function>\nTool observations:\n- score_idea: Pressed a five-quadrant seal: 6.3/10.\n- make_plan: Drafted 10 build steps.\nVerdict: ECHO x2\nOverall: 6.3\nPlan steps: 10", "role": "user"}, {"content": "The wax seal for Archive Cartographer reads 6.3/10, ECHO x2. The build path is: 1. Lock a one-sentence promise and one test input that proves what is different. 2. Scope the first prototype to one focused weekend; cut anything that cannot fit that window. 3. Use your frontend prototyping, Python, small-model evaluation strength for the first working surface before adding new tooling. 4. Test the constraint early: CPU Space runtime; no proprietary inference API. Do this before polishing the artifact. 5. Shape the demo around auditable artifacts, local-first runtime, strong demo beat so the result feels intentional, not generic. 6. Compare against the nearest echoes, then sharpen the part only this idea can own. 7. Build the smallest happy path: input, nearby project citations, score, and one shareable output. 8. Add one selected-goal feature only after the core loop is smooth enough to explain without narration. 9. Collect successful advisor examples before training a tiny LoRA. 10. Write build notes from the exact decisions, screenshots, and outputs.", "role": "assistant"}], "schema_version": 1, "score": {"overall": 6.3, "plan_steps": 10, "verdict": "ECHO x2"}, "tool_call": {"arguments": {}, "name": "make_plan"}, "tool_observations": [{"name": "score_idea", "summary": "Pressed a five-quadrant seal: 6.3/10."}, {"name": "make_plan", "summary": "Drafted 10 build steps."}], "turn_index": 2, "type": "lora_sft_example"}
 
 
 
 
 
 
1
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "app": "hackathon-advisor", "base_model": "openbmb/MiniCPM5-1B", "example_count": 9, "format": "chat-jsonl", "record_kinds": ["tool_call"], "schema_version": 1, "source": "runtime_prompt_tool_call_curriculum", "type": "lora_sft_manifest"}
2
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 1, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: \nIdea board:\n- empty\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"list_projects\">{\"sort\":\"likes\"}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
3
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 2, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: A local-first archive cartographer for family photos\nIdea board:\n- empty\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"save_idea\">{\"title\":\"A local-first archive cartographer for family photos\",\"pitch\":\"A local-first archive cartographer for family photos\"}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
4
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 3, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: search similar family archive projects\nIdea board:\n- A local-first archive cartographer for family photos: Map private family photos into offline story trails.\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"search_projects\">{\"query\":\"search similar family archive projects\"}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
5
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 4, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: make a build plan\nIdea board:\n- A local-first archive cartographer for family photos: Map private family photos into offline story trails.\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"make_plan\">{}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
6
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 5, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: compare ideas\nIdea board:\n- A local-first archive cartographer for family photos: Map private family photos into offline story trails.\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"compare_ideas\">{}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
7
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 6, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: find whitespace\nIdea board:\n- A local-first archive cartographer for family photos: Map private family photos into offline story trails.\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"find_whitespace\">{}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
8
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 7, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: read project build-small-hackathon/mycelium\nIdea board:\n- A local-first archive cartographer for family photos: Map private family photos into offline story trails.\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"get_project\">{\"id\":\"build-small-hackathon/mycelium\"}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
9
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 8, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: update my profile: I have frontend skills\nIdea board:\n- A local-first archive cartographer for family photos: Map private family photos into offline story trails.\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"update_profile\">{\"field\":\"skills\",\"value\":\"frontend\"}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
10
+ {"adapter_task": "hackathon_advisor_tool_call_planner", "base_model": "openbmb/MiniCPM5-1B", "example_index": 9, "example_kind": "tool_call", "messages": [{"content": "You are The Unwritten Almanac's originality and build-plan advisor. Use tools to inspect existing projects, find whitespace, save ideas, score ideas, and make plans. Emit exactly one XML tool call.", "role": "system"}, {"content": "Choose exactly one tool call for the next advisor action.\nReturn only <function name=\"tool_name\">{...json...}</function>.\nAvailable tools: list_projects, search_projects, get_project, find_whitespace, save_idea, score_idea, compare_ideas, make_plan, update_profile, set_goals.\nUser message: prioritize Off the Grid and Well-Tuned\nIdea board:\n- A local-first archive cartographer for family photos: Map private family photos into offline story trails.\nRecent trace:\n- empty", "role": "user"}, {"content": "<function name=\"set_goals\">{\"goals\":[\"Off the Grid\",\"Well-Tuned\"]}</function>", "role": "assistant"}], "schema_version": 1, "type": "lora_sft_example"}
training-recipe.json CHANGED
@@ -1,20 +1,14 @@
1
  {
2
  "adapter_repo": "build-small-hackathon/hackathon-advisor-minicpm5-lora",
3
- "adapter_task": "hackathon_advisor_tool_call_and_voice",
4
  "alpha": 32,
5
  "base_model": "openbmb/MiniCPM5-1B",
6
  "dataset_format": "chat-jsonl",
7
  "dropout": 0.05,
8
- "example_count": 4,
9
- "index": {
10
- "algorithm": "tfidf-sparse-v1",
11
- "index_generated_at": "2026-06-06T19:44:42+00:00",
12
- "snapshot_digest": "1d59c168b446bc1268ef648897fac523e85b258fd6048a37409b9cfbc5c28329",
13
- "snapshot_generated_at": "2026-06-06T19:20:47+00:00"
14
- },
15
  "learning_rate": 0.0002,
16
  "max_seq_length": 1024,
17
- "max_steps": 12,
18
  "method": "LoRA SFT",
19
  "publish_status": "published",
20
  "rank": 16,
 
1
  {
2
  "adapter_repo": "build-small-hackathon/hackathon-advisor-minicpm5-lora",
3
+ "adapter_task": "hackathon_advisor_tool_call_planner",
4
  "alpha": 32,
5
  "base_model": "openbmb/MiniCPM5-1B",
6
  "dataset_format": "chat-jsonl",
7
  "dropout": 0.05,
8
+ "example_count": 9,
 
 
 
 
 
 
9
  "learning_rate": 0.0002,
10
  "max_seq_length": 1024,
11
+ "max_steps": 120,
12
  "method": "LoRA SFT",
13
  "publish_status": "published",
14
  "rank": 16,