feat: simplify state.history with to_memory call in micro-agent. Or the call to LLM may exceed the token limit. (#1806)

* feat: simplify state.history with to_memory call in micro-agent.

* feat: merge master and replace to_memory with event_to_memory.

---------

Co-authored-by: aaren.xzh <aaren.xzh@antfin.com>
This commit is contained in:
Xia Zhenhua 2024-05-15 20:47:37 +08:00 committed by GitHub
parent bf14b47890
commit 76abca361c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 23 additions and 9 deletions

View File

@ -5,6 +5,7 @@ from opendevin.controller.state.state import State
from opendevin.core.utils import json
from opendevin.events.action import Action
from opendevin.events.serialization.action import action_from_dict
from opendevin.events.serialization.event import event_to_memory
from opendevin.llm.llm import LLM
from .instructions import instructions
@ -26,6 +27,18 @@ def to_json(obj, **kwargs):
return json.dumps(obj, **kwargs)
def history_to_json(obj, **kwargs):
"""
Serialize and simplify history to str format
"""
if isinstance(obj, list):
# process history, make it simpler.
processed_history = []
for action, observation in obj:
processed_history.append((event_to_memory(action), event_to_memory(observation)))
return json.dumps(processed_history, **kwargs)
class MicroAgent(Agent):
prompt = ''
agent_definition: dict = {}
@ -44,6 +57,7 @@ class MicroAgent(Agent):
state=state,
instructions=instructions,
to_json=to_json,
history_to_json=history_to_json,
delegates=self.delegates,
latest_user_message=latest_user_message,
)

View File

@ -21,7 +21,7 @@ Do NOT finish until you have completed the tasks.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
## Format
{{ instructions.format.action }}

View File

@ -18,7 +18,7 @@ the `reject` action with `outputs.answer` set to the reason.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
If the last item in the history is an error, you should try to fix it.

View File

@ -17,7 +17,7 @@ provide the correct inputs for the delegate you select.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
## Available Actions
{{ instructions.actions.delegate }}

View File

@ -10,7 +10,7 @@ and call the `finish` action with `outputs.answer` set to the answer.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
If the last item in the history is an error, you should try to fix it.

View File

@ -18,7 +18,7 @@ You may take any of the following actions:
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
## Format
{{ instructions.format.action }}

View File

@ -20,7 +20,7 @@ When you're done, put your summary into the output of the `finish` action.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
## Format
{{ instructions.format.action }}

View File

@ -19,7 +19,7 @@ When you're done, put your summary in `outputs.summary` in the `finish` action.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
## Format
{{ instructions.format.action }}

View File

@ -23,7 +23,7 @@ Do NOT finish until you have fixed all the typos and generated a summary.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-5:]) }}
{{ history_to_json(state.history[-5:]) }}
## Format
{{ instructions.format.action }}

View File

@ -21,7 +21,7 @@ explaining what the problem is.
## History
{{ instructions.history_truncated }}
{{ to_json(state.history[-10:]) }}
{{ history_to_json(state.history[-10:]) }}
## Format
{{ instructions.format.action }}