update code and rm useless role

This commit is contained in:
stellahsr 2023-09-24 12:59:12 +08:00
parent 074e28ff17
commit 6e25cb53d1
4 changed files with 4 additions and 74 deletions

1
.gitignore vendored
View file

@ -164,3 +164,4 @@ tmp
output.wav
metagpt/roles/idea_agent.py
.aider*
/config/*.yaml

View file

@ -15,7 +15,7 @@ from metagpt.roles.minecraft.minecraft_base import Minecraft
from metagpt.environment import Environment
class GameMemory(BaseModel):
class GameEnvironment(BaseModel):
"""
游戏环境的记忆用于多个agent进行信息的共享和缓存而不需要重复在自己的角色内维护缓存
"""
@ -78,7 +78,7 @@ class MinecraftPlayer(SoftwareCompany):
dedicated to writing executable code.
"""
environment: Environment = Field(default_factory=Environment)
game_memory: GameMemory = Field(default_factory=GameMemory)
game_memory: GameEnvironment = Field(default_factory=GameEnvironment)
investment: float = Field(default=50.0)
task: str = Field(default="")
game_info: dict = Field(default={})

View file

@ -1,68 +0,0 @@
# -*- coding: utf-8 -*-
# @Date : 2023/9/23 14:29
# @Author : stellahong (stellahong@fuzhi.ai)
# @Desc :
import json
from metagpt.logs import logger
from metagpt.roles.minecraft.minecraft_base import Minecraft as Base
from metagpt.schema import Message
from metagpt.actions.minecraft.player_action import PlayerActions
from metagpt.actions.minecraft.generate_actions import GenerateActionCode
from metagpt.actions.minecraft.process_event import HandleEvents
class EventHandler(Base):
def __init__(
self,
name: str = "Thompson",
profile: str = "Minecraft Event Handler",
goal: str = "To efficiently manage and respond to in-game events, providing information about the player.",
constraints: str = "Resource availability, server performance, adherence to server rules and regulations.",
) -> None:
super().__init__(name, profile, goal, constraints)
# Initialize actions specific to the EventHandler role
self._init_actions([HandleEvents])
# Set events or actions the EventHandler should watch or be aware of
self._watch([PlayerActions, GenerateActionCode])
self.last_events = {"env_events": {},
"execute_results": {}}
async def _act(self) -> Message:
# 获取最新的消息
msg = self._rc.memory.get(k=1)[0]
query = msg.content if self._rc.state == 0 else msg.instruct_content
"""
todo: parse query info from message, e.g. test_round and action code
"""
test_round = 1
logger.info(msg.cause_by)
if msg.cause_by == GenerateActionCode: # 进行生成的代码执行, 获取的结果用于进行AI评估
events = await HandleEvents().run(query)
result_msg = Message(
content=f"Round {test_round} of rollout done",
role=self.profile,
cause_by=HandleEvents,
sent_from=self.profile,
send_to="Task Reviewer",
)
self.perform_game_info_callback(events, self.game_memory.update_event)
else:
events = await HandleEvents().run(query)
result_msg = Message(
content=events,
role=self.profile,
cause_by=HandleEvents,
sent_from=self.profile,
send_to="",
)
self.perform_game_info_callback(events, self.game_memory.update_event)
return result_msg

View file

@ -49,8 +49,6 @@ class Minecraft(Role):
self.game_memory = None
self.event = {}
#
async def _think(self) -> None:
if len(self._actions) == 1:
# If there is only one action, then only this one can be performed
@ -75,7 +73,7 @@ class Minecraft(Role):
async def _obtain_events(self):
return await self.game_memory.on_event()
def set_memory(self, shared_memory: 'GameMemory'):
def set_memory(self, shared_memory: 'GameEnviroment'):
self.game_memory = shared_memory
def render_human_message(self, msg, *args, **kwargs):
@ -102,4 +100,3 @@ if __name__ == "__main__":
result = "Async operation result"
# 调用回调函数,并传递结果
# mc.perform_memory_callback(mc.my_callback)
print(mc.game_memory.current_task)