|
# OpenHands Skill Sets
|
|
|
|
This folder implements a skill/tool set `agentskills` for OpenHands.
|
|
|
|
It is intended to be used by the agent **inside sandbox**.
|
|
The skill set will be exposed as a `pip` package that can be installed as a plugin inside the sandbox.
|
|
|
|
The skill set can contain a bunch of wrapped tools for agent ([many examples here](https://github.com/All-Hands-AI/OpenHands/pull/1914)), for example:
|
|
- Audio/Video to text (these are a temporary solution, and we should switch to multimodal models when they are sufficiently cheap
|
|
- PDF to text
|
|
- etc.
|
|
|
|
# Inclusion Criteria
|
|
|
|
We are walking a fine line here.
|
|
We DON't want to *wrap* every possible python packages and re-teach agent their usage (e.g., LLM already knows `pandas` pretty well, so we don't really need create a skill that reads `csv` - it can just use `pandas`).
|
|
|
|
We ONLY want to add a new skill, when:
|
|
- Such skill is not easily achievable for LLM to write code directly (e.g., edit code and replace certain line)
|
|
- It involves calling an external model (e.g., you need to call a speech to text model, editor model for speculative editing)
|
|
|
|
# Intended functionality
|
|
|
|
- Tool/skill usage (through `IPythonRunAction`)
|
|
|
|
```python
|
|
# In[1]
|
|
from agentskills import open_file, edit_file
|
|
open_file("/workspace/a.txt")
|
|
# Out[1]
|
|
[SWE-agent open output]
|
|
|
|
# In[2]
|
|
edit_file(
|
|
"/workspace/a.txt",
|
|
start=1, end=3,
|
|
content=(
|
|
("REPLACE TEXT")
|
|
))
|
|
# Out[1]
|
|
[SWE-agent edit output]
|
|
```
|
|
|
|
- Tool/skill retrieval (through `IPythonRunAction`)
|
|
|
|
```python
|
|
# In[1]
|
|
from agentskills import help_me
|
|
|
|
help_me("I want to solve a task that involves reading a bunch of PDFs and reason about them")
|
|
|
|
# Out[1]
|
|
"Here are the top skills that may be helpful to you:
|
|
- `pdf_to_text`: [documentation about the tools]
|
|
...
|
|
"
|
|
```
|
|
|