pycityagent 2.0.0a73__cp39-cp39-macosx_11_0_arm64.whl → 2.0.0a75__cp39-cp39-macosx_11_0_arm64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -22,12 +22,18 @@ from ..llm.llmconfig import LLMConfig
22
22
  from ..memory import FaissQuery, Memory
23
23
  from ..message import Messager
24
24
  from ..metrics import MlflowClient
25
- from ..utils import (DIALOG_SCHEMA, INSTITUTION_STATUS_SCHEMA, PROFILE_SCHEMA,
26
- STATUS_SCHEMA, SURVEY_SCHEMA)
25
+ from ..utils import (
26
+ DIALOG_SCHEMA,
27
+ INSTITUTION_STATUS_SCHEMA,
28
+ PROFILE_SCHEMA,
29
+ STATUS_SCHEMA,
30
+ SURVEY_SCHEMA,
31
+ )
27
32
 
28
33
  logger = logging.getLogger("pycityagent")
29
34
  __all__ = ["AgentGroup"]
30
35
 
36
+
31
37
  @ray.remote
32
38
  class AgentGroup:
33
39
  def __init__(
@@ -36,6 +42,7 @@ class AgentGroup:
36
42
  number_of_agents: Union[int, list[int]],
37
43
  memory_config_function_group: dict[type[Agent], Callable],
38
44
  config: dict,
45
+ map_ref: ray.ObjectRef,
39
46
  exp_name: str,
40
47
  exp_id: Union[str, UUID],
41
48
  enable_avro: bool,
@@ -47,8 +54,8 @@ class AgentGroup:
47
54
  embedding_model: Embeddings,
48
55
  logging_level: int,
49
56
  agent_config_file: Optional[dict[type[Agent], str]] = None,
50
- environment: Optional[dict[str, str]] = None,
51
57
  llm_semaphore: int = 200,
58
+ environment: Optional[dict] = None,
52
59
  ):
53
60
  """
54
61
  Represents a group of agents that can be deployed in a Ray distributed environment.
@@ -64,6 +71,7 @@ class AgentGroup:
64
71
  - `number_of_agents` (Union[int, List[int]]): Number of instances to create for each agent class.
65
72
  - `memory_config_function_group` (Dict[Type[Agent], Callable]): Functions to configure memory for each agent type.
66
73
  - `config` (dict): Configuration settings for the agent group.
74
+ - `map_ref` (ray.ObjectRef): Reference to the map object.
67
75
  - `exp_name` (str): Name of the experiment.
68
76
  - `exp_id` (str | UUID): Identifier for the experiment.
69
77
  - `enable_avro` (bool): Flag to enable AVRO file support.
@@ -143,10 +151,12 @@ class AgentGroup:
143
151
  self.llm.set_semaphore(llm_semaphore)
144
152
 
145
153
  # prepare Simulator
146
- logger.info(f"-----Creating Simulator in AgentGroup {self._uuid} ...")
154
+ logger.info(f"-----Initializing Simulator in AgentGroup {self._uuid} ...")
147
155
  self.simulator = Simulator(config["simulator_request"])
148
- self.projector = pyproj.Proj(self.simulator.map.header["projection"])
149
- self.simulator.set_environment(environment) # type:ignore
156
+ self.simulator.set_map(map_ref)
157
+ self.projector = pyproj.Proj(
158
+ ray.get(self.simulator.map.get_projector.remote()) # type:ignore
159
+ )
150
160
  # prepare Economy client
151
161
  logger.info(f"-----Creating Economy client in AgentGroup {self._uuid} ...")
152
162
  self.economy_client = EconomyClient(
@@ -206,7 +216,7 @@ class AgentGroup:
206
216
  @property
207
217
  def agent_type(self):
208
218
  return self.agent_class
209
-
219
+
210
220
  async def get_economy_ids(self):
211
221
  return await self.economy_client.get_ids()
212
222
 
@@ -430,16 +440,6 @@ class AgentGroup:
430
440
  agent = self.id2agent[target_agent_uuid]
431
441
  await agent.status.update(target_key, content)
432
442
 
433
- async def update_environment(self, key: str, value: str):
434
- """
435
- Updates the environment with a given key-value pair.
436
-
437
- - **Args**:
438
- - `key` (str): The key to update in the environment.
439
- - `value` (str): The value to set for the specified key.
440
- """
441
- self.simulator.update_environment(key, value)
442
-
443
443
  async def message_dispatch(self):
444
444
  """
445
445
  Dispatches messages received via MQTT to the appropriate agents.
@@ -788,15 +788,18 @@ class AgentGroup:
788
788
  """
789
789
  try:
790
790
  tasks = [agent.run() for agent in self.agents]
791
- await asyncio.gather(*tasks)
792
- simulator_log = self.simulator.get_log_list() + self.economy_client.get_log_list()
791
+ agent_time_log = await asyncio.gather(*tasks)
792
+ simulator_log = (
793
+ self.simulator.get_log_list() + self.economy_client.get_log_list()
794
+ )
793
795
  group_logs = {
794
796
  "llm_log": self.llm.get_log_list(),
795
- "mqtt_log": ray.get(self.messager.get_log_list.remote()),
796
- "simulator_log": simulator_log
797
+ "mqtt_log": ray.get(self.messager.get_log_list.remote()), # type:ignore
798
+ "simulator_log": simulator_log,
799
+ "agent_time_log": agent_time_log,
797
800
  }
798
801
  self.llm.clear_log_list()
799
- self.messager.clear_log_list.remote()
802
+ self.messager.clear_log_list.remote() # type:ignore
800
803
  self.simulator.clear_log_list()
801
804
  self.economy_client.clear_log_list()
802
805
  return group_logs
@@ -13,30 +13,21 @@ import yaml
13
13
  from langchain_core.embeddings import Embeddings
14
14
 
15
15
  from ..agent import Agent, InstitutionAgent
16
- from ..cityagent import BankAgent, FirmAgent, GovernmentAgent, NBSAgent, SocietyAgent
17
- from ..cityagent.memory_config import (
18
- memory_config_bank,
19
- memory_config_firm,
20
- memory_config_government,
21
- memory_config_nbs,
22
- memory_config_societyagent,
23
- memory_config_init,
24
- )
16
+ from ..cityagent import (BankAgent, FirmAgent, GovernmentAgent, NBSAgent,
17
+ SocietyAgent)
25
18
  from ..cityagent.initial import bind_agent_info, initialize_social_network
26
- from ..cityagent.message_intercept import (
27
- EdgeMessageBlock,
28
- MessageBlockListener,
29
- PointMessageBlock,
30
- )
19
+ from ..cityagent.memory_config import (memory_config_bank, memory_config_firm,
20
+ memory_config_government,
21
+ memory_config_init, memory_config_nbs,
22
+ memory_config_societyagent)
23
+ from ..cityagent.message_intercept import (EdgeMessageBlock,
24
+ MessageBlockListener,
25
+ PointMessageBlock)
31
26
  from ..economy.econ_client import EconomyClient
32
27
  from ..environment import Simulator
33
28
  from ..llm import SimpleEmbedding
34
- from ..message import (
35
- MessageBlockBase,
36
- MessageBlockListenerBase,
37
- MessageInterceptor,
38
- Messager,
39
- )
29
+ from ..message import (MessageBlockBase, MessageBlockListenerBase,
30
+ MessageInterceptor, Messager)
40
31
  from ..metrics import init_mlflow_connection
41
32
  from ..metrics.mlflow_client import MlflowClient
42
33
  from ..survey import Survey
@@ -49,6 +40,7 @@ logger = logging.getLogger("pycityagent")
49
40
 
50
41
  __all__ = ["AgentSimulation"]
51
42
 
43
+
52
44
  class AgentSimulation:
53
45
  """
54
46
  A class to simulate a multi-agent system.
@@ -130,12 +122,16 @@ class AgentSimulation:
130
122
  _simulator_config = config["simulator_request"].get("simulator", {})
131
123
  if "server" in _simulator_config:
132
124
  raise ValueError(f"Passing Traffic Simulation address is not supported!")
133
- self._simulator = Simulator(config["simulator_request"])
125
+ simulator = Simulator(config["simulator_request"], create_map=True)
126
+ self._simulator = simulator
127
+ self._map_ref = self._simulator.map
128
+ server_addr = self._simulator.get_server_addr()
129
+ config["simulator_request"]["simulator"]["server"] = server_addr
134
130
  self._economy_client = EconomyClient(
135
131
  config["simulator_request"]["simulator"]["server"]
136
132
  )
137
133
  if enable_institution:
138
- self._economy_addr = economy_addr = self._simulator.server_addr
134
+ self._economy_addr = economy_addr = server_addr
139
135
  if economy_addr is None:
140
136
  raise ValueError(
141
137
  f"`simulator` not provided in `simulator_request`, thus unable to activate economy!"
@@ -312,7 +308,7 @@ class AgentSimulation:
312
308
  "crime": "The crime rate is low",
313
309
  "pollution": "The pollution level is low",
314
310
  "temperature": "The temperature is normal",
315
- "day": "Workday"
311
+ "day": "Workday",
316
312
  },
317
313
  )
318
314
  simulation._simulator.set_environment(environment)
@@ -382,24 +378,43 @@ class AgentSimulation:
382
378
  llm_log_lists = []
383
379
  mqtt_log_lists = []
384
380
  simulator_log_lists = []
381
+ agent_time_log_lists = []
385
382
  for step in config["workflow"]:
386
383
  logger.info(
387
384
  f"Running step: type: {step['type']} - description: {step.get('description', 'no description')}"
388
385
  )
389
- if step["type"] not in ["run", "step", "interview", "survey", "intervene", "pause", "resume", "function"]:
386
+ if step["type"] not in [
387
+ "run",
388
+ "step",
389
+ "interview",
390
+ "survey",
391
+ "intervene",
392
+ "pause",
393
+ "resume",
394
+ "function",
395
+ ]:
390
396
  raise ValueError(f"Invalid step type: {step['type']}")
391
397
  if step["type"] == "run":
392
- llm_log_list, mqtt_log_list, simulator_log_list = await simulation.run(step.get("days", 1))
398
+ llm_log_list, mqtt_log_list, simulator_log_list, agent_time_log_list = (
399
+ await simulation.run(step.get("days", 1))
400
+ )
393
401
  llm_log_lists.extend(llm_log_list)
394
402
  mqtt_log_lists.extend(mqtt_log_list)
395
403
  simulator_log_lists.extend(simulator_log_list)
404
+ agent_time_log_lists.extend(agent_time_log_list)
396
405
  elif step["type"] == "step":
397
406
  times = step.get("times", 1)
398
407
  for _ in range(times):
399
- llm_log_list, mqtt_log_list, simulator_log_list = await simulation.step()
408
+ (
409
+ llm_log_list,
410
+ mqtt_log_list,
411
+ simulator_log_list,
412
+ agent_time_log_list,
413
+ ) = await simulation.step()
400
414
  llm_log_lists.extend(llm_log_list)
401
415
  mqtt_log_lists.extend(mqtt_log_list)
402
416
  simulator_log_lists.extend(simulator_log_list)
417
+ agent_time_log_lists.extend(agent_time_log_list)
403
418
  elif step["type"] == "pause":
404
419
  await simulation.pause_simulator()
405
420
  elif step["type"] == "resume":
@@ -407,8 +422,8 @@ class AgentSimulation:
407
422
  else:
408
423
  await step["func"](simulation)
409
424
  logger.info("Simulation finished")
410
- return llm_log_lists, mqtt_log_lists, simulator_log_lists
411
-
425
+ return llm_log_lists, mqtt_log_lists, simulator_log_lists, agent_time_log_lists
426
+
412
427
  @property
413
428
  def enable_avro(
414
429
  self,
@@ -742,6 +757,7 @@ class AgentSimulation:
742
757
  number_of_agents,
743
758
  memory_config_function_group,
744
759
  self.config,
760
+ self._map_ref,
745
761
  self.exp_name,
746
762
  self.exp_id,
747
763
  self.enable_avro,
@@ -753,8 +769,8 @@ class AgentSimulation:
753
769
  embedding_model,
754
770
  self.logging_level,
755
771
  config_file,
756
- environment,
757
772
  llm_semaphore,
773
+ environment,
758
774
  )
759
775
  creation_tasks.append((group_name, group))
760
776
 
@@ -1018,7 +1034,9 @@ class AgentSimulation:
1018
1034
 
1019
1035
  # step
1020
1036
  simulator_day = await self._simulator.get_simulator_day()
1021
- simulator_time = int(await self._simulator.get_time())
1037
+ simulator_time = int(
1038
+ await self._simulator.get_simulator_second_from_start_of_day()
1039
+ )
1022
1040
  logger.info(
1023
1041
  f"Start simulation day {simulator_day} at {simulator_time}, step {self._total_steps}"
1024
1042
  )
@@ -1029,14 +1047,17 @@ class AgentSimulation:
1029
1047
  llm_log_list = []
1030
1048
  mqtt_log_list = []
1031
1049
  simulator_log_list = []
1050
+ agent_time_log_list = []
1032
1051
  for log_messages_group in log_messages_groups:
1033
- llm_log_list.extend(log_messages_group['llm_log'])
1034
- mqtt_log_list.extend(log_messages_group['mqtt_log'])
1035
- simulator_log_list.extend(log_messages_group['simulator_log'])
1036
-
1052
+ llm_log_list.extend(log_messages_group["llm_log"])
1053
+ mqtt_log_list.extend(log_messages_group["mqtt_log"])
1054
+ simulator_log_list.extend(log_messages_group["simulator_log"])
1055
+ agent_time_log_list.extend(log_messages_group["agent_time_log"])
1037
1056
  # save
1038
1057
  simulator_day = await self._simulator.get_simulator_day()
1039
- simulator_time = int(await self._simulator.get_time())
1058
+ simulator_time = int(
1059
+ await self._simulator.get_simulator_second_from_start_of_day()
1060
+ )
1040
1061
  save_tasks = []
1041
1062
  for group in self._groups.values():
1042
1063
  save_tasks.append(group.save.remote(simulator_day, simulator_time))
@@ -1050,7 +1071,7 @@ class AgentSimulation:
1050
1071
  ]
1051
1072
  await self.extract_metric(to_excute_metric)
1052
1073
 
1053
- return llm_log_list, mqtt_log_list, simulator_log_list
1074
+ return llm_log_list, mqtt_log_list, simulator_log_list, agent_time_log_list
1054
1075
  except Exception as e:
1055
1076
  import traceback
1056
1077
 
@@ -1081,6 +1102,7 @@ class AgentSimulation:
1081
1102
  llm_log_lists = []
1082
1103
  mqtt_log_lists = []
1083
1104
  simulator_log_lists = []
1105
+ agent_time_log_lists = []
1084
1106
  try:
1085
1107
  self._exp_info["num_day"] += day
1086
1108
  await self._update_exp_status(1) # 更新状态为运行中
@@ -1098,10 +1120,16 @@ class AgentSimulation:
1098
1120
  current_time = await self._simulator.get_time()
1099
1121
  if current_time >= end_time: # type:ignore
1100
1122
  break
1101
- llm_log_list, mqtt_log_list, simulator_log_list = await self.step()
1123
+ (
1124
+ llm_log_list,
1125
+ mqtt_log_list,
1126
+ simulator_log_list,
1127
+ agent_time_log_list,
1128
+ ) = await self.step()
1102
1129
  llm_log_lists.extend(llm_log_list)
1103
1130
  mqtt_log_lists.extend(mqtt_log_list)
1104
1131
  simulator_log_lists.extend(simulator_log_list)
1132
+ agent_time_log_lists.extend(agent_time_log_list)
1105
1133
  finally:
1106
1134
  # 设置停止事件
1107
1135
  stop_event.set()
@@ -1110,7 +1138,12 @@ class AgentSimulation:
1110
1138
 
1111
1139
  # 运行成功后更新状态
1112
1140
  await self._update_exp_status(2)
1113
- return llm_log_lists, mqtt_log_lists, simulator_log_lists
1141
+ return (
1142
+ llm_log_lists,
1143
+ mqtt_log_lists,
1144
+ simulator_log_lists,
1145
+ agent_time_log_lists,
1146
+ )
1114
1147
  except Exception as e:
1115
1148
  error_msg = f"模拟器运行错误: {str(e)}"
1116
1149
  logger.error(error_msg)
pycityagent/tools/tool.py CHANGED
@@ -5,6 +5,7 @@ from collections.abc import Callable, Sequence
5
5
  from typing import Any, Optional, Union
6
6
 
7
7
  from mlflow.entities import Metric
8
+ import ray
8
9
 
9
10
  from ..agent import Agent
10
11
  from ..environment import AoiService, PersonService
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: pycityagent
3
- Version: 2.0.0a73
3
+ Version: 2.0.0a75
4
4
  Summary: LLM-based city environment agent building library
5
5
  Author-email: Yuwei Yan <pinkgranite86@gmail.com>, Junbo Yan <yanjb20thu@gmali.com>, Jun Zhang <zhangjun990222@gmali.com>
6
6
  License: MIT License
@@ -1,10 +1,4 @@
1
- pycityagent-2.0.0a73.dist-info/RECORD,,
2
- pycityagent-2.0.0a73.dist-info/LICENSE,sha256=n2HPXiupinpyHMnIkbCf3OTYd3KMqbmldu1e7av0CAU,1084
3
- pycityagent-2.0.0a73.dist-info/WHEEL,sha256=md3JO_ifs5j508p3TDNMgtQVtnQblpGEt_Wo4W56l8Y,107
4
- pycityagent-2.0.0a73.dist-info/entry_points.txt,sha256=BZcne49AAIFv-hawxGnPbblea7X3MtAtoPyDX8L4OC4,132
5
- pycityagent-2.0.0a73.dist-info/top_level.txt,sha256=yOmeu6cSXmiUtScu53a3s0p7BGtLMaV0aff83EHCTic,43
6
- pycityagent-2.0.0a73.dist-info/METADATA,sha256=6YwxQbl14QnhjbHMwMPu4RoaBquNt8mSIXGJFaoD_CQ,9110
7
- pycityagent/pycityagent-sim,sha256=MYlRyvlpybVbiqKehzfV3GUbhatuQHNrxNWRBOs3nsU,35884466
1
+ pycityagent/pycityagent-sim,sha256=SKLQqFopRD0jOmZJUDtoo3l3Vuzqf_sfV1xeHPjchO8,35884466
8
2
  pycityagent/__init__.py,sha256=PUKWTXc-xdMG7px8oTNclodsILUgypANj2Z647sY63k,808
9
3
  pycityagent/pycityagent-ui,sha256=Ur95yZygIaZ5l_CDqP9394M5GQ66iV5PkcNPYFWqzvk,41225346
10
4
  pycityagent/metrics/mlflow_client.py,sha256=-iyh4BPVnBkluhmfucUzibCUnBX2iftkz4tVJJVxwHw,6958
@@ -12,13 +6,13 @@ pycityagent/metrics/__init__.py,sha256=X08PaBbGVAd7_PRGLREXWxaqm7nS82WBQpD1zvQzc
12
6
  pycityagent/economy/__init__.py,sha256=aonY4WHnx-6EGJ4WKrx4S-2jAkYNLtqUA04jp6q8B7w,75
13
7
  pycityagent/economy/econ_client.py,sha256=FUE-7Kxpa3u41eH_4Xye7IYquk1i25Hfv8Smq0nR1-o,24757
14
8
  pycityagent/tools/__init__.py,sha256=y7sMVMHf0AbivlczM2h-kr7mkgXK-WAx3S9BXLXkWvw,235
15
- pycityagent/tools/tool.py,sha256=-HZvKeq4gFMo2wJPk6vcr8EdXubM7kA0qC82zv_yS-s,9011
9
+ pycityagent/tools/tool.py,sha256=4ZJSHbNM8dfAVwZEw8T0a2_9OuPsPQpKSVL4WxZVBUc,9022
16
10
  pycityagent/llm/llmconfig.py,sha256=6AqCMV4B_JqBD2mb98bLGzpUdlOCnziQKae-Hhxxp-E,469
17
11
  pycityagent/llm/__init__.py,sha256=iWs6FLgrbRVIiqOf4ILS89gkVCTvS7HFC3vG-MWuyko,205
18
- pycityagent/llm/llm.py,sha256=DvrgrnrmR2JAQRVOvvRo3w4aD8M-qLAqVSD5pXZHr4M,19019
12
+ pycityagent/llm/llm.py,sha256=8f7hNbdcCjZHri5Fkmnd7s1p5hfFujIuv_wB1ykjLH8,19470
19
13
  pycityagent/llm/embeddings.py,sha256=3610I-_scAy8HwRNpT8hVJpH9_8_pTLCPptqnzSq10o,11322
20
14
  pycityagent/llm/utils.py,sha256=rSx_fp-_Gh0vZ-x2rqAUqnpS56BVTZ4ChfAMarB8S1A,195
21
- pycityagent/memory/memory.py,sha256=4vztwJ6dterLJxAWHkqawEBnYtvxp7VUAm0btsCLvic,45057
15
+ pycityagent/memory/memory.py,sha256=5mUweo-BgQYbXmVRAk7HTUXsar6O6iYz79VbLuMAvjo,45063
22
16
  pycityagent/memory/profile.py,sha256=Z1shwFc6MqakorbiY6rGqVAgCJP4YTpDrqnMQZcYQno,5227
23
17
  pycityagent/memory/__init__.py,sha256=NClJAXC4G6I8kFWkPEcU2lbVDfyrRb5HrrBHgCXrzOU,125
24
18
  pycityagent/memory/memory_base.py,sha256=av_sbD62PZbJyM8E9wmVuqYqgsutghcO7nJdAxGpHi0,9784
@@ -27,9 +21,9 @@ pycityagent/memory/utils.py,sha256=oJWLdPeJy_jcdKcDTo9JAH9kDZhqjoQhhv_zT9qWC0w,8
27
21
  pycityagent/memory/const.py,sha256=nFmjvt-8FEB0hc0glOH3lliqJhkhf3D_NKxWI0pf6TY,936
28
22
  pycityagent/memory/faiss_query.py,sha256=KPeyzIjD0dzkxr-TlOeCiIlkdh1WAyyipCAXUEt97Lk,17350
29
23
  pycityagent/memory/state.py,sha256=JFCBuK1AS-HqscvdGS9ATF9AUU8t29_2leDY_6iO2_4,5158
30
- pycityagent/simulation/simulation.py,sha256=K4u2tikxreRPyC4xAQQKgtlh-0wc9valjP6uvO6LTuE,47972
24
+ pycityagent/simulation/simulation.py,sha256=b4sFPVAMdCi1aiG6GX2cSE3vYa2Q14XfyRkxHp1GRCc,49526
31
25
  pycityagent/simulation/__init__.py,sha256=u1WpgwVxPboXWMxrUQKMXJNmTKQYAeCaqZv9HmSxESY,118
32
- pycityagent/simulation/agentgroup.py,sha256=iagtmxqBw7eyMCxYFU1SuLIHdoqkiBQV5qcE448QXpo,37068
26
+ pycityagent/simulation/agentgroup.py,sha256=oXo2iRUThh_96JhXHMufT8_BPx0PrlwqbMpiVqK_viA,36957
33
27
  pycityagent/simulation/storage/pg.py,sha256=xRshSOGttW-p0re0fNBOjOpb-nQ5msIE2LsdT79_E_Y,8425
34
28
  pycityagent/message/message_interceptor.py,sha256=QWuTUqi1Cu214fhFs0f78tD2zflMnb6zEAGB4RutXxs,17736
35
29
  pycityagent/message/__init__.py,sha256=f5QH7DKPqEAMyfSlBMnl3uouOKlsoel909STlIe7nUk,276
@@ -43,16 +37,16 @@ pycityagent/utils/parsers/__init__.py,sha256=AN2xgiPxszWK4rpX7zrqRsqNwfGF3WnCA5-
43
37
  pycityagent/utils/parsers/code_block_parser.py,sha256=jy6wHx9zypvJTWneCKuUaLQL19d4yLK6C_awc7y8A-k,1179
44
38
  pycityagent/utils/parsers/parser_base.py,sha256=ZbqRcqOBL9hfHVZSltQSQmJnWrtuJS9aYeOJU-FlJ0E,1725
45
39
  pycityagent/utils/parsers/json_parser.py,sha256=sakKohUuMcUH2toR85CAG_37D02ZoAn6LlzLgftUjmo,2923
46
- pycityagent/agent/agent_base.py,sha256=s2jFdGadn9gL9WPXf-WpdaPgY-yjzsxfcZp6VVr1K8M,37996
40
+ pycityagent/agent/agent_base.py,sha256=nz9QNfNjWVDza1yd8OwqmjZM3sq4fqONnVpcI8mA8cI,39488
47
41
  pycityagent/agent/__init__.py,sha256=U20yKu9QwSqAx_PHk5JwipfODkDfxONtumVfnsKjWFg,180
48
- pycityagent/agent/agent.py,sha256=CmgjlH4oBJ0elApYXbmEI33sJ_GKh2KS0bFBY0kUgVE,18874
42
+ pycityagent/agent/agent.py,sha256=Tq6VfEahZdZtWL4tdEM-rJM1FrLgjA5X0O04-sLYH-g,18881
49
43
  pycityagent/cli/wrapper.py,sha256=bAwmfWTXbGld-uiMnIMhKp22IVRQjhLUToknyUDk9rQ,1147
50
44
  pycityagent/workflow/__init__.py,sha256=H08Ko3eliZvuuCMajbEri-IP4-SeswYU6UjHBNA4Ze0,490
51
45
  pycityagent/workflow/prompt.py,sha256=rzenP4EFGxbWE1aq-x2036b6umKvi5cQx2xtWULwgIk,3392
52
46
  pycityagent/workflow/block.py,sha256=WJfCeL8e117GzkVPJCRNsQZZinccMnVyEubkwrf-17U,12295
53
47
  pycityagent/workflow/trigger.py,sha256=4nzAwywGQsFabgo6gzp-vD2EV4wII7Z0LHGEAsflSEY,7608
54
48
  pycityagent/environment/__init__.py,sha256=fFIth2jxxgZ92cXm-aoM2igHgaSqsYGwtBhyb7opjzk,166
55
- pycityagent/environment/simulator.py,sha256=bZr167qLth2tK8HtQm_L82OdnG2pM5SeP-iA26A7aRo,21259
49
+ pycityagent/environment/simulator.py,sha256=PpO4XyIbn5fSqycBlRYdGWuRumDzeXXM8ZQr8U5Mgcs,22608
56
50
  pycityagent/environment/utils/port.py,sha256=3OM6kSUt3PxvDUOlgyiendBtETaWU8Mzk_8H0TzTmYg,295
57
51
  pycityagent/environment/utils/grpc.py,sha256=_lB4-k4dTKuNvApaDiYgFxiLTPtYG42DVQtG9yOj9pQ,2022
58
52
  pycityagent/environment/utils/base64.py,sha256=hoREzQo3FXMN79pqQLO2jgsDEvudciomyKii7MWljAM,374
@@ -64,7 +58,7 @@ pycityagent/environment/utils/const.py,sha256=1LqxnYJ8FSmq37fN5kIFlWLwycEDzFa8SF
64
58
  pycityagent/environment/sim/pause_service.py,sha256=UUTa4pTBOX_MGKki9QDgKId7scch0waAWF9xRVmNlAs,1701
65
59
  pycityagent/environment/sim/person_service.py,sha256=T1pRi5jDcivSInX7iGZoHKYZmgO7_t5MYtLhU12_LC4,10793
66
60
  pycityagent/environment/sim/aoi_service.py,sha256=bYVJDrOfDn8hgOORDU7PxMaT-fpqXA5Z0A080l2EPBc,1242
67
- pycityagent/environment/sim/sim_env.py,sha256=aSdr3k3Scs2Mdd6PsBrABdz_7GKmV8kV4jo1Zw5N8nY,4625
61
+ pycityagent/environment/sim/sim_env.py,sha256=UPSMNrLJVGj1IqUPxHaoLE5NbgI200trOxCsP0RYi8s,4767
68
62
  pycityagent/environment/sim/lane_service.py,sha256=bmf0zOWkxDzMEDlhTdHNRJRiTFGgzjbeqmex387gHZs,3964
69
63
  pycityagent/environment/sim/client.py,sha256=x4REWPRFG_C2s0-CWz8MnYalD_esfu2pPHf_vpsCG78,2852
70
64
  pycityagent/environment/sim/__init__.py,sha256=CyJc5Tey9MgzomZv0ynAcV0yaUlSE3bPbegYXar8wJc,601
@@ -73,25 +67,31 @@ pycityagent/environment/sim/light_service.py,sha256=q4pKcGrm7WU0h29I1dFIDOz2OV0B
73
67
  pycityagent/environment/sim/clock_service.py,sha256=4Hly8CToghj0x_XbDgGrIZy1YYAlDH0EUGCiCDYpk_I,1375
74
68
  pycityagent/environment/sim/road_service.py,sha256=Bb1sreO0Knt9tcqH_WJF-I3P3G92bRAlzDBEa--25GE,1297
75
69
  pycityagent/cityagent/metrics.py,sha256=yXZ4uRXARjDAvPKyquut7YWs363nDcIV0J1KQgYacZE,2169
76
- pycityagent/cityagent/memory_config.py,sha256=52QkS_4wtM-PPTM5xR10IPvG00VOlWogFTOP6BqBrYo,11899
70
+ pycityagent/cityagent/memory_config.py,sha256=_7ujYGgalnnulBvOT_HCuy9uITd5l6br5THkC53hgNE,11868
77
71
  pycityagent/cityagent/bankagent.py,sha256=uL9ATilEddhJR25qW0p8jX6I9QKGm3gDi1wmJNr6Hbg,4036
78
72
  pycityagent/cityagent/__init__.py,sha256=gcBQ-a50XegFtjigQ7xDXRBZrywBKqifiQFSRnEF8gM,572
79
73
  pycityagent/cityagent/firmagent.py,sha256=x9Yvrd9j0dSILUm__e9dBT7FBgJ0q7VFzbNUC10Vg5A,3677
80
74
  pycityagent/cityagent/nbsagent.py,sha256=2021QjPm2JFhDJ0KKNpEZwtTT8GaGyj2zf6KCKHdL3Y,4059
81
- pycityagent/cityagent/initial.py,sha256=a8ed-vvagYw8tJY-uzYm_sAja2545QRAEa58Tp4DHck,6130
82
- pycityagent/cityagent/societyagent.py,sha256=2WSXh-eElgigXfDHOh9KoDU2KCmIatwD2D57cZlh0Fs,20253
75
+ pycityagent/cityagent/initial.py,sha256=Nrmwj5nflk_wg81kRU69GGZQLNM49qhQTSRFpOUBk_Y,6071
76
+ pycityagent/cityagent/societyagent.py,sha256=dY8coUMtrTrcATCYDdI0MvVt42YXSyP-ZWi24H9xg7o,20090
83
77
  pycityagent/cityagent/message_intercept.py,sha256=dyT1G-nMxKb2prhgtyFFHFz593qBrkk5DnHsHvG1OIc,4418
84
78
  pycityagent/cityagent/governmentagent.py,sha256=XIyggG83FWUTZdOuoqc6ClCP3hhfkxNmtYRu9TFo0dU,3063
85
79
  pycityagent/cityagent/blocks/dispatcher.py,sha256=U5BPeUrjrTyDaznYfT6YUJIW8vfKVRDF4EO0oOn6Td4,2886
86
- pycityagent/cityagent/blocks/needs_block.py,sha256=LwoH-4WcAF5L8IOW2ytf51QeIghq9D9KspQ92s5k4Nk,15897
87
- pycityagent/cityagent/blocks/cognition_block.py,sha256=5QWhX2vg1VqYYzm-qBITBhVntaaetePQoa7OqvmXJug,15170
80
+ pycityagent/cityagent/blocks/needs_block.py,sha256=NYKrGDoYCuXoupMNMuSNhx4Ci1paC_EuGRWvp5-ZSA8,15909
81
+ pycityagent/cityagent/blocks/cognition_block.py,sha256=cCflH-1lAexWLamT412nXERoUln0tbaFMxdJKYmFpfs,15179
88
82
  pycityagent/cityagent/blocks/social_block.py,sha256=eedOlwRTGI47QFELYmfe2a_aj0GuHJweSyDxA6AYXcU,15493
89
83
  pycityagent/cityagent/blocks/__init__.py,sha256=h6si6WBcVVuglIskKQKA8Cxtf_VKen1sNPqOFKI311Q,420
90
- pycityagent/cityagent/blocks/economy_block.py,sha256=zQzZ_A-VrvCNuGu_SdIKr0PAnmUAvOcLBM7eWkN0n9g,19063
91
- pycityagent/cityagent/blocks/utils.py,sha256=uu4iQOYKwIT87AqbT5KT4W8p_UI_dZfuXkyxWto_EQ0,2097
84
+ pycityagent/cityagent/blocks/economy_block.py,sha256=1yHUdCSAzvvhdGFzMfSM_wtbW_3D6YeYSNlVV3yQqsA,19083
85
+ pycityagent/cityagent/blocks/utils.py,sha256=BVOTtZC8dJIc0eGGNmL0LQ_WnMfXr54q1gyrrDwRn-Y,2079
92
86
  pycityagent/cityagent/blocks/other_block.py,sha256=LdtL6248xvMvvRQx6NvdlJrWWZFu8Xusjxb9yEh1M0k,4365
93
- pycityagent/cityagent/blocks/plan_block.py,sha256=LcmG7d9oMezq9TiEerFJyUZytZRg5Zf03B7m6aV7HCI,11465
94
- pycityagent/cityagent/blocks/mobility_block.py,sha256=YmKhJW_srC6b6n_LvJujSO-eB-13G10BhDnURaVVdj8,15290
87
+ pycityagent/cityagent/blocks/plan_block.py,sha256=A5DvtXIy98MZkRGUQmp26grNI5i0BVbl3aEM_Ebd6Z4,11271
88
+ pycityagent/cityagent/blocks/mobility_block.py,sha256=qkRiV0nkGOUUoo9lGIjAFE_Hl0kiyMev12-Zm7JyV7o,15089
95
89
  pycityagent/survey/models.py,sha256=g3xni4GcA1Py3vlGt6z4ltutjgQ4G0uINYAM8vKRJAw,5225
96
90
  pycityagent/survey/__init__.py,sha256=rxwou8U9KeFSP7rMzXtmtp2fVFZxK4Trzi-psx9LPIs,153
97
91
  pycityagent/survey/manager.py,sha256=tHkdeq4lTfAHwvgf4-udsXri0z2l6E00rEbvwl7SqRs,3439
92
+ pycityagent-2.0.0a75.dist-info/RECORD,,
93
+ pycityagent-2.0.0a75.dist-info/LICENSE,sha256=n2HPXiupinpyHMnIkbCf3OTYd3KMqbmldu1e7av0CAU,1084
94
+ pycityagent-2.0.0a75.dist-info/WHEEL,sha256=md3JO_ifs5j508p3TDNMgtQVtnQblpGEt_Wo4W56l8Y,107
95
+ pycityagent-2.0.0a75.dist-info/entry_points.txt,sha256=BZcne49AAIFv-hawxGnPbblea7X3MtAtoPyDX8L4OC4,132
96
+ pycityagent-2.0.0a75.dist-info/top_level.txt,sha256=yOmeu6cSXmiUtScu53a3s0p7BGtLMaV0aff83EHCTic,43
97
+ pycityagent-2.0.0a75.dist-info/METADATA,sha256=uxmly0-t1dIjZF7m8XBXef9tOqvHmO6MmcZavJ4i7Yc,9110