Spaces:
Runtime error
Runtime error
#!/usr/bin/env python | |
# -*- coding: utf-8 -*- | |
from typing import Iterable, Type | |
from pydantic import BaseModel, Field | |
from autoagents.roles import Role | |
from autoagents.actions import CustomAction, Action, ActionOutput | |
# from autoagents.environment import Environment | |
from autoagents.system.config import CONFIG | |
from autoagents.system.llm import LLM | |
from autoagents.system.logs import logger | |
from autoagents.system.memory import Memory, LongTermMemory | |
from autoagents.system.schema import Message | |
class CustomRole(Role): | |
def __init__(self, role_prompt, steps, tool, watch_actions, | |
name="CustomRole", | |
profile="CustomeRole", | |
goal="Efficiently to finish the tasks", | |
constraints="", | |
**kwargs): | |
super().__init__(name, profile, goal, constraints, **kwargs) | |
class_name = name.replace(' ', '_')+'_Action' | |
action_object = type(class_name, (CustomAction,), {"role_prompt":role_prompt, "steps":steps, "tool":tool}) | |
self._init_actions([action_object]) | |
self._watch(watch_actions) | |
async def _act(self) -> Message: | |
logger.info(f"{self._setting}: ready to {self._rc.todo}") | |
completed_steps = '' | |
addition = f"\n### Completed Steps and Responses\n{completed_steps}\n###" | |
context = str(self._rc.important_memory) + addition | |
response = await self._rc.todo.run(context) | |
if hasattr(response.instruct_content, 'Action'): | |
completed_steps += '>Substep:\n' + response.instruct_content.Action + '\n>Subresponse:\n' + response.instruct_content.Response + '\n' | |
count_steps = 0 | |
while hasattr(response.instruct_content, 'Action'): | |
if count_steps > 20: | |
completed_steps += '\n You should synthesize the responses of previous steps and provide the final feedback.' | |
addition = f"\n### Completed Steps and Responses\n{completed_steps}\n###" | |
context = str(self._rc.important_memory) + addition | |
response = await self._rc.todo.run(context) | |
if hasattr(response.instruct_content, 'Action'): | |
completed_steps += '>Substep:\n' + response.instruct_content.Action + '\n>Subresponse:\n' + response.instruct_content.Response + '\n' | |
count_steps += 1 | |
if count_steps > 20: break | |
if isinstance(response, ActionOutput): | |
msg = Message(content=response.content, instruct_content=response.instruct_content, | |
role=self.profile, cause_by=type(self._rc.todo)) | |
else: | |
msg = Message(content=response, role=self.profile, cause_by=type(self._rc.todo)) | |
self._rc.memory.add(msg) | |
return msg |