pycityagent 2.0.0a21__py3-none-any.whl → 2.0.0a24__py3-none-any.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.
@@ -6,7 +6,8 @@ import asyncio
6
6
  import logging
7
7
  import time
8
8
  from abc import ABC, abstractmethod
9
- from typing import Any, Callable, Dict, Optional, Sequence, Union
9
+ from collections.abc import Callable, Sequence
10
+ from typing import Any, Optional, Union
10
11
 
11
12
  from .const import *
12
13
 
@@ -16,8 +17,8 @@ logger = logging.getLogger("pycityagent")
16
17
  class MemoryUnit:
17
18
  def __init__(
18
19
  self,
19
- content: Optional[Dict] = None,
20
- required_attributes: Optional[Dict] = None,
20
+ content: Optional[dict] = None,
21
+ required_attributes: Optional[dict] = None,
21
22
  activate_timestamp: bool = False,
22
23
  ) -> None:
23
24
  self._content = {}
@@ -52,7 +53,7 @@ class MemoryUnit:
52
53
  else:
53
54
  setattr(self, f"{SELF_DEFINE_PREFIX}{property_name}", property_value)
54
55
 
55
- async def update(self, content: Dict) -> None:
56
+ async def update(self, content: dict) -> None:
56
57
  await self._lock.acquire()
57
58
  for k, v in content.items():
58
59
  if k in self._content:
@@ -111,14 +112,14 @@ class MemoryUnit:
111
112
 
112
113
  async def dict_values(
113
114
  self,
114
- ) -> Dict[Any, Any]:
115
+ ) -> dict[Any, Any]:
115
116
  return self._content
116
117
 
117
118
 
118
119
  class MemoryBase(ABC):
119
120
 
120
121
  def __init__(self) -> None:
121
- self._memories: Dict[Any, Dict] = {}
122
+ self._memories: dict[Any, dict] = {}
122
123
  self._lock = asyncio.Lock()
123
124
 
124
125
  @abstractmethod
@@ -2,8 +2,9 @@
2
2
  Agent Profile
3
3
  """
4
4
 
5
+ from collections.abc import Callable, Sequence
5
6
  from copy import deepcopy
6
- from typing import Any, Callable, Dict, Optional, Sequence, Union, cast
7
+ from typing import Any, Optional, Union, cast
7
8
 
8
9
  from ..utils.decorators import lock_decorator
9
10
  from .const import *
@@ -14,7 +15,7 @@ from .utils import convert_msg_to_sequence
14
15
  class ProfileMemoryUnit(MemoryUnit):
15
16
  def __init__(
16
17
  self,
17
- content: Optional[Dict] = None,
18
+ content: Optional[dict] = None,
18
19
  activate_timestamp: bool = False,
19
20
  ) -> None:
20
21
  super().__init__(
@@ -28,7 +29,7 @@ class ProfileMemory(MemoryBase):
28
29
  def __init__(
29
30
  self,
30
31
  msg: Optional[
31
- Union[ProfileMemoryUnit, Sequence[ProfileMemoryUnit], Dict, Sequence[Dict]]
32
+ Union[ProfileMemoryUnit, Sequence[ProfileMemoryUnit], dict, Sequence[dict]]
32
33
  ] = None,
33
34
  activate_timestamp: bool = False,
34
35
  ) -> None:
@@ -74,7 +75,7 @@ class ProfileMemory(MemoryBase):
74
75
  @lock_decorator
75
76
  async def load(
76
77
  self,
77
- snapshots: Union[Dict, Sequence[Dict]],
78
+ snapshots: Union[dict, Sequence[dict]],
78
79
  reset_memory: bool = False,
79
80
  ) -> None:
80
81
  if reset_memory:
@@ -91,7 +92,7 @@ class ProfileMemory(MemoryBase):
91
92
  @lock_decorator
92
93
  async def export(
93
94
  self,
94
- ) -> Sequence[Dict]:
95
+ ) -> Sequence[dict]:
95
96
  _res = []
96
97
  for m in self._memories.keys():
97
98
  m = cast(ProfileMemoryUnit, m)
@@ -145,7 +146,7 @@ class ProfileMemory(MemoryBase):
145
146
  self._memories[unit] = {}
146
147
 
147
148
  @lock_decorator
148
- async def update_dict(self, to_update_dict: Dict, store_snapshot: bool = False):
149
+ async def update_dict(self, to_update_dict: dict, store_snapshot: bool = False):
149
150
  _latest_memories = self._fetch_recent_memory()
150
151
  _latest_memory: ProfileMemoryUnit = _latest_memories[-1]
151
152
  if not store_snapshot:
@@ -2,8 +2,9 @@
2
2
  Self Define Data
3
3
  """
4
4
 
5
+ from collections.abc import Callable, Sequence
5
6
  from copy import deepcopy
6
- from typing import Any, Callable, Dict, Optional, Sequence, Union, cast
7
+ from typing import Any, Optional, Union, cast
7
8
 
8
9
  from ..utils.decorators import lock_decorator
9
10
  from .const import *
@@ -14,8 +15,8 @@ from .utils import convert_msg_to_sequence
14
15
  class DynamicMemoryUnit(MemoryUnit):
15
16
  def __init__(
16
17
  self,
17
- content: Optional[Dict] = None,
18
- required_attributes: Optional[Dict] = None,
18
+ content: Optional[dict] = None,
19
+ required_attributes: Optional[dict] = None,
19
20
  activate_timestamp: bool = False,
20
21
  ) -> None:
21
22
  super().__init__(
@@ -29,7 +30,7 @@ class DynamicMemory(MemoryBase):
29
30
 
30
31
  def __init__(
31
32
  self,
32
- required_attributes: Dict[Any, Any],
33
+ required_attributes: dict[Any, Any],
33
34
  activate_timestamp: bool = False,
34
35
  ) -> None:
35
36
  super().__init__()
@@ -69,7 +70,7 @@ class DynamicMemory(MemoryBase):
69
70
  @lock_decorator
70
71
  async def load(
71
72
  self,
72
- snapshots: Union[Dict, Sequence[Dict]],
73
+ snapshots: Union[dict, Sequence[dict]],
73
74
  reset_memory: bool = False,
74
75
  ) -> None:
75
76
  if reset_memory:
@@ -86,7 +87,7 @@ class DynamicMemory(MemoryBase):
86
87
  @lock_decorator
87
88
  async def export(
88
89
  self,
89
- ) -> Sequence[Dict]:
90
+ ) -> Sequence[dict]:
90
91
  _res = []
91
92
  for m in self._memories.keys():
92
93
  m = cast(DynamicMemoryUnit, m)
@@ -143,7 +144,7 @@ class DynamicMemory(MemoryBase):
143
144
  self._memories[unit] = {}
144
145
 
145
146
  @lock_decorator
146
- async def update_dict(self, to_update_dict: Dict, store_snapshot: bool = False):
147
+ async def update_dict(self, to_update_dict: dict, store_snapshot: bool = False):
147
148
  _latest_memories = self._fetch_recent_memory()
148
149
  _latest_memory: DynamicMemoryUnit = _latest_memories[-1]
149
150
  if not store_snapshot:
@@ -2,8 +2,9 @@
2
2
  Agent State
3
3
  """
4
4
 
5
+ from collections.abc import Callable, Sequence
5
6
  from copy import deepcopy
6
- from typing import Any, Callable, Dict, Optional, Sequence, Union, cast
7
+ from typing import Any, Optional, Union, cast
7
8
 
8
9
  from ..utils.decorators import lock_decorator
9
10
  from .const import *
@@ -14,7 +15,7 @@ from .utils import convert_msg_to_sequence
14
15
  class StateMemoryUnit(MemoryUnit):
15
16
  def __init__(
16
17
  self,
17
- content: Optional[Dict] = None,
18
+ content: Optional[dict] = None,
18
19
  activate_timestamp: bool = False,
19
20
  ) -> None:
20
21
  super().__init__(
@@ -28,7 +29,7 @@ class StateMemory(MemoryBase):
28
29
  def __init__(
29
30
  self,
30
31
  msg: Optional[
31
- Union[MemoryUnit, Sequence[MemoryUnit], Dict, Sequence[Dict]]
32
+ Union[MemoryUnit, Sequence[MemoryUnit], dict, Sequence[dict]]
32
33
  ] = None,
33
34
  activate_timestamp: bool = False,
34
35
  ) -> None:
@@ -73,7 +74,7 @@ class StateMemory(MemoryBase):
73
74
  @lock_decorator
74
75
  async def load(
75
76
  self,
76
- snapshots: Union[Dict, Sequence[Dict]],
77
+ snapshots: Union[dict, Sequence[dict]],
77
78
  reset_memory: bool = False,
78
79
  ) -> None:
79
80
 
@@ -91,7 +92,7 @@ class StateMemory(MemoryBase):
91
92
  @lock_decorator
92
93
  async def export(
93
94
  self,
94
- ) -> Sequence[Dict]:
95
+ ) -> Sequence[dict]:
95
96
 
96
97
  _res = []
97
98
  for m in self._memories.keys():
@@ -151,7 +152,7 @@ class StateMemory(MemoryBase):
151
152
  self._memories[unit] = {}
152
153
 
153
154
  @lock_decorator
154
- async def update_dict(self, to_update_dict: Dict, store_snapshot: bool = False):
155
+ async def update_dict(self, to_update_dict: dict, store_snapshot: bool = False):
155
156
 
156
157
  _latest_memories = self._fetch_recent_memory()
157
158
  _latest_memory: StateMemoryUnit = _latest_memories[-1]
@@ -1,4 +1,5 @@
1
- from typing import Any, Sequence, Union
1
+ from collections.abc import Sequence
2
+ from typing import Any, Union
2
3
 
3
4
  from .memory_base import MemoryUnit
4
5
 
@@ -10,12 +10,14 @@ from uuid import UUID
10
10
 
11
11
  import fastavro
12
12
  import ray
13
+ from langchain_core.embeddings import Embeddings
13
14
 
14
15
  from ..agent import Agent, CitizenAgent, InstitutionAgent
15
16
  from ..economy.econ_client import EconomyClient
16
17
  from ..environment.simulator import Simulator
17
18
  from ..llm.llm import LLM
18
19
  from ..llm.llmconfig import LLMConfig
20
+ from ..memory import FaissQuery
19
21
  from ..message import Messager
20
22
  from ..metrics import MlflowClient
21
23
  from ..utils import (DIALOG_SCHEMA, INSTITUTION_STATUS_SCHEMA, PROFILE_SCHEMA,
@@ -37,6 +39,7 @@ class AgentGroup:
37
39
  enable_pgsql: bool,
38
40
  pgsql_writer: ray.ObjectRef,
39
41
  mlflow_run_id: str,
42
+ embedding_model: Embeddings,
40
43
  logging_level: int,
41
44
  ):
42
45
  logger.setLevel(logging_level)
@@ -46,6 +49,7 @@ class AgentGroup:
46
49
  self.exp_id = exp_id
47
50
  self.enable_avro = enable_avro
48
51
  self.enable_pgsql = enable_pgsql
52
+ self.embedding_model = embedding_model
49
53
  if enable_avro:
50
54
  self.avro_path = avro_path / f"{self._uuid}"
51
55
  self.avro_path.mkdir(parents=True, exist_ok=True)
@@ -99,6 +103,13 @@ class AgentGroup:
99
103
  else:
100
104
  self.mlflow_client = None
101
105
 
106
+ # set FaissQuery
107
+ if self.embedding_model is not None:
108
+ self.faiss_query = FaissQuery(
109
+ embeddings=self.embedding_model,
110
+ )
111
+ else:
112
+ self.faiss_query = None
102
113
  for agent in self.agents:
103
114
  agent.set_exp_id(self.exp_id) # type: ignore
104
115
  agent.set_llm_client(self.llm)
@@ -112,6 +123,12 @@ class AgentGroup:
112
123
  agent.set_avro_file(self.avro_file) # type: ignore
113
124
  if self.enable_pgsql:
114
125
  agent.set_pgsql_writer(self._pgsql_writer)
126
+ # set memory.faiss_query
127
+ if self.faiss_query is not None:
128
+ agent.memory.set_faiss_query(self.faiss_query)
129
+ # set memory.embedding model
130
+ if self.embedding_model is not None:
131
+ agent.memory.set_embedding_model(self.embedding_model)
115
132
 
116
133
  async def init_agents(self):
117
134
  logger.debug(f"-----Initializing Agents in AgentGroup {self._uuid} ...")
@@ -376,32 +393,32 @@ class AgentGroup:
376
393
  "created_at": _date_time,
377
394
  }
378
395
  _statuses_time_list.append((_status_dict, _date_time))
379
- to_update_statues: list[tuple] = []
380
- for _status_dict, _ in _statuses_time_list:
381
- BASIC_KEYS = [
382
- "id",
383
- "day",
384
- "t",
385
- "lng",
386
- "lat",
387
- "parent_id",
388
- "action",
389
- "created_at",
390
- ]
391
- _data = [_status_dict[k] for k in BASIC_KEYS if k != "created_at"]
392
- _other_dict = json.dumps(
393
- {k: v for k, v in _status_dict.items() if k not in BASIC_KEYS}
394
- )
395
- _data.append(_other_dict)
396
- _data.append(_status_dict["created_at"])
397
- to_update_statues.append(tuple(_data))
398
- if self._last_asyncio_pg_task is not None:
399
- await self._last_asyncio_pg_task
400
- self._last_asyncio_pg_task = (
401
- self._pgsql_writer.async_write_status.remote( # type:ignore
402
- to_update_statues
396
+ to_update_statues: list[tuple] = []
397
+ for _status_dict, _ in _statuses_time_list:
398
+ BASIC_KEYS = [
399
+ "id",
400
+ "day",
401
+ "t",
402
+ "lng",
403
+ "lat",
404
+ "parent_id",
405
+ "action",
406
+ "created_at",
407
+ ]
408
+ _data = [_status_dict[k] for k in BASIC_KEYS if k != "created_at"]
409
+ _other_dict = json.dumps(
410
+ {k: v for k, v in _status_dict.items() if k not in BASIC_KEYS}
411
+ )
412
+ _data.append(_other_dict)
413
+ _data.append(_status_dict["created_at"])
414
+ to_update_statues.append(tuple(_data))
415
+ if self._last_asyncio_pg_task is not None:
416
+ await self._last_asyncio_pg_task
417
+ self._last_asyncio_pg_task = (
418
+ self._pgsql_writer.async_write_status.remote( # type:ignore
419
+ to_update_statues
420
+ )
403
421
  )
404
- )
405
422
 
406
423
  async def step(self):
407
424
  if not self.initialized:
@@ -14,11 +14,13 @@ from typing import Any, Optional, Union
14
14
  import pycityproto.city.economy.v2.economy_pb2 as economyv2
15
15
  import ray
16
16
  import yaml
17
+ from langchain_core.embeddings import Embeddings
17
18
  from mosstool.map._map_util.const import AOI_START_ID
18
19
 
19
20
  from ..agent import Agent, InstitutionAgent
20
21
  from ..environment.simulator import Simulator
21
- from ..memory.memory import Memory
22
+ from ..llm import SimpleEmbedding
23
+ from ..memory import FaissQuery, Memory
22
24
  from ..message.messager import Messager
23
25
  from ..metrics import init_mlflow_connection
24
26
  from ..survey import Survey
@@ -76,6 +78,8 @@ class AgentSimulation:
76
78
 
77
79
  # storage
78
80
  _storage_config: dict[str, Any] = config.get("storage", {})
81
+ if _storage_config is None:
82
+ _storage_config = {}
79
83
  # avro
80
84
  _avro_config: dict[str, Any] = _storage_config.get("avro", {})
81
85
  self._enable_avro = _avro_config.get("enabled", False)
@@ -164,6 +168,7 @@ class AgentSimulation:
164
168
  enable_pgsql: bool,
165
169
  pgsql_writer: ray.ObjectRef,
166
170
  mlflow_run_id: str = None, # type: ignore
171
+ embedding_model: Embeddings = None, # type: ignore
167
172
  logging_level: int = logging.WARNING,
168
173
  ):
169
174
  """创建远程组"""
@@ -177,6 +182,7 @@ class AgentSimulation:
177
182
  enable_pgsql,
178
183
  pgsql_writer,
179
184
  mlflow_run_id,
185
+ embedding_model,
180
186
  logging_level,
181
187
  )
182
188
  return group_name, group, agents
@@ -186,6 +192,7 @@ class AgentSimulation:
186
192
  agent_count: Union[int, list[int]],
187
193
  group_size: int = 1000,
188
194
  pg_sql_writers: int = 32,
195
+ embedding_model: Embeddings = SimpleEmbedding(),
189
196
  memory_config_func: Optional[Union[Callable, list[Callable]]] = None,
190
197
  ) -> None:
191
198
  """初始化智能体
@@ -305,6 +312,7 @@ class AgentSimulation:
305
312
  self.enable_pgsql,
306
313
  _workers[i % _num_workers], # type:ignore
307
314
  mlflow_run_id, # type:ignore
315
+ embedding_model,
308
316
  self.logging_level,
309
317
  )
310
318
  creation_tasks.append((group_name, group, agents))
@@ -1,6 +1,6 @@
1
1
  import json
2
2
  import logging
3
- from typing import Any, Dict
3
+ from typing import Any
4
4
 
5
5
  from .parser_base import ParserBase
6
6
 
@@ -67,14 +67,14 @@ class JsonDictParser(JsonObjectParser):
67
67
  """Initialize the JsonDictParser with default tags."""
68
68
  super().__init__()
69
69
 
70
- def parse(self, response: str) -> Dict:
70
+ def parse(self, response: str) -> dict:
71
71
  """Parse the response string to extract and return a JSON object as a dictionary.
72
72
 
73
73
  Parameters:
74
74
  response (str): The response string containing the JSON object.
75
75
 
76
76
  Returns:
77
- Dict: The parsed JSON object as a dictionary.
77
+ dict: The parsed JSON object as a dictionary.
78
78
  """
79
79
  parsed_json = super().parse(response)
80
80
  if not isinstance(parsed_json, dict):
@@ -1,7 +1,8 @@
1
1
  import asyncio
2
2
  import functools
3
3
  import inspect
4
- from typing import Any, Callable, Coroutine, Optional, Union
4
+ from collections.abc import Awaitable, Callable, Coroutine
5
+ from typing import Any, Optional, Union
5
6
 
6
7
  from ..environment.simulator import Simulator
7
8
  from ..llm import LLM
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycityagent
3
- Version: 2.0.0a21
3
+ Version: 2.0.0a24
4
4
  Summary: LLM-based城市环境agent构建库
5
5
  License: MIT
6
6
  Author: Yuwei Yan
@@ -20,10 +20,12 @@ Requires-Dist: aiohttp (==3.10.10)
20
20
  Requires-Dist: aiomqtt (>=2.3.0,<3.0.0)
21
21
  Requires-Dist: citystreetview (==1.2.4)
22
22
  Requires-Dist: dashscope (==1.14.1)
23
+ Requires-Dist: faiss-cpu (>=1.9.0.post1,<2.0.0)
23
24
  Requires-Dist: fastavro (>=1.10.0,<2.0.0)
24
25
  Requires-Dist: geojson (==3.1.0)
25
26
  Requires-Dist: gradio (>=5.7.1,<6.0.0)
26
27
  Requires-Dist: grpcio (==1.67.1)
28
+ Requires-Dist: langchain-community (>=0.3.13,<0.4.0)
27
29
  Requires-Dist: langchain-core (>=0.3.28,<0.4.0)
28
30
  Requires-Dist: matplotlib (==3.8.3)
29
31
  Requires-Dist: mlflow (>=2.19.0,<3.0.0)
@@ -40,6 +42,8 @@ Requires-Dist: pycityproto (>=2.1.5,<3.0.0)
40
42
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
41
43
  Requires-Dist: ray (>=2.40.0,<3.0.0)
42
44
  Requires-Dist: sidecar (==0.7.0)
45
+ Requires-Dist: torch (>=2.5.1,<3.0.0)
46
+ Requires-Dist: transformers (>=4.47.1,<5.0.0)
43
47
  Requires-Dist: zhipuai (>=2.1.5.20230904,<3.0.0.0)
44
48
  Description-Content-Type: text/markdown
45
49
 
@@ -1,5 +1,5 @@
1
- pycityagent/__init__.py,sha256=EDxt3Su3lH1IMh9suNw7GeGL7UrXeWiZTw5KWNznDzc,637
2
- pycityagent/agent.py,sha256=FMplKAgcz2Exkl8EiE2RwQ0Hd5U08krRZ3CFFLoF_4g,28450
1
+ pycityagent/__init__.py,sha256=fv0mzNGbHBF6m550yYqnuUpB8iQPWS-7EatYRK7DO4s,693
2
+ pycityagent/agent.py,sha256=l8Oa95_K5JBWKzvZmbQe_QM_E_vaG-YstuuR55kgC6Y,29005
3
3
  pycityagent/economy/__init__.py,sha256=aonY4WHnx-6EGJ4WKrx4S-2jAkYNLtqUA04jp6q8B7w,75
4
4
  pycityagent/economy/econ_client.py,sha256=GuHK9ZBnhqW3Z7F8ViDJn_iN73yOBbbwFyJv1wLEBDk,12211
5
5
  pycityagent/environment/__init__.py,sha256=awHxlOud-btWbk0FCS4RmGJ13W84oVCkbGfcrhKqihA,240
@@ -11,16 +11,16 @@ pycityagent/environment/sence/static.py,sha256=9s7jz8HitstTrk-GqpnVB26oPrjuTyNeL
11
11
  pycityagent/environment/sidecar/__init__.py,sha256=RFbOf40aYBP4WwRpFkua5tlRE_OtMcMNyp1Lew_aaAU,235
12
12
  pycityagent/environment/sidecar/sidecarv2.py,sha256=beKlYZgt38EQbV1x6NWQo7xVXyB-5QHfbwJexyXu7Tg,3252
13
13
  pycityagent/environment/sim/__init__.py,sha256=JVG6sSD2Hbohl1TtKjuQi7_M7tKMrFh9vl3QV3VA5O0,724
14
- pycityagent/environment/sim/aoi_service.py,sha256=yM50xhYPLLExwjl5MDlnAuohqJpK0KbIvr_cWLZJEAk,1203
14
+ pycityagent/environment/sim/aoi_service.py,sha256=2UjvUTF4CW4E_L30IRcdwv6t_q1ZdXN3TTLOKSOaaXE,1230
15
15
  pycityagent/environment/sim/client.py,sha256=MHR7Hhu-Cr7B61d3K_QDpSJh4HrUU9JQf6Cu7_8pdsE,3493
16
- pycityagent/environment/sim/clock_service.py,sha256=YG_A_IA7iJp9rOQE3bCPgppzuzzUwWMCzlxSUdOy088,1326
17
- pycityagent/environment/sim/economy_services.py,sha256=ZggCyAK4Tv5SS881lUBe0WyymKq-0PtdWpe8p_pTDiI,7085
18
- pycityagent/environment/sim/lane_service.py,sha256=6ljWiX_GbZd-a-fEcktDZncxBkraLA2LDE_pVV99uLs,3896
19
- pycityagent/environment/sim/light_service.py,sha256=ezYGcV_PkZ6I-yv48LNEjsytwwwQx-1Qp2QCWXWIhdQ,4215
20
- pycityagent/environment/sim/person_service.py,sha256=nIvOsoBoqOTDYtsiThg07-4ZBgkTUDEbb3dHyOjzyb8,10652
21
- pycityagent/environment/sim/road_service.py,sha256=phKTwTyhc_6Ht2mddEXpdENfl-lRXIVY0CHAlw1yHjI,1264
16
+ pycityagent/environment/sim/clock_service.py,sha256=fgYXacf_-ixhVAn5uKUvqvemBS6A0oQK8JOZukkhXyY,1353
17
+ pycityagent/environment/sim/economy_services.py,sha256=xoc-1_H8JmQwJ24oWRS1fD-hGYtz2I-x6BOkQ4yENzU,7106
18
+ pycityagent/environment/sim/lane_service.py,sha256=N2dUe-3XuqqKLsNXt1k4NN8uV-J_ruo08yhaUd_hwOI,3916
19
+ pycityagent/environment/sim/light_service.py,sha256=KVwt7ii_iLGA7gANZe3n6-4RiiPQt1w9H6ZOoizMI04,4242
20
+ pycityagent/environment/sim/person_service.py,sha256=5r1F2Itn7dKJ2U4hSLovrk5p4qy-2n77MTAv_OlTIwA,10673
21
+ pycityagent/environment/sim/road_service.py,sha256=bKyn3_me0sGmaJVyF6eNeFbdU-9C1yWsa9L7pieDJzg,1285
22
22
  pycityagent/environment/sim/sim_env.py,sha256=HI1LcS_FotDKQ6vBnx0e49prXSABOfA20aU9KM-ZkCY,4625
23
- pycityagent/environment/sim/social_service.py,sha256=6Iqvq6dz8H2jhLLdtaITc6Js9QnQw-Ylsd5AZgUj3-E,1993
23
+ pycityagent/environment/sim/social_service.py,sha256=9EFJAwVdUuUQkNkFRn9qZRDfD1brh2fqkvasnXUEBhQ,2014
24
24
  pycityagent/environment/simulator.py,sha256=XjcxbyBIbB3Ht9z087z_oWIPAN6pP5Eq1lyf4W5atb8,12502
25
25
  pycityagent/environment/utils/__init__.py,sha256=1m4Q1EfGvNpUsa1bgQzzCyWhfkpElnskNImjjFD3Znc,237
26
26
  pycityagent/environment/utils/base64.py,sha256=hoREzQo3FXMN79pqQLO2jgsDEvudciomyKii7MWljAM,374
@@ -29,28 +29,29 @@ pycityagent/environment/utils/geojson.py,sha256=LVHAdEhnZM8d0BoUnuPiIL_gaeXBIIgl
29
29
  pycityagent/environment/utils/grpc.py,sha256=6EJwKXXktIWb1NcUiJzIRmfrY0S03QAXXGcCDHqAT00,1998
30
30
  pycityagent/environment/utils/map_utils.py,sha256=lYOEoCFFK6-e9N5txLMMq4HUlxMqc8Uw1YrGW5oJmgg,5749
31
31
  pycityagent/environment/utils/port.py,sha256=3OM6kSUt3PxvDUOlgyiendBtETaWU8Mzk_8H0TzTmYg,295
32
- pycityagent/environment/utils/protobuf.py,sha256=0jBvK_s96y_n7tuMbG22TOtQmg71SGV4ONDy2IGsU9o,1148
33
- pycityagent/llm/__init__.py,sha256=7klKEmCcDWJIu-F4DoAukSuKfDbLhdczrSIhpwow-sY,145
34
- pycityagent/llm/embedding.py,sha256=2psX_EK67oPlYe77g43EYUYams4M9AiJqxpHTFHG0n8,4253
32
+ pycityagent/environment/utils/protobuf.py,sha256=0BsM_G7x2B_6DMIBHe9bjVuQDOXUytNRQ03g9e05F3c,1170
33
+ pycityagent/llm/__init__.py,sha256=iWs6FLgrbRVIiqOf4ILS89gkVCTvS7HFC3vG-MWuyko,205
34
+ pycityagent/llm/embeddings.py,sha256=Nhf_tUIlaYJAZ93wW2QTCtS1wq7e8fUgdn2JketEAuQ,7600
35
35
  pycityagent/llm/llm.py,sha256=vJaaGqVuyV-GlBxrnvGKZnMDlxeTT_sGUTdxz5tYwEE,15141
36
36
  pycityagent/llm/llmconfig.py,sha256=4Ylf4OFSBEFy8jrOneeX0HvPhWEaF5jGvy1HkXK08Ro,436
37
37
  pycityagent/llm/utils.py,sha256=hoNPhvomb1u6lhFX0GctFipw74hVKb7bvUBDqwBzBYw,160
38
- pycityagent/memory/__init__.py,sha256=Hs2NhYpIG-lvpwPWwj4DydB1sxtjz7cuA4iDAzCXnjI,243
38
+ pycityagent/memory/__init__.py,sha256=_Vfdo1HcLWsuuz34_i8e91nnLVYADpMlHHSVaB3xgIk,297
39
39
  pycityagent/memory/const.py,sha256=6zpJPJXWoH9-yf4RARYYff586agCoud9BRn7sPERB1g,932
40
- pycityagent/memory/memory.py,sha256=vJxHOI74aJDGZPFu2LbBr02ASfOYpig66fto6Gjr-6Q,18191
41
- pycityagent/memory/memory_base.py,sha256=euKZRCs4dbcKxjlZzpLCTnH066DAtRjj5g1JFKD40qQ,5633
42
- pycityagent/memory/profile.py,sha256=s4LnxSPGSjIGZXHXkkd8mMa6uYYZrytgyQdWjcaqGf4,5182
43
- pycityagent/memory/self_define.py,sha256=poPiexNhOLq_iTgK8s4mK_xoL_DAAcB8kMvInj7iE5E,5179
44
- pycityagent/memory/state.py,sha256=5W0c1yJ-aaPpE74B2LEcw3Ygpm77tyooHv8NylyrozE,5113
45
- pycityagent/memory/utils.py,sha256=wLNlNlZ-AY9VB8kbUIy0UQSYh26FOQABbhmKQkit5o8,850
40
+ pycityagent/memory/faiss_query.py,sha256=Z0JS4udyPYCIzHMq464QtHscnswu35gh9fQptikAwkQ,12976
41
+ pycityagent/memory/memory.py,sha256=UBh4yANNHDzYZwrsvyX4ZMSHXINbu1U6g0HLNCOOCk8,17883
42
+ pycityagent/memory/memory_base.py,sha256=QG_j3BxZvkadFEeE3uBR_kjl_xcXD1aHUVs8GEF3d6w,5654
43
+ pycityagent/memory/profile.py,sha256=q8ZS9IBmHCg_X1GONUvXK85P6tCepTKQgXKuvuXYNXw,5203
44
+ pycityagent/memory/self_define.py,sha256=vpZ6CIxR2grNXEIOScdpsSc59FBg0mOKelwQuTElbtQ,5200
45
+ pycityagent/memory/state.py,sha256=TYItiyDtehMEQaSBN7PpNrnNxdDM5jGppr9R9Ufv3kA,5134
46
+ pycityagent/memory/utils.py,sha256=oJWLdPeJy_jcdKcDTo9JAH9kDZhqjoQhhv_zT9qWC0w,877
46
47
  pycityagent/message/__init__.py,sha256=TCjazxqb5DVwbTu1fF0sNvaH_EPXVuj2XQ0p6W-QCLU,55
47
48
  pycityagent/message/messager.py,sha256=W_OVlNGcreHSBf6v-DrEnfNCXExB78ySr0w26MSncfU,2541
48
49
  pycityagent/metrics/__init__.py,sha256=X08PaBbGVAd7_PRGLREXWxaqm7nS82WBQpD1zvQzcqc,128
49
50
  pycityagent/metrics/mlflow_client.py,sha256=g_tHxWkWTDijtbGL74-HmiYzWVKb1y8-w12QrY9jL30,4449
50
51
  pycityagent/metrics/utils/const.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
51
52
  pycityagent/simulation/__init__.py,sha256=P5czbcg2d8S0nbbnsQXFIhwzO4CennAhZM8OmKvAeYw,194
52
- pycityagent/simulation/agentgroup.py,sha256=5p68wNoEaog4nDym3xsCTporBWmxNiQ1crN3mbOHFsE,19788
53
- pycityagent/simulation/simulation.py,sha256=7Go_RkpkC_DuBWW21JPqlV2yXY754RqSkqzM0vTdteU,23008
53
+ pycityagent/simulation/agentgroup.py,sha256=r8arCAQkKMhv3yr35XsYJL-MfG6o6rWwHItBmxfDtA4,20589
54
+ pycityagent/simulation/simulation.py,sha256=9kkdgXSEOAN8wiewVFyORksti4IdVNU0opObV6ZYa9k,23344
54
55
  pycityagent/simulation/storage/pg.py,sha256=Ws04mUgRcbbvWi_eQm3PXYa6w7AQUbDPWhSU7HFtsD8,6026
55
56
  pycityagent/survey/__init__.py,sha256=rxwou8U9KeFSP7rMzXtmtp2fVFZxK4Trzi-psx9LPIs,153
56
57
  pycityagent/survey/manager.py,sha256=S5IkwTdelsdtZETChRcfCEczzwSrry_Fly9MY4s3rbk,1681
@@ -60,15 +61,15 @@ pycityagent/utils/avro_schema.py,sha256=DHM3bOo8m0dJf8oSwyOWzVeXrH6OERmzA_a5vS4S
60
61
  pycityagent/utils/decorators.py,sha256=Gk3r41hfk6awui40tbwpq3C7wC7jHaRmLRlcJFlLQCE,3160
61
62
  pycityagent/utils/parsers/__init__.py,sha256=AN2xgiPxszWK4rpX7zrqRsqNwfGF3WnCA5-PFTvbaKk,281
62
63
  pycityagent/utils/parsers/code_block_parser.py,sha256=Cs2Z_hm9VfNCpPPll1TwteaJF-HAQPs-3RApsOekFm4,1173
63
- pycityagent/utils/parsers/json_parser.py,sha256=FZ3XN1g8z4Dr2TFraUOoah1oQcze4fPd2m01hHoX0Mo,2917
64
+ pycityagent/utils/parsers/json_parser.py,sha256=tjwyPluYfkWgsvLi0hzfJwFhO3L6yQfZMKza20HaGrY,2911
64
65
  pycityagent/utils/parsers/parser_base.py,sha256=KBKO4zLZPNdGjPAGqIus8LseZ8W3Tlt2y0QxqeCd25Q,1713
65
66
  pycityagent/utils/pg_query.py,sha256=h5158xcrxjUTR0nKwAaG1neFfTHPbN5guLmaXpC8yvs,1918
66
67
  pycityagent/utils/survey_util.py,sha256=Be9nptmu2JtesFNemPgORh_2GsN7rcDYGQS9Zfvc5OI,2169
67
68
  pycityagent/workflow/__init__.py,sha256=QNkUV-9mACMrR8c0cSKna2gC1mMZdxXbxWzjE-Uods0,621
68
- pycityagent/workflow/block.py,sha256=WkE2On97DCZS_9n8aIgT8wxv9Oaff4Fdf2tLqbKfMtE,6010
69
+ pycityagent/workflow/block.py,sha256=l-z9iJo9_USZQRyj4TLMfihK0-tnNDG0a6jVk9WhG0o,6048
69
70
  pycityagent/workflow/prompt.py,sha256=6jI0Rq54JLv3-IXqZLYug62vse10wTI83xvf4ZX42nk,2929
70
71
  pycityagent/workflow/tool.py,sha256=xADxhNgVsjNiMxlhdwn3xGUstFOkLEG8P67ez8VmwSI,8555
71
72
  pycityagent/workflow/trigger.py,sha256=Df-MOBEDWBbM-v0dFLQLXteLsipymT4n8vqexmK2GiQ,5643
72
- pycityagent-2.0.0a21.dist-info/METADATA,sha256=sowWsIPV6PFjNPeQI30Pn0J1Fqz5KfZ7sMydvfaOAX0,7848
73
- pycityagent-2.0.0a21.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
74
- pycityagent-2.0.0a21.dist-info/RECORD,,
73
+ pycityagent-2.0.0a24.dist-info/METADATA,sha256=cHowSJH9VJmum92fAEfRvQYtWmbCJRnVgOmI2JZDlqw,8033
74
+ pycityagent-2.0.0a24.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
75
+ pycityagent-2.0.0a24.dist-info/RECORD,,