| | --- |
| | license: apache-2.0 |
| | --- |
| | |
| | [Run `diff-apply` on |
| | Synthetic!](https://synthetic.new/hf/syntheticlab/diff-apply) |
| |
|
| | `diff-apply` is a small, fast model to apply search-and-replace style diffs to |
| | code. Many coding agents use search-and-replace as the default first-line edit |
| | format; however, for larger diffs, it's common for even fairly good coding |
| | models to produce slightly inaccurate search strings, i.e. with spacing |
| | slightly off or with other minor differences. |
| |
|
| | Typically, coding agents will do the following to handle those errors: |
| |
|
| | 1. Hardcode heuristics to attempt to apply certain classes of incorrect diffs |
| | 2. If that fails, retry calling the original model, which can be expensive and |
| | slow, and also can confuse the original model as to what the current file |
| | state is. |
| |
|
| | `diff-apply` is trained to fix those diffs, allowing coding agents to typically |
| | skip (expensive, slow, model-confusing) retries, much more robustly than |
| | hardcoded heuristics. It's a Llama 3.1 8b LoRA, which means you can run it |
| | cheaply on inference providers like |
| | [Synthetic](https://synthetic.new/hf/syntheticlab/diff-apply). |
| |
|
| | The model expects prompts in the following format: |
| |
|
| | ``` |
| | This edit is invalid; please fix it. The search string does not match perfectly with the file contents. |
| | Respond only with JSON, and only with the edit JSON, not the original file. |
| | If the edit is ambiguous, respond with null. |
| | { |
| | "file": "the-underlying-file", |
| | "edit": { |
| | "type": "diff", |
| | "search": "the-search-string", |
| | "replace": "the-replace-string", |
| | } |
| | } |
| | ``` |
| |
|
| | It will respond with the fixed edit in JSON. |
| |
|
| | ## Training details |
| |
|
| | Trained on a single H100 NVL for 9 hours using Axolotl. |
| |
|