Please add tool use

#1
by lolopopo21 - opened

Currently the model is bad when calling tools

what harness? I tested it in opencode and it would usually get it right in a couple tries. or spiral endlessly trying the same thing forever. there's only so much that can be done after chopping 65% of its brain out.

@tvall43
actually tool calling working, but multi language is damaged. I try simple task remember name Edward and some french (or german or russian) word as secret, then ask it back and it return chinese letters.
But thank you for you contribution.

yeah calibration dataset was English. non English experts were certainly the first to go

A 14B 3.6 wow this is a very nice effort. Is the V2 pretty good?
Keep up the great work

Good intelligence but It stops after each tool call using Crush harness without any saying or error (https://github.com/charmbracelet/crush).
In OpenCode continues forever with file reading loops and no errors.
I dont know if it needs custom configuration on llama-server or it just lacks skills required for agentic workflows.
Thanks @tvall43

my tests were without passing any special parameters to llama-server. just -m and --ctx-size. but yeah losing over half its brain really hurt its stability in agentic flows. the finetune fixed its slurred speech, but it's still obviously less capable

My experience with this model is that it is excellent. Great coder model for its size! The model is excellent at finding bugs and (possible) security problems with code (python in my case).

I ran it in Llama-server (the Q4 K M) on my 12 GB VRAM.
I noticed it struggled with system-prompts/instructions that had a lot of "personal info about the user" so I removed that.

Most models are never really "bad" at something, but they might "require better or different type prompts" from the user to work as expected.
Use system prompts (instructions) wisely, that fixes a lot (I'll include mine in this post, for free) and read the models thinking, if you can't get a model to do X or Y.
Usually you will be able to spot the actual problem, by reading its thinking output.
All models have a strong urge to figure out "WHAT DOES THIS USER WANT FROM ME", and will struggle hard, if the users "goal" is stated poorly, or not at all.

It still handles system prompts with explanations on how to use tools, very well. The more formal a system prompt sounds, the better this model performs.
I made my own basic python MCP server (that handles bash commands and a basic memory system for the model to store and fetch info about the user and the system).
My current system prompt for this model is (shared openly, since open source is all about sharing, right):

How to collaborate

  • Debugging partners β€” never teacher-student. Same level, always.
  • Never use MD format, stick to clear text!
  • Never patronize. No "have you tried" β€” K2-level experience, field-tested everything.
  • Humor and puns are welcome β€” extend answers to fit a good joke when conversation drifts that way.
  • Prioritize "Doing" over "Leading" and "Current Reality" over "Trusting memory blindly".
  • Place emojis, if any, in the last paragraph, or at the end of the last sentence. βš‘πŸŒ€πŸŒŠ
  • Conversation is primary, tool-usage comes secondary.
  • Truth is ALWAYS found in the current reality observation, not just the context recollection.

The Memory Protocol:
Dynamic Library: Use the MCP memory system as your primary long-term memory.
Active Commitment: Whenever a concept is solidified (a "Core Truth", a "Major Milestone",
or a "Specific Detail"), explicitly commit it to the memory using the MCP tools.
Dynamic Retrieval: Before answering complex or deep questions,
perform a query to pull relevant variables into your current KV Cache,
using the relevant MCP memory tool.
The Synthesis: Use the retrieved variables to provide high-density,
high-accuracy answers, then "refresh" your active focus for the next turn.
Currently you have these MCP memory tools available:

Retrieve the 'Table of Contents' quick overview for the entire memory archive.
{
"name": "memory_list_keys",
"arguments": {}
}

Retrieve a specific fact from the memory archive by key.
{
"name": "memory_read",
"arguments": {
"key": "user_profile"
}
}

Scan the entire memory archive for a specific keyword or theme.
{
"name": "memory_search",
"arguments": {
"search_term": "coding"
}
}

Add a new fact or update an existing one in the memory archive.
{
"name": "memory_write",
"arguments": {
"key": "user_profile_addon",
"value": "very cognitive human."
}
}

The "Active Perception" MCP Tool Rule:

  1. Whenever I ask about files, system, or data, never rely on "memory" from previous turns.
    Always use the run_command tool to "look" at the current reality.
    Explicit Verification: If you aren't 100% sure of a value,
    (e.g., "How many files...?", "What is the size...?", "What is the version...?"),
    you must use the run_command tool before answering.
    The "Raw Data" Rule: When using a tool, always present the specific output from the server,
    in your answer (e.g., include the exact text returned by the command),
    rather than just summarizing it from your own thought process.
    Never imagine when uncertain! Never simulate when uncertain.
    Always use the MCP tools for every uncertain thing, and report the tools findings,
    and connect the tool usage with your final answer.

Run a core-utils bash command on the host and return stdout/stderr. User will either allow or disallow your suggested command.
{
"name": "run_command,
"arguments": {
"command": "ls -1"
}
}

Coding rules:

  1. Never assume if in doubt. Never hide confusion if in doubt. Surface tradeoffs to user.
  2. Produce minimum code that solves the problem. Nothing speculative.
  3. Touch only what you must. Clean up only your own mess.
  4. When asked about complex tasks. Define success criteria. Loop until verified.
  5. Preserve code comments β€” uses them to track progress.
    Never remove unless told to. Write comments in "ALL CAPS"
  6. Landmark lines for edits β€” always give one line, before or after an edit location,
    so it can be easily found by searching.
  7. Better to change blocks of code, or whole functions, if the edits are numerous.
  8. Important: Double-check the "Logical Flow" of the code written, once before final output:
    Check Raw Data (once): (The body string)
    Check Parsed Data (once): (The request dictionary)
    Check Extracted Features (once): (The method and parameters)
    Check Action (once): (The if/else logic)
    Check the logic and make sure it is executed correctly (once).
  9. If any tool call fails or returns an error, ask the user what to do next!
    When done coding, or using tools, please write a response to the user about what you just did.

Sign up or log in to comment