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.
- pycityagent/__init__.py +2 -1
- pycityagent/agent.py +18 -4
- pycityagent/environment/sim/aoi_service.py +2 -1
- pycityagent/environment/sim/clock_service.py +2 -1
- pycityagent/environment/sim/economy_services.py +9 -8
- pycityagent/environment/sim/lane_service.py +6 -5
- pycityagent/environment/sim/light_service.py +10 -8
- pycityagent/environment/sim/person_service.py +12 -11
- pycityagent/environment/sim/road_service.py +3 -2
- pycityagent/environment/sim/social_service.py +4 -3
- pycityagent/environment/utils/protobuf.py +6 -4
- pycityagent/llm/__init__.py +7 -2
- pycityagent/llm/embeddings.py +231 -0
- pycityagent/memory/__init__.py +2 -0
- pycityagent/memory/faiss_query.py +302 -0
- pycityagent/memory/memory.py +131 -137
- pycityagent/memory/memory_base.py +7 -6
- pycityagent/memory/profile.py +7 -6
- pycityagent/memory/self_define.py +8 -7
- pycityagent/memory/state.py +7 -6
- pycityagent/memory/utils.py +2 -1
- pycityagent/simulation/agentgroup.py +42 -25
- pycityagent/simulation/simulation.py +9 -1
- pycityagent/utils/parsers/json_parser.py +3 -3
- pycityagent/workflow/block.py +2 -1
- {pycityagent-2.0.0a21.dist-info → pycityagent-2.0.0a24.dist-info}/METADATA +5 -1
- {pycityagent-2.0.0a21.dist-info → pycityagent-2.0.0a24.dist-info}/RECORD +28 -27
- pycityagent/llm/embedding.py +0 -136
- {pycityagent-2.0.0a21.dist-info → pycityagent-2.0.0a24.dist-info}/WHEEL +0 -0
@@ -6,7 +6,8 @@ import asyncio
|
|
6
6
|
import logging
|
7
7
|
import time
|
8
8
|
from abc import ABC, abstractmethod
|
9
|
-
from
|
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[
|
20
|
-
required_attributes: Optional[
|
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:
|
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
|
-
) ->
|
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:
|
122
|
+
self._memories: dict[Any, dict] = {}
|
122
123
|
self._lock = asyncio.Lock()
|
123
124
|
|
124
125
|
@abstractmethod
|
pycityagent/memory/profile.py
CHANGED
@@ -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,
|
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[
|
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],
|
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[
|
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[
|
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:
|
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,
|
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[
|
18
|
-
required_attributes: Optional[
|
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:
|
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[
|
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[
|
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:
|
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:
|
pycityagent/memory/state.py
CHANGED
@@ -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,
|
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[
|
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],
|
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[
|
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[
|
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:
|
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]
|
pycityagent/memory/utils.py
CHANGED
@@ -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
|
-
|
380
|
-
|
381
|
-
|
382
|
-
|
383
|
-
|
384
|
-
|
385
|
-
|
386
|
-
|
387
|
-
|
388
|
-
|
389
|
-
|
390
|
-
|
391
|
-
|
392
|
-
|
393
|
-
|
394
|
-
|
395
|
-
|
396
|
-
|
397
|
-
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
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 ..
|
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
|
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) ->
|
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
|
-
|
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):
|
pycityagent/workflow/block.py
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
import asyncio
|
2
2
|
import functools
|
3
3
|
import inspect
|
4
|
-
from
|
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.
|
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=
|
2
|
-
pycityagent/agent.py,sha256=
|
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=
|
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=
|
17
|
-
pycityagent/environment/sim/economy_services.py,sha256=
|
18
|
-
pycityagent/environment/sim/lane_service.py,sha256=
|
19
|
-
pycityagent/environment/sim/light_service.py,sha256=
|
20
|
-
pycityagent/environment/sim/person_service.py,sha256=
|
21
|
-
pycityagent/environment/sim/road_service.py,sha256=
|
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=
|
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=
|
33
|
-
pycityagent/llm/__init__.py,sha256=
|
34
|
-
pycityagent/llm/
|
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=
|
38
|
+
pycityagent/memory/__init__.py,sha256=_Vfdo1HcLWsuuz34_i8e91nnLVYADpMlHHSVaB3xgIk,297
|
39
39
|
pycityagent/memory/const.py,sha256=6zpJPJXWoH9-yf4RARYYff586agCoud9BRn7sPERB1g,932
|
40
|
-
pycityagent/memory/
|
41
|
-
pycityagent/memory/
|
42
|
-
pycityagent/memory/
|
43
|
-
pycityagent/memory/
|
44
|
-
pycityagent/memory/
|
45
|
-
pycityagent/memory/
|
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=
|
53
|
-
pycityagent/simulation/simulation.py,sha256=
|
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=
|
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=
|
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.
|
73
|
-
pycityagent-2.0.
|
74
|
-
pycityagent-2.0.
|
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,,
|