• Devon Rifkin's avatar
    harmony: convert fn names to be valid ts identifiers · 048bd447
    Devon Rifkin authored
    In <https://github.com/ollama/ollama/issues/11704#issuecomment-3177380197>
    I noticed that hyphens in function names could possibly cause the model
    to become confused. Later in that issue I found other explanations, but
    at a minimum tool names with spaces in them are confusing to the model
    because of the prompt format.
    
    In this change I create a mapper that converts arbitrary tool names into
    valid typescript identifiers. It's a little overly strict in that it
    doesn't allow all unicode characters that might be valid in ts
    identifiers, but it's still very permissive. Since mappings aren't
    reversible, we must temporarily store this mapping in order to unmap it
    if the model comes back with a call. We also handle the case where
    multiple mappings collide into the same mapping and append a counter to
    the end to make them unique
    048bd447
harmonyparser_test.go 16.8 KB