pycityagent 2.0.0a35__tar.gz → 2.0.0a36__tar.gz

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.
Files changed (75) hide show
  1. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/PKG-INFO +3 -3
  2. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/simulator.py +21 -41
  3. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pyproject.toml +3 -3
  4. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/README.md +0 -0
  5. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/__init__.py +0 -0
  6. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/agent.py +0 -0
  7. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/economy/__init__.py +0 -0
  8. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/economy/econ_client.py +0 -0
  9. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/__init__.py +0 -0
  10. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/interact/__init__.py +0 -0
  11. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/interact/interact.py +0 -0
  12. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/message/__init__.py +0 -0
  13. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sence/__init__.py +0 -0
  14. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sence/static.py +0 -0
  15. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sidecar/__init__.py +0 -0
  16. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sidecar/sidecarv2.py +0 -0
  17. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/__init__.py +0 -0
  18. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/aoi_service.py +0 -0
  19. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/client.py +0 -0
  20. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/clock_service.py +0 -0
  21. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/economy_services.py +0 -0
  22. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/lane_service.py +0 -0
  23. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/light_service.py +0 -0
  24. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/person_service.py +0 -0
  25. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/road_service.py +0 -0
  26. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/sim_env.py +0 -0
  27. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/sim/social_service.py +0 -0
  28. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/__init__.py +0 -0
  29. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/base64.py +0 -0
  30. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/const.py +0 -0
  31. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/geojson.py +0 -0
  32. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/grpc.py +0 -0
  33. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/map_utils.py +0 -0
  34. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/port.py +0 -0
  35. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/environment/utils/protobuf.py +0 -0
  36. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/llm/__init__.py +0 -0
  37. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/llm/embeddings.py +0 -0
  38. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/llm/llm.py +0 -0
  39. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/llm/llmconfig.py +0 -0
  40. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/llm/utils.py +0 -0
  41. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/__init__.py +0 -0
  42. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/const.py +0 -0
  43. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/faiss_query.py +0 -0
  44. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/memory.py +0 -0
  45. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/memory_base.py +0 -0
  46. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/profile.py +0 -0
  47. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/self_define.py +0 -0
  48. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/state.py +0 -0
  49. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/memory/utils.py +0 -0
  50. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/message/__init__.py +0 -0
  51. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/message/messager.py +0 -0
  52. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/metrics/__init__.py +0 -0
  53. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/metrics/mlflow_client.py +0 -0
  54. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/metrics/utils/const.py +0 -0
  55. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/simulation/__init__.py +0 -0
  56. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/simulation/agentgroup.py +0 -0
  57. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/simulation/simulation.py +0 -0
  58. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/simulation/storage/pg.py +0 -0
  59. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/survey/__init__.py +0 -0
  60. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/survey/manager.py +0 -0
  61. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/survey/models.py +0 -0
  62. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/__init__.py +0 -0
  63. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/avro_schema.py +0 -0
  64. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/decorators.py +0 -0
  65. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/parsers/__init__.py +0 -0
  66. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/parsers/code_block_parser.py +0 -0
  67. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/parsers/json_parser.py +0 -0
  68. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/parsers/parser_base.py +0 -0
  69. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/pg_query.py +0 -0
  70. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/utils/survey_util.py +0 -0
  71. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/workflow/__init__.py +0 -0
  72. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/workflow/block.py +0 -0
  73. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/workflow/prompt.py +0 -0
  74. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/workflow/tool.py +0 -0
  75. {pycityagent-2.0.0a35 → pycityagent-2.0.0a36}/pycityagent/workflow/trigger.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycityagent
3
- Version: 2.0.0a35
3
+ Version: 2.0.0a36
4
4
  Summary: LLM-based城市环境agent构建库
5
5
  License: MIT
6
6
  Author: Yuwei Yan
@@ -29,7 +29,7 @@ Requires-Dist: langchain-community (>=0.3.13,<0.4.0)
29
29
  Requires-Dist: langchain-core (>=0.3.28,<0.4.0)
30
30
  Requires-Dist: matplotlib (==3.8.3)
31
31
  Requires-Dist: mlflow (>=2.19.0,<3.0.0)
32
- Requires-Dist: mosstool (==1.0.24)
32
+ Requires-Dist: mosstool (>=1.3.0,<2.0.0)
33
33
  Requires-Dist: networkx (==3.2.1)
34
34
  Requires-Dist: numpy (>=1.20.0,<2.0.0)
35
35
  Requires-Dist: openai (>=1.58.1,<2.0.0)
@@ -37,7 +37,7 @@ Requires-Dist: pandavro (>=1.8.0,<2.0.0)
37
37
  Requires-Dist: poetry (>=1.2.2)
38
38
  Requires-Dist: protobuf (<=4.24.0)
39
39
  Requires-Dist: psycopg[binary] (>=3.2.3,<4.0.0)
40
- Requires-Dist: pycitydata (==1.0.0)
40
+ Requires-Dist: pycitydata (>=1.0.3,<2.0.0)
41
41
  Requires-Dist: pycityproto (>=2.1.5,<3.0.0)
42
42
  Requires-Dist: pyyaml (>=6.0.2,<7.0.0)
43
43
  Requires-Dist: ray (>=2.40.0,<3.0.0)
@@ -14,7 +14,6 @@ from pycityproto.city.person.v2 import person_pb2 as person_pb2
14
14
  from pycityproto.city.person.v2 import person_service_pb2 as person_service
15
15
  from pymongo import MongoClient
16
16
  from shapely.geometry import Point
17
- from shapely.strtree import STRtree
18
17
 
19
18
  from .sim import CityClient, ControlSimEnv
20
19
  from .utils.const import *
@@ -87,12 +86,6 @@ class Simulator:
87
86
  - Simulator map object
88
87
  """
89
88
 
90
- self.pois_matrix: dict[str, list[list[list]]] = {}
91
- """
92
- pois的基于区块的划分——方便快速粗略地查询poi
93
- 通过Simulator.set_pois_matrix()初始化
94
- """
95
-
96
89
  self.time: int = 0
97
90
  """
98
91
  - 模拟城市当前时间
@@ -102,12 +95,11 @@ class Simulator:
102
95
  self.map_x_gap = None
103
96
  self.map_y_gap = None
104
97
  self._bbox: tuple[float, float, float, float] = (-1, -1, -1, -1)
105
- self.poi_matrix_centers = []
106
98
  self._lock = asyncio.Lock()
107
99
  # poi id dict
108
- self.poi_id_2_aoi_id: dict[int, int] = {}
109
- # poi STRtree
110
- self.set_poi_tree()
100
+ self.poi_id_2_aoi_id: dict[int, int] = {
101
+ poi["id"]: poi["aoi_id"] for _, poi in self.map.pois.items()
102
+ }
111
103
 
112
104
  # * Agent相关
113
105
  def find_agents_by_area(self, req: dict, status=None):
@@ -137,35 +129,21 @@ class Simulator:
137
129
  resp.motions = motions # type: ignore
138
130
  return resp
139
131
 
140
- def set_poi_tree(
141
- self,
142
- ):
143
- """
144
- 初始化pois_tree
145
- """
146
- poi_geos = []
147
- tree_id_2_poi_and_catg: dict[int, tuple[dict, str]] = {}
148
- for tree_id, poi in enumerate(self.map.pois.values()):
149
- tree_id_2_poi_and_catg[tree_id] = (poi, poi["category"])
150
- poi_geos.append(Point([poi["position"][k] for k in ["x", "y"]]))
151
- self.poi_id_2_aoi_id[poi["id"]] = poi["aoi_id"]
152
- self.tree_id_2_poi_and_catg = tree_id_2_poi_and_catg
153
- self.pois_tree = STRtree(poi_geos)
154
-
155
132
  def get_poi_categories(
156
133
  self,
157
134
  center: Optional[Union[tuple[float, float], Point]] = None,
158
135
  radius: Optional[float] = None,
159
136
  ) -> list[str]:
160
- if center is not None and radius is not None:
161
- if not isinstance(center, Point):
162
- center = Point(center)
163
- indices = self.pois_tree.query(center.buffer(radius))
164
- else:
165
- indices = list(self.tree_id_2_poi_and_catg.keys())
166
- categories = []
167
- for index in indices:
168
- _, catg = self.tree_id_2_poi_and_catg[index]
137
+ categories: list[str] = []
138
+ if center is None:
139
+ center = (0, 0)
140
+ _pois: list[dict] = self.map.query_pois( # type:ignore
141
+ center=center,
142
+ radius=radius,
143
+ return_distance=False,
144
+ )
145
+ for poi in _pois:
146
+ catg = poi["category"]
169
147
  categories.append(catg.split("|")[-1])
170
148
  return list(set(categories))
171
149
 
@@ -327,7 +305,7 @@ class Simulator:
327
305
  center: Union[tuple[float, float], Point],
328
306
  radius: float,
329
307
  poi_type: Union[str, list[str]],
330
- ):
308
+ ) -> list[dict]:
331
309
  if isinstance(poi_type, str):
332
310
  poi_type = [poi_type]
333
311
  transformed_poi_type = []
@@ -337,14 +315,16 @@ class Simulator:
337
315
  else:
338
316
  transformed_poi_type += self.poi_cate[t]
339
317
  poi_type_set = set(transformed_poi_type)
340
- if not isinstance(center, Point):
341
- center = Point(center)
342
318
  # 获取半径内的poi
343
- indices = self.pois_tree.query(center.buffer(radius))
319
+ _pois: list[dict] = self.map.query_pois( # type:ignore
320
+ center=center,
321
+ radius=radius,
322
+ return_distance=False,
323
+ )
344
324
  # 过滤掉不满足类别前缀的poi
345
325
  pois = []
346
- for index in indices:
347
- poi, catg = self.tree_id_2_poi_and_catg[index]
326
+ for poi in _pois:
327
+ catg = poi["category"]
348
328
  if catg.split("|")[-1] not in poi_type_set:
349
329
  continue
350
330
  pois.append(poi)
@@ -3,7 +3,7 @@ in-project = true
3
3
 
4
4
  [tool.poetry]
5
5
  name = "pycityagent"
6
- version = "2.0.0a35"
6
+ version = "2.0.0a36"
7
7
  description = "LLM-based城市环境agent构建库"
8
8
  authors = ["Yuwei Yan <pinkgranite86@gmail.com>","Junbo Yan <yanjb20thu@gmali.com>"]
9
9
  license = "MIT"
@@ -31,7 +31,7 @@ numpy = "^1.20.0"
31
31
  openai = "^1.58.1"
32
32
  Pillow = "11.0.0"
33
33
  protobuf = "<=4.24.0,<5.0.0"
34
- pycitydata = "1.0.0"
34
+ pycitydata = "^1.0.3"
35
35
  pycityproto = "^2.1.5"
36
36
  Requests = "2.32.3"
37
37
  Shapely = "2.0.6"
@@ -39,7 +39,7 @@ sidecar = "0.7.0"
39
39
  pyyaml = "^6.0.2"
40
40
  zhipuai = "^2.1.5.20230904"
41
41
  gradio = "^5.7.1"
42
- mosstool = "1.0.24"
42
+ mosstool = "^1.3.0"
43
43
  ray = "^2.40.0"
44
44
  aiomqtt = "^2.3.0"
45
45
  fastavro = "^1.10.0"
File without changes