pycityagent 2.0.0a6__py3-none-any.whl → 2.0.0a8__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/agent.py +29 -5
- pycityagent/environment/interact/interact.py +86 -29
- pycityagent/environment/sence/static.py +3 -2
- pycityagent/environment/sim/aoi_service.py +1 -1
- pycityagent/environment/sim/economy_services.py +1 -1
- pycityagent/environment/sim/road_service.py +1 -1
- pycityagent/environment/sim/social_service.py +1 -1
- pycityagent/environment/simulator.py +6 -4
- pycityagent/environment/utils/__init__.py +5 -1
- pycityagent/llm/__init__.py +1 -1
- pycityagent/llm/embedding.py +36 -35
- pycityagent/llm/llm.py +197 -161
- pycityagent/llm/llmconfig.py +7 -9
- pycityagent/llm/utils.py +2 -2
- pycityagent/memory/memory.py +1 -2
- pycityagent/memory/memory_base.py +1 -2
- pycityagent/memory/profile.py +1 -2
- pycityagent/memory/self_define.py +1 -2
- pycityagent/memory/state.py +1 -2
- pycityagent/message/__init__.py +1 -1
- pycityagent/message/messager.py +11 -4
- pycityagent/simulation/__init__.py +1 -1
- pycityagent/simulation/agentgroup.py +39 -11
- pycityagent/simulation/interview.py +9 -5
- pycityagent/simulation/simulation.py +181 -61
- pycityagent/simulation/survey/__init__.py +1 -6
- pycityagent/simulation/survey/manager.py +22 -21
- pycityagent/simulation/survey/models.py +8 -5
- pycityagent/utils/decorators.py +14 -4
- pycityagent/utils/parsers/__init__.py +2 -1
- pycityagent/workflow/block.py +4 -3
- pycityagent/workflow/prompt.py +16 -9
- pycityagent/workflow/tool.py +1 -2
- pycityagent/workflow/trigger.py +36 -23
- {pycityagent-2.0.0a6.dist-info → pycityagent-2.0.0a8.dist-info}/METADATA +1 -1
- pycityagent-2.0.0a8.dist-info/RECORD +70 -0
- pycityagent-2.0.0a6.dist-info/RECORD +0 -70
- {pycityagent-2.0.0a6.dist-info → pycityagent-2.0.0a8.dist-info}/WHEEL +0 -0
@@ -4,6 +4,7 @@ from datetime import datetime
|
|
4
4
|
from enum import Enum
|
5
5
|
import uuid
|
6
6
|
|
7
|
+
|
7
8
|
class QuestionType(Enum):
|
8
9
|
TEXT = "文本"
|
9
10
|
SINGLE_CHOICE = "单选"
|
@@ -11,6 +12,7 @@ class QuestionType(Enum):
|
|
11
12
|
RATING = "评分"
|
12
13
|
LIKERT = "李克特量表"
|
13
14
|
|
15
|
+
|
14
16
|
@dataclass
|
15
17
|
class Question:
|
16
18
|
content: str
|
@@ -19,7 +21,7 @@ class Question:
|
|
19
21
|
options: List[str] = field(default_factory=list)
|
20
22
|
min_rating: int = 1
|
21
23
|
max_rating: int = 5
|
22
|
-
|
24
|
+
|
23
25
|
def to_dict(self) -> dict:
|
24
26
|
return {
|
25
27
|
"content": self.content,
|
@@ -27,9 +29,10 @@ class Question:
|
|
27
29
|
"required": self.required,
|
28
30
|
"options": self.options,
|
29
31
|
"min_rating": self.min_rating,
|
30
|
-
"max_rating": self.max_rating
|
32
|
+
"max_rating": self.max_rating,
|
31
33
|
}
|
32
34
|
|
35
|
+
|
33
36
|
@dataclass
|
34
37
|
class Survey:
|
35
38
|
id: str
|
@@ -38,12 +41,12 @@ class Survey:
|
|
38
41
|
questions: List[Question]
|
39
42
|
responses: Dict[str, dict] = field(default_factory=dict)
|
40
43
|
created_at: datetime = field(default_factory=datetime.now)
|
41
|
-
|
44
|
+
|
42
45
|
def to_dict(self) -> dict:
|
43
46
|
return {
|
44
47
|
"id": self.id,
|
45
48
|
"title": self.title,
|
46
49
|
"description": self.description,
|
47
50
|
"questions": [q.to_dict() for q in self.questions],
|
48
|
-
"response_count": len(self.responses)
|
49
|
-
}
|
51
|
+
"response_count": len(self.responses),
|
52
|
+
}
|
pycityagent/utils/decorators.py
CHANGED
@@ -2,18 +2,21 @@ import time
|
|
2
2
|
import functools
|
3
3
|
import inspect
|
4
4
|
|
5
|
-
CALLING_STRING =
|
5
|
+
CALLING_STRING = 'function: `{func_name}` in "{file_path}", line {line_number}, arguments: `{arguments}` start time: `{start_time}` end time: `{end_time}` output: `{output}`'
|
6
6
|
|
7
|
-
__all__ =[
|
7
|
+
__all__ = [
|
8
8
|
"record_call_aio",
|
9
9
|
"record_call",
|
10
10
|
"lock_decorator",
|
11
11
|
]
|
12
|
+
|
13
|
+
|
12
14
|
def record_call_aio(record_function_calling: bool = True):
|
13
15
|
"""
|
14
16
|
Decorator to log the async function call details if `record_function_calling` is True.
|
15
17
|
"""
|
16
|
-
|
18
|
+
|
19
|
+
def decorator(func):
|
17
20
|
async def wrapper(*args, **kwargs):
|
18
21
|
cur_frame = inspect.currentframe()
|
19
22
|
assert cur_frame is not None
|
@@ -40,14 +43,18 @@ def record_call_aio(record_function_calling: bool = True):
|
|
40
43
|
)
|
41
44
|
)
|
42
45
|
return result
|
46
|
+
|
43
47
|
return wrapper
|
48
|
+
|
44
49
|
return decorator
|
45
50
|
|
51
|
+
|
46
52
|
def record_call(record_function_calling: bool = True):
|
47
53
|
"""
|
48
54
|
Decorator to log the function call details if `record_function_calling` is True.
|
49
55
|
"""
|
50
|
-
|
56
|
+
|
57
|
+
def decorator(func):
|
51
58
|
def wrapper(*args, **kwargs):
|
52
59
|
cur_frame = inspect.currentframe()
|
53
60
|
assert cur_frame is not None
|
@@ -74,9 +81,12 @@ def record_call(record_function_calling: bool = True):
|
|
74
81
|
)
|
75
82
|
)
|
76
83
|
return result
|
84
|
+
|
77
85
|
return wrapper
|
86
|
+
|
78
87
|
return decorator
|
79
88
|
|
89
|
+
|
80
90
|
def lock_decorator(func):
|
81
91
|
async def wrapper(self, *args, **kwargs):
|
82
92
|
lock = self._lock
|
pycityagent/workflow/block.py
CHANGED
@@ -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
|
|
pycityagent/workflow/prompt.py
CHANGED
@@ -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 =
|
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
|
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(
|
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(
|
61
|
-
|
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
|
pycityagent/workflow/tool.py
CHANGED
@@ -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
|
8
|
-
PersonService)
|
7
|
+
from ..environment import LEVEL_ONE_PRE, POI_TYPE_DICT, AoiService, PersonService
|
9
8
|
from ..workflow import Block
|
10
9
|
|
11
10
|
|
pycityagent/workflow/trigger.py
CHANGED
@@ -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__(
|
80
|
-
|
81
|
-
|
82
|
-
|
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 [
|
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 (
|
136
|
-
|
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}")
|
@@ -0,0 +1,70 @@
|
|
1
|
+
pycityagent/__init__.py,sha256=n56bWkAUEcvjDsb7LcJpaGjlrriSKPnR0yBhwRfEYBA,212
|
2
|
+
pycityagent/agent.py,sha256=cn8g9Sn8g3L5LaCb-zN831bW_sZWuUZbRydS3pegHdQ,12232
|
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=Hu5IXFYZlaZ22m0xlDPBu89rRr1bJdSDeWWJIBxv92k,5233
|
50
|
+
pycityagent/simulation/interview.py,sha256=S2uv8MFCB4-u_4Q202VFoPJOIleqpKK9Piju0BDSb_0,1158
|
51
|
+
pycityagent/simulation/simulation.py,sha256=7ONLou5qoA0dcVp3-mr6AFop6q3JqTyLudxfnbf9trc,16910
|
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.0a8.dist-info/METADATA,sha256=IR7pOLENcFN0uxU3lshslneGOmYHrRjuuyJ13x5BWSc,7614
|
69
|
+
pycityagent-2.0.0a8.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
70
|
+
pycityagent-2.0.0a8.dist-info/RECORD,,
|
@@ -1,70 +0,0 @@
|
|
1
|
-
pycityagent/__init__.py,sha256=n56bWkAUEcvjDsb7LcJpaGjlrriSKPnR0yBhwRfEYBA,212
|
2
|
-
pycityagent/agent.py,sha256=U1cdyRl_ZURnPLC31uP8auvSa4TWupK_SZ5nuff3Ryk,11263
|
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=G2aRk1d3d5Ja4QPNJagNKz8a_9_JzSmQXqmDrteYkkg,4105
|
50
|
-
pycityagent/simulation/interview.py,sha256=mY4Vpz0vgJo4rrMy3TZnwwM-iVDL6J0LgjOxbEuV27E,1173
|
51
|
-
pycityagent/simulation/simulation.py,sha256=98_dxWAUNhbVyDQlsGq7SB_QpXF2r8vezVk1C54P6IY,13073
|
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.0a6.dist-info/METADATA,sha256=u-2FElVNMV8-kXaAz5V8paLzLs3REC-gP_zO5DL6jkQ,7614
|
69
|
-
pycityagent-2.0.0a6.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
70
|
-
pycityagent-2.0.0a6.dist-info/RECORD,,
|
File without changes
|