Skip to content

Commit 703f27c

Browse files
authored
Roadmap Update
1 parent c12aded commit 703f27c

File tree

1 file changed

+3
-75
lines changed

1 file changed

+3
-75
lines changed

docs/ROADMAP.md

Lines changed: 3 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -1,26 +1,16 @@
11
# Roadmap
22

33
## Documentation
4-
5-
64
- [ ] Work with Mintlify to translate docs. How does Mintlify let us translate our documentation automatically? I know there's a way.
75
- [ ] Better comments throughout the package (they're like docs for contributors)
86
- [ ] Show how to replace interpreter.llm so you can use a custom llm
9-
- [ ] Show how to replace interpreter.computer or add to interpreter.computer.languages for like, e2b execution, remote execution, new programming languages, etc.
107

118
## New features
12-
139
- [ ] Figure out how to get OI to answer to user input requests like python's `input()`. Do we somehow detect a delay in the output..? Is there some universal flag that TUIs emit when they expect user input? Should we do this semantically with embeddings, then ask OI to review it and respond..?
14-
- [ ] Multi-line input. Probably use `textual`
1510
- [ ] Placeholder text that gives a compelling example OI request. Probably use `textual`
1611
- [ ] Everything else `textual` offers, like could we make it easier to select text? Copy paste in and out? Code editing interface?
1712
- [ ] Let people edit the code OI writes. Could just open it in the user's preferred editor. Simple. [Full description of how to implement this here.](https://github.com/KillianLucas/open-interpreter/pull/830#issuecomment-1854989795)
1813
- [ ] Display images in the terminal interface
19-
- [ ] Add anonymous, opt-in data collection → open-source dataset, like `--contribute_conversations`
20-
- [ ] Make that flag send each message to server
21-
- [ ] Set up receiving replit server
22-
- [ ] Add option to review and send previous conversations, use some PII redaction package then too
23-
- [ ] Make the messaging really strong re: "We will be saving this, we will redact PII, we will open source the dataset so we (and others) can train code interpreting models"
2414
- [ ] There should be a function that just renders messages to the terminal, so we can revive conversation navigator, and let people look at their conversations
2515
- [ ] ^ This function should also render the last like 5 messages once input() is about to be run, so we don't get those weird stuttering `rich` artifacts
2616
- [ ] Let OI use OI, add `interpreter.chat(async=True)` bool. OI can use this to open OI on a new thread
@@ -29,14 +19,8 @@
2919
- [ ] If `interpreter.functions != []`:
3020
- [ ] set `interpreter.computer.languages` to only use Python
3121
- [ ] Use regex to ensure the output of code blocks conforms to just using those functions + other python basics
32-
- [x] Allow for custom llms (to be stored in `interpreter.llm`) which conform to some class
33-
- [x] Has attributes `.supports_functions`, `.supports_vision`, and `.context_window`
3422
- [ ] (Maybe) Allow for a custom embedding function (`interpreter.embed` or `computer.ai.embed`) which will let us do semantic search
3523
- [ ] (Maybe) if a git is detected, switch to a mode that's good for developers, like showing nested file structure in dynamic system message, searching for relevant functions (use computer.files.search)
36-
- [ ] Add a skill library, or maybe expose post processing on code, so we can save functions for later & semantically search docstrings. Keep this minimal!
37-
- [ ] If `interpreter.skill_library == True`, we should add a decorator above all functions, then show OI how to search its skill library
38-
- [ ] Use computer.files.search over a folder that decorator saves functions (and import statements to)
39-
- [ ] Then use dynamic system message to show relevant functions
4024
- [x] Allow for integrations somehow (you can replace interpreter.llm.completions with a wrapped completions endpoint for any kind of logging. need to document this tho)
4125
- [ ] Document this^
4226
- [ ] Expand "safe mode" to have proper, simple Docker support, or maybe Cosmopolitan LibC
@@ -53,42 +37,14 @@
5337
- [ ] Loop over that ↑ using a different prompt each time. Which prompt is best across all LLMs?
5438
- [ ] (For the NCU) might be good to use a Google VM with a display
5539
- [ ] (Future future) Use GPT-4 to assess each result, explaining each failure. Summarize. Send it all to GPT-4 + our prompt. Let it redesign the prompt, given the failures, rinse and repeat
56-
- [ ] Use Anthropic function calling
57-
- [ ] Implement Plausible\*
58-
- [ ] Stateless (as in, doesn't use the application directory) core python package. All `appdir` stuff should be only for the TUI
40+
- [ ] Stateless (as in, doesn't use the application directory) core python package. All `appdir` or `platformdirs` stuff should be only for the TUI
5941
- [ ] `interpreter.__dict__` = a dict derived from config is how the python package should be set, and this should be from the TUI. `interpreter` should not know about the config
6042
- [ ] Move conversation storage out of the core and into the TUI. When we exit or error, save messages same as core currently does
61-
- [ ] Local and vision should be reserved for TUI, more granular settings for Python
62-
- [x] Rename `interpreter.local``interpreter.offline`
63-
- [x] Implement custom LLMs with a `.supports_vision` attribute instead of `interpreter.vision`
6443
- [ ] Further split TUI from core (some utils still reach across)
65-
- [ ] Remove `procedures` (there must be a better way)
6644
- [ ] Better storage of different model keys in TUI / config file. All keys, to multiple providers, should be stored in there. Easy switching
6745
- [ ] Automatically migrate users from old config to new config, display a message of this
6846
- [ ] On update, check for new system message and ask user to overwrite theirs, or only let users pass in "custom instructions" which adds to our system message
69-
- [ ] I think we could have a config that's like... system_message_version. If system_message_version is below the current version, ask the user if we can overwrite it with the default config system message of that version
70-
71-
## Completed
72-
73-
- [x] **Split TUI from core — two seperate folders.** (This lets us tighten our scope around those two projects. See "What's in our scope" below.)
74-
- [x] Add %% (shell) magic command
75-
- [x] Support multiple instances
76-
- [x] Split ROADMAP into sections
77-
- [x] Connect %% (shell) magic command to shell interpreter that `interpreter` runs
78-
- [x] Expose tool (`interpreter.computer.run(language, code)`)
79-
- [x] Generalize "output" and "input" — new types other than text: HTML, Image (see below)
80-
- [x] Switch core code interpreter to be Jupyter-powered
81-
- [x] Make sure breaking from generator during execution stops the execution
82-
- [x] (thanks ty!) Add more hosted model instructions from [LiteLLM's docs](https://docs.litellm.ai/docs/) to [our docs](https://github.com/KillianLucas/open-interpreter/tree/main/docs/language-model-setup/hosted-models).
83-
- [x] Find a model that's [on LiteLLM's docs](https://docs.litellm.ai/docs/providers), but isn't [on ours](https://docs.openinterpreter.com/language-model-setup/hosted-models/openai)
84-
- [x] Duplicate [one of our hosted model's `.mdx` file](https://github.com/KillianLucas/open-interpreter/tree/main/docs/language-model-setup/hosted-models)
85-
- [x] Swap out the information with information from LiteLLM
86-
- [x] Repeat with other models
87-
- [x] Allow for custom languages (`interpreter.computer.languages.append(class_that_conforms_to_base_language)`)
88-
- [x] Make it so function calling dynamically uses the languages in interpreter.computer.languages
89-
- [x] Make a migration guide for the New Computer Update (whats different in our new streaming structure (below) vs. [our old streaming structure](https://docs.openinterpreter.com/usage/python/streaming-response)) thanks ty!
90-
- [x] Require documentation for PRs
91-
- [x] Document the New Computer Update
47+
- [ ] I think we could have a config that's like... system_message_version. If system_message_version is below the current version, ask the user if we can overwrite it with the default config system message of that version. (This somewhat exists now but needs to be robust)
9248

9349
# What's in our scope?
9450

@@ -102,8 +58,7 @@ Open Interpreter contains two projects which support eachother, whose scopes are
10258
Our guiding philosphy is minimalism, so we have also decided to explicitly consider the following as **out of scope**:
10359

10460
1. Additional functions in `core` beyond running code.
105-
2. Advanced memory or planning. We consider these to be the LLM's responsibility, and as such OI will remain single-threaded.
106-
3. More complex interactions with the LLM in `terminal_interface` beyond text (but file paths to more complex inputs, like images or video, can be included in that text).
61+
2. More complex interactions with the LLM in `terminal_interface` beyond text (but file paths to more complex inputs, like images or video, can be included in that text).
10762

10863
---
10964

@@ -211,30 +166,3 @@ if __name__ == "__main__":
211166
This script will launch Chrome, connect to it, navigate to "https://www.example.com", and then print the accessibility tree to the console.
212167

213168
**Note**: The script to launch Chrome assumes a typical installation path on Windows. You will need to modify this path according to your Chrome installation location and operating system. Additionally, handling different operating systems requires conditional checks and respective commands for each OS.
214-
215-
## \* Roughly, how to build `computer.files`:
216-
217-
Okay I'm thinking like, semantic filesystem or something. We make a new package that does really simple semantic search over a filesystem, then expose it via `computer.files.search("query")`.
218-
219-
## \* Plausible
220-
221-
```python
222-
import requests
223-
import json
224-
225-
def send_event_to_plausible(domain, event_name):
226-
url = f'https://plausible.io/api/event'
227-
headers = {'Content-Type': 'application/json', 'User-Agent': 'YourAppName/Version'}
228-
payload = {
229-
'domain': domain,
230-
'name': event_name,
231-
'url': 'https://yourapp.com/path', # URL where the event occurred
232-
'referrer': '',
233-
'props': {'prop1': 'value1', 'prop2': 'value2'}
234-
}
235-
response = requests.post(url, headers=headers, data=json.dumps(payload))
236-
return response.status_code, response.text
237-
238-
# Usage example
239-
send_event_to_plausible('yourdomain.com', 'event_name')
240-
```

0 commit comments

Comments
 (0)