fix: allow empty initial message sequence (#2214)

This commit is contained in:
Kevin Lin
2024-12-10 12:27:35 -07:00
committed by GitHub
parent c7e6b8497d
commit 6cd9bb6d79
3 changed files with 26 additions and 3 deletions

View File

@@ -130,8 +130,9 @@ class OfflineMemoryAgent(Agent):
# extras
first_message_verify_mono: bool = False,
max_memory_rethinks: int = 10,
initial_message_sequence: Optional[List[Message]] = None,
):
super().__init__(interface, agent_state, user)
super().__init__(interface, agent_state, user, initial_message_sequence=initial_message_sequence)
self.first_message_verify_mono = first_message_verify_mono
self.max_memory_rethinks = max_memory_rethinks

View File

@@ -379,6 +379,8 @@ class SyncServer(Server):
interface = interface or self.default_interface_factory()
if agent_state.agent_type == AgentType.memgpt_agent:
agent = Agent(agent_state=agent_state, interface=interface, user=actor, initial_message_sequence=initial_message_sequence)
elif agent_state.agent_type == AgentType.offline_memory_agent:
agent = OfflineMemoryAgent(agent_state=agent_state, interface=interface, user=actor, initial_message_sequence=initial_message_sequence)
else:
assert initial_message_sequence is None, f"Initial message sequence is not supported for O1Agents"
agent = O1Agent(agent_state=agent_state, interface=interface, user=actor)
@@ -843,7 +845,7 @@ class SyncServer(Server):
self.ms.create_agent(agent_state)
# create the agent object
if request.initial_message_sequence:
if request.initial_message_sequence is not None:
# init_messages = [Message(user_id=user_id, agent_id=agent_state.id, role=message.role, text=message.text) for message in request.initial_message_sequence]
init_messages = []
for message in request.initial_message_sequence:

View File

@@ -32,7 +32,6 @@ def clear_agents(client):
for agent in client.list_agents():
client.delete_agent(agent.id)
def test_ripple_edit(client, mock_e2b_api_key_none):
trigger_rethink_memory_tool = client.create_or_update_tool(trigger_rethink_memory)
@@ -135,3 +134,24 @@ def test_chat_only_agent(client, mock_e2b_api_key_none):
# Clean up agent
client.delete_agent(chat_only_agent.id)
def test_initial_message_sequence(client, mock_e2b_api_key_none):
"""
Test that when we set the initial sequence to an empty list,
we do not get the default initial message sequence.
"""
offline_memory_agent = client.create_agent(
name="offline_memory_agent",
agent_type=AgentType.offline_memory_agent,
system=gpt_system.get_system_text("memgpt_offline_memory"),
llm_config=LLMConfig.default_config("gpt-4"),
embedding_config=EmbeddingConfig.default_config("text-embedding-ada-002"),
include_base_tools=False,
initial_message_sequence=[],
)
assert offline_memory_agent is not None
assert len(offline_memory_agent.message_ids) == 1 # There should just the system message
client.delete_agent(offline_memory_agent.id)