pycityagent 2.0.0a5__py3-none-any.whl → 2.0.0a7__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.
Files changed (38) hide show
  1. pycityagent/agent.py +14 -5
  2. pycityagent/environment/interact/interact.py +86 -29
  3. pycityagent/environment/sence/static.py +3 -2
  4. pycityagent/environment/sim/aoi_service.py +1 -1
  5. pycityagent/environment/sim/economy_services.py +1 -1
  6. pycityagent/environment/sim/road_service.py +1 -1
  7. pycityagent/environment/sim/social_service.py +1 -1
  8. pycityagent/environment/simulator.py +6 -4
  9. pycityagent/environment/utils/__init__.py +5 -1
  10. pycityagent/llm/__init__.py +1 -1
  11. pycityagent/llm/embedding.py +36 -35
  12. pycityagent/llm/llm.py +197 -161
  13. pycityagent/llm/llmconfig.py +7 -9
  14. pycityagent/llm/utils.py +2 -2
  15. pycityagent/memory/memory.py +1 -2
  16. pycityagent/memory/memory_base.py +1 -2
  17. pycityagent/memory/profile.py +1 -2
  18. pycityagent/memory/self_define.py +1 -2
  19. pycityagent/memory/state.py +1 -2
  20. pycityagent/message/__init__.py +1 -1
  21. pycityagent/message/messager.py +11 -4
  22. pycityagent/simulation/__init__.py +1 -1
  23. pycityagent/simulation/agentgroup.py +19 -11
  24. pycityagent/simulation/interview.py +9 -5
  25. pycityagent/simulation/simulation.py +89 -37
  26. pycityagent/simulation/survey/__init__.py +1 -6
  27. pycityagent/simulation/survey/manager.py +22 -21
  28. pycityagent/simulation/survey/models.py +8 -5
  29. pycityagent/utils/decorators.py +14 -4
  30. pycityagent/utils/parsers/__init__.py +2 -1
  31. pycityagent/workflow/block.py +4 -3
  32. pycityagent/workflow/prompt.py +16 -9
  33. pycityagent/workflow/tool.py +1 -2
  34. pycityagent/workflow/trigger.py +36 -23
  35. {pycityagent-2.0.0a5.dist-info → pycityagent-2.0.0a7.dist-info}/METADATA +1 -1
  36. pycityagent-2.0.0a7.dist-info/RECORD +70 -0
  37. pycityagent-2.0.0a5.dist-info/RECORD +0 -70
  38. {pycityagent-2.0.0a5.dist-info → pycityagent-2.0.0a7.dist-info}/WHEEL +0 -0
@@ -87,7 +87,7 @@ def log_and_check(
87
87
  A decorator that logs function calls and optionally checks a condition before executing the function.
88
88
 
89
89
  This decorator is specifically designed to be used with the `block` method.
90
-
90
+
91
91
  Args:
92
92
  condition (Callable): A condition function that must be satisfied before the decorated function is executed.
93
93
  Can be synchronous or asynchronous.
@@ -124,15 +124,16 @@ def log_and_check(
124
124
  def trigger_class():
125
125
  def decorator(cls):
126
126
  original_forward = cls.forward
127
-
127
+
128
128
  @functools.wraps(original_forward)
129
129
  async def wrapped_forward(self, *args, **kwargs):
130
130
  if self.trigger is not None:
131
131
  await self.trigger.wait_for_trigger()
132
132
  return await original_forward(self, *args, **kwargs)
133
-
133
+
134
134
  cls.forward = wrapped_forward
135
135
  return cls
136
+
136
137
  return decorator
137
138
 
138
139
 
@@ -1,11 +1,12 @@
1
1
  from typing import Any, Callable, Dict, List, Optional, Union
2
2
  import re
3
3
 
4
+
4
5
  class FormatPrompt:
5
6
  """
6
- A class to handle the formatting of prompts based on a template,
7
+ A class to handle the formatting of prompts based on a template,
7
8
  with support for system prompts and variable extraction.
8
-
9
+
9
10
  Attributes:
10
11
  template (str): The template string containing placeholders.
11
12
  system_prompt (Optional[str]): An optional system prompt to add to the dialog.
@@ -24,7 +25,7 @@ class FormatPrompt:
24
25
  self.template = template
25
26
  self.system_prompt = system_prompt # Store the system prompt
26
27
  self.variables = self._extract_variables()
27
- self.formatted_string = '' # To store the formatted string
28
+ self.formatted_string = "" # To store the formatted string
28
29
 
29
30
  def _extract_variables(self) -> List[str]:
30
31
  """
@@ -33,7 +34,7 @@ class FormatPrompt:
33
34
  Returns:
34
35
  List[str]: A list of variable names found within the template.
35
36
  """
36
- return re.findall(r'\{(\w+)\}', self.template)
37
+ return re.findall(r"\{(\w+)\}", self.template)
37
38
 
38
39
  def format(self, **kwargs) -> str:
39
40
  """
@@ -45,7 +46,9 @@ class FormatPrompt:
45
46
  Returns:
46
47
  str: The formatted string.
47
48
  """
48
- self.formatted_string = self.template.format(**kwargs) # Store the formatted string
49
+ self.formatted_string = self.template.format(
50
+ **kwargs
51
+ ) # Store the formatted string
49
52
  return self.formatted_string
50
53
 
51
54
  def to_dialog(self) -> List[Dict[str, str]]:
@@ -57,16 +60,20 @@ class FormatPrompt:
57
60
  """
58
61
  dialog = []
59
62
  if self.system_prompt:
60
- dialog.append({'role': 'system', 'content': self.system_prompt}) # Add system prompt if it exists
61
- dialog.append({'role': 'user', 'content': self.formatted_string}) # Add user content
63
+ dialog.append(
64
+ {"role": "system", "content": self.system_prompt}
65
+ ) # Add system prompt if it exists
66
+ dialog.append(
67
+ {"role": "user", "content": self.formatted_string}
68
+ ) # Add user content
62
69
  return dialog
63
70
 
64
71
  def log(self) -> None:
65
72
  """
66
- Logs the details of the FormatPrompt, including the template,
73
+ Logs the details of the FormatPrompt, including the template,
67
74
  system prompt, extracted variables, and formatted string.
68
75
  """
69
76
  print(f"FormatPrompt: {self.template}")
70
77
  print(f"System Prompt: {self.system_prompt}") # Log the system prompt
71
78
  print(f"Variables: {self.variables}")
72
- print(f"Formatted String: {self.formatted_string}") # Log the formatted string
79
+ print(f"Formatted String: {self.formatted_string}") # Log the formatted string
@@ -4,8 +4,7 @@ from copy import deepcopy
4
4
  from typing import Any, Callable, Dict, List, Optional, Union
5
5
 
6
6
  from ..agent import Agent
7
- from ..environment import (LEVEL_ONE_PRE, POI_TYPE_DICT, AoiService,
8
- PersonService)
7
+ from ..environment import LEVEL_ONE_PRE, POI_TYPE_DICT, AoiService, PersonService
9
8
  from ..workflow import Block
10
9
 
11
10
 
@@ -5,47 +5,51 @@ from ..memory import Memory
5
5
  from ..environment import Simulator
6
6
 
7
7
  KEY_TRIGGER_COMPONENTS = [Memory, Simulator]
8
-
8
+
9
+
9
10
  class EventTrigger:
10
11
  """Base class for event triggers that wait for specific conditions to be met."""
12
+
11
13
  # 定义该trigger需要的组件类型
12
14
  required_components: List[Type] = []
13
-
15
+
14
16
  def __init__(self, block=None):
15
17
  self.block = block
16
18
  if block is not None:
17
19
  self.initialize()
18
-
20
+
19
21
  def initialize(self) -> None:
20
22
  """Initialize the trigger with necessary dependencies."""
21
23
  if not self.block:
22
24
  raise RuntimeError("Block not set for trigger")
23
-
25
+
24
26
  # 检查所需组件是否都存在
25
27
  missing_components = []
26
28
  for component_type in self.required_components:
27
29
  component_name = component_type.__name__.lower()
28
30
  if not hasattr(self.block, component_name):
29
31
  missing_components.append(component_type.__name__)
30
-
32
+
31
33
  if missing_components:
32
34
  raise RuntimeError(
33
35
  f"Block is missing required components for {self.__class__.__name__}: "
34
36
  f"{', '.join(missing_components)}"
35
37
  )
36
-
38
+
37
39
  async def wait_for_trigger(self) -> None:
38
40
  """Wait for the event trigger to be activated.
39
-
41
+
40
42
  Raises:
41
43
  NotImplementedError: Subclasses must implement this method.
42
44
  """
43
45
  raise NotImplementedError
44
-
46
+
47
+
45
48
  class MemoryChangeTrigger(EventTrigger):
46
49
  """Event trigger that activates when a specific key in memory changes."""
50
+
47
51
  required_components = [Memory]
48
-
52
+
49
53
  def __init__(self, key: str) -> None:
50
54
  """Initialize the memory change trigger.
51
55
 
@@ -74,12 +78,15 @@ class MemoryChangeTrigger(EventTrigger):
74
78
 
75
79
  class TimeTrigger(EventTrigger):
76
80
  """Event trigger that activates periodically based on time intervals."""
81
+
77
82
  required_components = [Simulator]
78
-
79
- def __init__(self,
80
- days: Optional[int] = None,
81
- hours: Optional[int] = None,
82
- minutes: Optional[int] = None) -> None:
83
+
84
+ def __init__(
85
+ self,
86
+ days: Optional[int] = None,
87
+ hours: Optional[int] = None,
88
+ minutes: Optional[int] = None,
89
+ ) -> None:
83
90
  """Initialize the time trigger with interval settings.
84
91
 
85
92
  Args:
@@ -92,12 +99,16 @@ class TimeTrigger(EventTrigger):
92
99
  """
93
100
  if all(param is None for param in (days, hours, minutes)):
94
101
  raise ValueError("At least one time interval must be specified")
95
-
102
+
96
103
  # 验证参数有效性
97
- for param_name, param_value in [('days', days), ('hours', hours), ('minutes', minutes)]:
104
+ for param_name, param_value in [
105
+ ("days", days),
106
+ ("hours", hours),
107
+ ("minutes", minutes),
108
+ ]:
98
109
  if param_value is not None and param_value < 0:
99
110
  raise ValueError(f"{param_name} cannot be negative")
100
-
111
+
101
112
  # 将所有时间间隔转换为秒
102
113
  self.interval = 0
103
114
  if days is not None:
@@ -106,7 +117,7 @@ class TimeTrigger(EventTrigger):
106
117
  self.interval += hours * 60 * 60
107
118
  if minutes is not None:
108
119
  self.interval += minutes * 60
109
-
120
+
110
121
  self.trigger_event = asyncio.Event()
111
122
  self._initialized = False
112
123
  self._monitoring_task = None
@@ -126,17 +137,19 @@ class TimeTrigger(EventTrigger):
126
137
  """持续监控时间并在达到间隔时触发事件"""
127
138
  # 第一次调用时直接触发
128
139
  self.trigger_event.set()
129
-
140
+
130
141
  while True:
131
142
  try:
132
143
  current_time = await self.simulator.get_time()
133
-
144
+
134
145
  # 如果是第一次或者已经过了指定的时间间隔
135
- if (self._last_trigger_time is None or
136
- current_time - self._last_trigger_time >= self.interval):
146
+ if (
147
+ self._last_trigger_time is None
148
+ or current_time - self._last_trigger_time >= self.interval
149
+ ):
137
150
  self._last_trigger_time = current_time
138
151
  self.trigger_event.set()
139
-
152
+
140
153
  await asyncio.sleep(5) # 避免过于频繁的检查
141
154
  except Exception as e:
142
155
  print(f"Error in time monitoring: {e}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pycityagent
3
- Version: 2.0.0a5
3
+ Version: 2.0.0a7
4
4
  Summary: LLM-based城市环境agent构建库
5
5
  License: MIT
6
6
  Author: Yuwei Yan
@@ -0,0 +1,70 @@
1
+ pycityagent/__init__.py,sha256=n56bWkAUEcvjDsb7LcJpaGjlrriSKPnR0yBhwRfEYBA,212
2
+ pycityagent/agent.py,sha256=s7FYOkOwdOU6ufp6HzGx0GNt3LZc4qMxRRv8hZxJI7k,11281
3
+ pycityagent/economy/__init__.py,sha256=aonY4WHnx-6EGJ4WKrx4S-2jAkYNLtqUA04jp6q8B7w,75
4
+ pycityagent/economy/econ_client.py,sha256=qQb_kZneEXGBRaS_y5Jdoi95I8GyjKEsDSC4s6V6R7w,10829
5
+ pycityagent/environment/__init__.py,sha256=awHxlOud-btWbk0FCS4RmGJ13W84oVCkbGfcrhKqihA,240
6
+ pycityagent/environment/interact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ pycityagent/environment/interact/interact.py,sha256=ifxPPzuHeqLHIZ_6zvfXMoBOnBsXNIP4bYp7OJ7pnEQ,6588
8
+ pycityagent/environment/message/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
+ pycityagent/environment/sence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
+ pycityagent/environment/sence/static.py,sha256=9s7jz8HitstTrk-GqpnVB26oPrjuTyNeL7hcoxjPhV4,29104
11
+ pycityagent/environment/sidecar/__init__.py,sha256=RFbOf40aYBP4WwRpFkua5tlRE_OtMcMNyp1Lew_aaAU,235
12
+ pycityagent/environment/sidecar/sidecarv2.py,sha256=beKlYZgt38EQbV1x6NWQo7xVXyB-5QHfbwJexyXu7Tg,3252
13
+ pycityagent/environment/sim/__init__.py,sha256=JVG6sSD2Hbohl1TtKjuQi7_M7tKMrFh9vl3QV3VA5O0,724
14
+ pycityagent/environment/sim/aoi_service.py,sha256=yM50xhYPLLExwjl5MDlnAuohqJpK0KbIvr_cWLZJEAk,1203
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
22
+ pycityagent/environment/sim/sim_env.py,sha256=HI1LcS_FotDKQ6vBnx0e49prXSABOfA20aU9KM-ZkCY,4625
23
+ pycityagent/environment/sim/social_service.py,sha256=6Iqvq6dz8H2jhLLdtaITc6Js9QnQw-Ylsd5AZgUj3-E,1993
24
+ pycityagent/environment/simulator.py,sha256=gxmUyvR1cwlzEGcFelNqscOhpld8zongpdzMyi0Zm0Q,11902
25
+ pycityagent/environment/utils/__init__.py,sha256=1m4Q1EfGvNpUsa1bgQzzCyWhfkpElnskNImjjFD3Znc,237
26
+ pycityagent/environment/utils/base64.py,sha256=hoREzQo3FXMN79pqQLO2jgsDEvudciomyKii7MWljAM,374
27
+ pycityagent/environment/utils/const.py,sha256=3RMNy7_bE7-23K90j9DFW_tWEzu8s7hSTgKbV-3BFl4,5327
28
+ pycityagent/environment/utils/geojson.py,sha256=Ieg8Bzw63kKhJlhDIOVDoh-wQO4Sbtoe47FtIOy5wWg,686
29
+ pycityagent/environment/utils/grpc.py,sha256=6EJwKXXktIWb1NcUiJzIRmfrY0S03QAXXGcCDHqAT00,1998
30
+ pycityagent/environment/utils/map_utils.py,sha256=oqrRgQICC3SYw6gwjjPe_MAif7_t6dlrQpY8E32Fexs,5777
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=Y0xhm_Ny6cawqzlendXb-mAS2QAuuEez1UtTR5-Kb2Q,4293
35
+ pycityagent/llm/llm.py,sha256=wZGPUgLMmSRurQVXv-kg0T8OcYpoHhbjKxy3vQu2vhg,19682
36
+ pycityagent/llm/llmconfig.py,sha256=4Ylf4OFSBEFy8jrOneeX0HvPhWEaF5jGvy1HkXK08Ro,436
37
+ pycityagent/llm/utils.py,sha256=hoNPhvomb1u6lhFX0GctFipw74hVKb7bvUBDqwBzBYw,160
38
+ pycityagent/memory/__init__.py,sha256=Hs2NhYpIG-lvpwPWwj4DydB1sxtjz7cuA4iDAzCXnjI,243
39
+ pycityagent/memory/const.py,sha256=m9AidLs7Zu28StpvYetclqx-1qQcy3bYvwagcXB3a04,913
40
+ pycityagent/memory/memory.py,sha256=sDbaqr1Koqf_9joMtG9PmmVxJZ6Rq7nAZO6EO0OdVgo,18148
41
+ pycityagent/memory/memory_base.py,sha256=7YlPuDAOyDgdEvdyR2Uxcn_LynJoCbud5-RpYMhZVcs,5617
42
+ pycityagent/memory/profile.py,sha256=ts05cnnmhSPeEYdxPsn5lt2lqT50YSdZOS7fPNScKCg,5195
43
+ pycityagent/memory/self_define.py,sha256=P5uxGwj8UQ-z-5x_iZAPZEHa-oepVjkHRyH6UH2xMfw,5192
44
+ pycityagent/memory/state.py,sha256=D8V_jKkWOYV4CjuR8F3KyKZ-eEf7kK9_cCF11pRu6X8,5126
45
+ pycityagent/memory/utils.py,sha256=97lkenn-36wgt7uWb3Z39BXdJ5zlEQTQnQBFpoND1gg,879
46
+ pycityagent/message/__init__.py,sha256=TCjazxqb5DVwbTu1fF0sNvaH_EPXVuj2XQ0p6W-QCLU,55
47
+ pycityagent/message/messager.py,sha256=2hUIuX8Jqad2p6KM8PyfOWMFl1NjqF9B5yE-FnsYx3c,2598
48
+ pycityagent/simulation/__init__.py,sha256=jYaqaNpzM5M_e_ykISS_M-mIyYdzJXJWhgpfBpA6l5k,111
49
+ pycityagent/simulation/agentgroup.py,sha256=bVHXjiYtvqvvYOMsQPzufOFG8KZZDRUDTYjwpIjlQgE,4308
50
+ pycityagent/simulation/interview.py,sha256=S2uv8MFCB4-u_4Q202VFoPJOIleqpKK9Piju0BDSb_0,1158
51
+ pycityagent/simulation/simulation.py,sha256=5DRRG4iTWvTTa10G4_qsoUy9wa2dmpDpfPWcK2Rnfvs,13860
52
+ pycityagent/simulation/survey/__init__.py,sha256=rxwou8U9KeFSP7rMzXtmtp2fVFZxK4Trzi-psx9LPIs,153
53
+ pycityagent/simulation/survey/manager.py,sha256=Tqini-4-uBZDsChVVL4ezlgXatnrxAfvceAZZRP8E48,2062
54
+ pycityagent/simulation/survey/models.py,sha256=sY4OrrG1h9iBnjBsyDage4T3mUFPBHHZQe-ORtwSjKc,1305
55
+ pycityagent/simulation/ui/__init__.py,sha256=4aevYl09KSku2NEpFZhyFNxI1qlswbrAFwhF_YhxFTo,62
56
+ pycityagent/simulation/ui/interface.py,sha256=cSQRQhuA5Gj-X7anuN9tmRpG6-I8QYOuswjIWUeSvio,21636
57
+ pycityagent/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
+ pycityagent/utils/decorators.py,sha256=Gk3r41hfk6awui40tbwpq3C7wC7jHaRmLRlcJFlLQCE,3160
59
+ pycityagent/utils/parsers/__init__.py,sha256=AN2xgiPxszWK4rpX7zrqRsqNwfGF3WnCA5-PFTvbaKk,281
60
+ pycityagent/utils/parsers/code_block_parser.py,sha256=Cs2Z_hm9VfNCpPPll1TwteaJF-HAQPs-3RApsOekFm4,1173
61
+ pycityagent/utils/parsers/json_parser.py,sha256=FZ3XN1g8z4Dr2TFraUOoah1oQcze4fPd2m01hHoX0Mo,2917
62
+ pycityagent/utils/parsers/parser_base.py,sha256=k6DVqwAMK3jJdOP4IeLE-aFPm3V2F-St5qRBuRdx4aU,1742
63
+ pycityagent/workflow/__init__.py,sha256=EyCcjB6LyBim-5iAOPe4m2qfvghEPqu1ZdGfy4KPeZ8,551
64
+ pycityagent/workflow/block.py,sha256=6EmiRMLdOZC1wMlmLMIjfrp9TuiI7Gw4s3nnXVMbrnw,6031
65
+ pycityagent/workflow/prompt.py,sha256=tY69nDO8fgYfF_dOA-iceR8pAhkYmCqoox8uRPqEuGY,2956
66
+ pycityagent/workflow/tool.py,sha256=wD9WZ5rma6HCKugtHTwbShNE0f-Rjlwvn_1be3fCAsk,6682
67
+ pycityagent/workflow/trigger.py,sha256=t5X_i0WtL32bipZSsq_E3UUyYYudYLxQUpvxbgClp2s,5683
68
+ pycityagent-2.0.0a7.dist-info/METADATA,sha256=jl2Q3mkfZidXJQGQuTTNMXCaGD6z7CMYy4R9jk3I0vA,7614
69
+ pycityagent-2.0.0a7.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
70
+ pycityagent-2.0.0a7.dist-info/RECORD,,
@@ -1,70 +0,0 @@
1
- pycityagent/__init__.py,sha256=n56bWkAUEcvjDsb7LcJpaGjlrriSKPnR0yBhwRfEYBA,212
2
- pycityagent/agent.py,sha256=VvNTTw5MLY8XRMdOIgstBmru7v29r7q3QY7f-UjN9Bg,11086
3
- pycityagent/economy/__init__.py,sha256=aonY4WHnx-6EGJ4WKrx4S-2jAkYNLtqUA04jp6q8B7w,75
4
- pycityagent/economy/econ_client.py,sha256=qQb_kZneEXGBRaS_y5Jdoi95I8GyjKEsDSC4s6V6R7w,10829
5
- pycityagent/environment/__init__.py,sha256=awHxlOud-btWbk0FCS4RmGJ13W84oVCkbGfcrhKqihA,240
6
- pycityagent/environment/interact/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- pycityagent/environment/interact/interact.py,sha256=LNl_HlasoW5H72GiBnbQkCP51qDIp5dpk-EShA7RPWk,5946
8
- pycityagent/environment/message/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
9
- pycityagent/environment/sence/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
10
- pycityagent/environment/sence/static.py,sha256=fdBjHKacNiDCKhvQkc9WgEYYSO0peMC5lb8CcXl9iNc,29101
11
- pycityagent/environment/sidecar/__init__.py,sha256=RFbOf40aYBP4WwRpFkua5tlRE_OtMcMNyp1Lew_aaAU,235
12
- pycityagent/environment/sidecar/sidecarv2.py,sha256=beKlYZgt38EQbV1x6NWQo7xVXyB-5QHfbwJexyXu7Tg,3252
13
- pycityagent/environment/sim/__init__.py,sha256=JVG6sSD2Hbohl1TtKjuQi7_M7tKMrFh9vl3QV3VA5O0,724
14
- pycityagent/environment/sim/aoi_service.py,sha256=pYSsqdGBpfQvp0-umNJir_7Yph75OJqhLjFQ2QWhSP8,1211
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=_WirbF-vv4U1VK5oACiEC3Bse9Pia9HWNEw21suEnAs,7093
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=Pab182YRcrjLw3UcfoD1Hdd6O8XEdi6Q2hJKzFcpSWE,1272
22
- pycityagent/environment/sim/sim_env.py,sha256=HI1LcS_FotDKQ6vBnx0e49prXSABOfA20aU9KM-ZkCY,4625
23
- pycityagent/environment/sim/social_service.py,sha256=a9mGZm95EFUIKQJUwQi9f8anmtf2SK4XqGfE2W9IXSQ,2001
24
- pycityagent/environment/simulator.py,sha256=bjzn5mTmsQgePZc3hDzoVS4dXAHLaI_yJWjUCTMAdi8,11872
25
- pycityagent/environment/utils/__init__.py,sha256=PUx8etr2p_AA7F50ZR7g27odkgv-nOqFZa61ER8-DLg,221
26
- pycityagent/environment/utils/base64.py,sha256=hoREzQo3FXMN79pqQLO2jgsDEvudciomyKii7MWljAM,374
27
- pycityagent/environment/utils/const.py,sha256=3RMNy7_bE7-23K90j9DFW_tWEzu8s7hSTgKbV-3BFl4,5327
28
- pycityagent/environment/utils/geojson.py,sha256=Ieg8Bzw63kKhJlhDIOVDoh-wQO4Sbtoe47FtIOy5wWg,686
29
- pycityagent/environment/utils/grpc.py,sha256=6EJwKXXktIWb1NcUiJzIRmfrY0S03QAXXGcCDHqAT00,1998
30
- pycityagent/environment/utils/map_utils.py,sha256=oqrRgQICC3SYw6gwjjPe_MAif7_t6dlrQpY8E32Fexs,5777
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=0-_q-StY0g4p9mdUNve_kqzHNXwVxedNsvxGXSQYq6o,144
34
- pycityagent/llm/embedding.py,sha256=vtjMUuInrtn0WRPXp3cmYEhwHXJ0q6zszdXsjTsgNeQ,4499
35
- pycityagent/llm/llm.py,sha256=PFbGCVQOLNJEfd5KaZdXABYIoPTFOGrNXIAE2eDRCP4,19191
36
- pycityagent/llm/llmconfig.py,sha256=WcyyfjP6XVLCDj2aemEM6ogQCWNxbTXQBiR0WjN4E8E,457
37
- pycityagent/llm/utils.py,sha256=emio-WhYh6vYb5Sp7KsnW9hKKe_jStjJsGBBJfcAPgM,153
38
- pycityagent/memory/__init__.py,sha256=Hs2NhYpIG-lvpwPWwj4DydB1sxtjz7cuA4iDAzCXnjI,243
39
- pycityagent/memory/const.py,sha256=m9AidLs7Zu28StpvYetclqx-1qQcy3bYvwagcXB3a04,913
40
- pycityagent/memory/memory.py,sha256=I5GJ77eQZBcKcWevZQcHUBTd2XNT4CotE6mmvB5mA8I,18170
41
- pycityagent/memory/memory_base.py,sha256=U6odnR_5teaT3N2XF0W2McCxPyxtCpw61DjRVIO6p6I,5639
42
- pycityagent/memory/profile.py,sha256=dJPeZ91DZcYdR7zmsfSSQx7epvvE1mrvj4-4WAT0tkM,5217
43
- pycityagent/memory/self_define.py,sha256=vH2PrRSIykAOc5FebKN2JFQdx17nfR-IWv4s_ZS0YJk,5214
44
- pycityagent/memory/state.py,sha256=xqOxo69sZX1M9eCUMbg5BUlSFe9LdMDH3oTWDXC0y64,5148
45
- pycityagent/memory/utils.py,sha256=97lkenn-36wgt7uWb3Z39BXdJ5zlEQTQnQBFpoND1gg,879
46
- pycityagent/message/__init__.py,sha256=dEigAhYQ8e-suktavjo-Ip-nkEzf659hrFJwoFQ2ljE,54
47
- pycityagent/message/messager.py,sha256=Xd02IxSkVtfrC386frB5kiqlDIDhNKuh5pVM4xKIyyw,2463
48
- pycityagent/simulation/__init__.py,sha256=SZQzjcGR-zkTDrE81bQuEdKn7yjk4BcZ9m7o1wTc7EE,111
49
- pycityagent/simulation/agentgroup.py,sha256=mHW8ggwG1iQ_-dCL5t_8Nlkp4OnCshdGGKygq9jFZX8,3983
50
- pycityagent/simulation/interview.py,sha256=mY4Vpz0vgJo4rrMy3TZnwwM-iVDL6J0LgjOxbEuV27E,1173
51
- pycityagent/simulation/simulation.py,sha256=PcWYx8GqCypqDga9JdHg3sRux5lrGcT8b_hvapjKw34,13177
52
- pycityagent/simulation/survey/__init__.py,sha256=hFJ0Q1yo4jwKAIXP17sznBSWwm2Lyh3F3W3Lly40wr8,172
53
- pycityagent/simulation/survey/manager.py,sha256=DkNrb12Ay7TiGURoyJTFFeUdV1zh6TgRpTmpZOblADw,2158
54
- pycityagent/simulation/survey/models.py,sha256=-3EKe-qvkUJ2TH24ow0A_Lc4teGet7pueN2T5mOR_Qc,1308
55
- pycityagent/simulation/ui/__init__.py,sha256=4aevYl09KSku2NEpFZhyFNxI1qlswbrAFwhF_YhxFTo,62
56
- pycityagent/simulation/ui/interface.py,sha256=cSQRQhuA5Gj-X7anuN9tmRpG6-I8QYOuswjIWUeSvio,21636
57
- pycityagent/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
58
- pycityagent/utils/decorators.py,sha256=v21QD_cKMTQ-t1UorXjgbWDFzeRehvprDalhQHIQxgg,3160
59
- pycityagent/utils/parsers/__init__.py,sha256=p5RZ4azJIpMgmKIU2evIp2moNzFabIR9X1LVNjT6Fq4,279
60
- pycityagent/utils/parsers/code_block_parser.py,sha256=Cs2Z_hm9VfNCpPPll1TwteaJF-HAQPs-3RApsOekFm4,1173
61
- pycityagent/utils/parsers/json_parser.py,sha256=FZ3XN1g8z4Dr2TFraUOoah1oQcze4fPd2m01hHoX0Mo,2917
62
- pycityagent/utils/parsers/parser_base.py,sha256=k6DVqwAMK3jJdOP4IeLE-aFPm3V2F-St5qRBuRdx4aU,1742
63
- pycityagent/workflow/__init__.py,sha256=EyCcjB6LyBim-5iAOPe4m2qfvghEPqu1ZdGfy4KPeZ8,551
64
- pycityagent/workflow/block.py,sha256=IXfarqIax6yVP_DniU6ZsPTT8QA4aIDnvZbwP_MtRaw,6054
65
- pycityagent/workflow/prompt.py,sha256=cmzKEmlzjdwg50uwfnTnN_6xNJA8OVjo5fdmcsaTbdU,2886
66
- pycityagent/workflow/tool.py,sha256=2VDzBISnx7LASdAou8Zu230j7o2SdK1oBeqHtwDHZy0,6711
67
- pycityagent/workflow/trigger.py,sha256=8530YfBbLsdtT1QZSqvuha64NNLVJYXVznlvknz9-xI,5737
68
- pycityagent-2.0.0a5.dist-info/METADATA,sha256=eGx85-Jh_-wtRP3XhlJne7IpW5gpB-4iJrLsuoe9brQ,7614
69
- pycityagent-2.0.0a5.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
70
- pycityagent-2.0.0a5.dist-info/RECORD,,