Comments (4)
@jakethekoenig completely agree! Last week while I was making these changes I realized that concrete change wasn't really needed, and mapped out a completely different architecture that I really like with @biobootloader. I'll keep this issue as-is, but in #94 I lay out the new structure we agreed upon; it pretty much turns the AbstractChange into FileEdit (although FileChange would be a good name too) and removes the ConcreteChange completely.
from mentat.
Can we close this issue?
from mentat.
I really like the idea of decoupling the LLM specified file change format and our internal file change object. I wonder if instead of calling them ConcreteChange
and AbstractChange
we might want to call them something like LlmResponseFormat
(or LlmChangeParser
?) and FileChange
. As I understand it the responsibilities/differences of the two objects are:
ConcreteChange
or LlmResponseFormat
- Provide a prompt which describes the format to specify a change in. Like is currently done here.
- Provide a function which parses responses which have been received from an Llm prompted with the LlmResponseFormat's prompt block and returns a collection of
FileChange
objects. - We may make many of these and experiment with different prompts for different Llms and evaluate things like how consistently Llms can respond in the correct format, how many tokens they use both in prompt and response and if they affect response quality.
(Maybe you imagine theConcreteChange
isn't theLlmResponseFormat
which is a third thing but is the actual response describing a file change received from the Llm?)
AbstractChange
or FileChange
- Represents a change to a file precisely with all the information you'd need to make the change e.g. path, line #, text to insert.
- Has a function to pretty print it for a user to accept/reject.
- Has a function which actually makes the edit.
- Once we settle on a design for this object it's unlikely to change much compared to LlmResponseFormat where there's a lot of experimentation to do.
Let me know it my summary and understanding aren't quite right but I think the dichotomy is more like Raw/Parsed than Concrete/Abstract.
from mentat.
Slight change to the plan for AbstractChange after thinking and working on it for a bit: Planning on having Additions, Deletions, and Rename subchanges -- the Rename change will have a new name where None will represent a deletion, and a Rename when the file does not exist will represent a creation
from mentat.
Related Issues (20)
- Error when deployment_name is different from model name in Azure HOT 5
- Git Diff problem caused by Sampler when using a Virtual environment HOT 4
- Replace colored with style HOT 1
- How is this project different from aider? HOT 1
- Textual improvements HOT 11
- save/load context HOT 3
- Bug when exiting search command: loading bar gets stuck, doesn't print anything
- Mentat Python SDK doesn't return anything when working on bigger projects
- Optimization of non-GPT 4 major model outputs HOT 1
- maximum context should be reset when /config is used to change model
- in powerpoint online
- "Provider is required when unknown models are used" but no way to set provider for gpt-4-turbo. HOT 5
- Benchmark on SWE-Bench HOT 1
- Release 1.0.18
- Starting mentat failed
- error on running command mentat HOT 1
- Mentat python client throws `mentat.errors.MentatError: Session failed`
- Opendevin collaboration
- Using claude 3.5 sonnet HOT 5
- [Suggestion] Using Exponential Backoff to avoid LLM Rate Limit Errors
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mentat.