add asyncio

This commit is contained in:
bridge
2025-09-02 22:16:03 +08:00
parent 0f9f5f35f7
commit bd28da21f5
7 changed files with 90 additions and 28 deletions

View File

@@ -13,7 +13,7 @@ from src.classes.tile import Region
from src.classes.root import corres_essence_type
from src.classes.action import ACTION_SPACE_STR
from src.classes.event import Event, NULL_EVENT
from src.utils.llm import get_ai_prompt_and_call_llm
from src.utils.llm import get_ai_prompt_and_call_llm_async
from src.classes.typings import ACTION_NAME, ACTION_PARAMS, ACTION_PAIR
if TYPE_CHECKING:
@@ -26,12 +26,12 @@ class AI(ABC):
def __init__(self, avatar: Avatar):
self.avatar = avatar
def decide(self, world: World) -> tuple[ACTION_NAME, ACTION_PARAMS, Event]:
async def decide(self, world: World) -> tuple[ACTION_NAME, ACTION_PARAMS, Event]:
"""
决定做什么,同时生成对应的事件
"""
# 先决定动作和参数
action_name, action_params = self._decide(world)
action_name, action_params = await self._decide(world)
# 获取动作对象并生成事件
action = self.avatar.create_action(action_name)
@@ -40,7 +40,7 @@ class AI(ABC):
return action_name, action_params, event
@abstractmethod
def _decide(self, world: World) -> ACTION_PAIR:
async def _decide(self, world: World) -> ACTION_PAIR:
"""
决策逻辑:决定执行什么动作和参数
由子类实现具体的决策逻辑
@@ -51,7 +51,7 @@ class RuleAI(AI):
"""
规则AI
"""
def _decide(self, world: World) -> ACTION_PAIR:
async def _decide(self, world: World) -> ACTION_PAIR:
"""
决策逻辑:决定执行什么动作和参数
先做一个简单的:
@@ -93,9 +93,9 @@ class LLMAI(AI):
不能每个单步step都调用一次LLM来决定下一步做什么。这样子一方面动作一直乱变另一方面也太费token了。
decide的作用是拉取既有的动作链如果没有了就call_llm再根据动作链决定动作以及动作之间的衔接。
"""
def _decide(self, world: World) -> ACTION_PAIR:
async def _decide(self, world: World) -> ACTION_PAIR:
"""
决策逻辑通过LLM决定执行什么动作和参数
异步决策逻辑通过LLM决定执行什么动作和参数
"""
action_space_str = ACTION_SPACE_STR
avatar_infos_str = str(self.avatar)
@@ -107,6 +107,6 @@ class LLMAI(AI):
"regions": regions_str,
"avatar_persona": avatar_persona
}
res = get_ai_prompt_and_call_llm(dict_info)
res = await get_ai_prompt_and_call_llm_async(dict_info)
action_name, action_params = res["action_name"], res["action_params"]
return action_name, action_params