lionagi 0.5.0__py3-none-any.whl → 0.5.2__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.
- lionagi/__init__.py +0 -1
- lionagi/core/action/tool.py +3 -5
- lionagi/core/communication/action_request.py +3 -3
- lionagi/core/communication/message.py +3 -3
- lionagi/core/communication/utils.py +3 -3
- lionagi/core/generic/component.py +4 -4
- lionagi/core/generic/element.py +51 -47
- lionagi/core/generic/graph.py +1 -1
- lionagi/core/generic/log.py +2 -2
- lionagi/core/generic/pile.py +10 -11
- lionagi/core/generic/progression.py +19 -12
- lionagi/core/generic/utils.py +6 -3
- lionagi/core/models/base.py +11 -68
- lionagi/core/models/field_model.py +42 -19
- lionagi/core/models/{new_model_params.py → model_params.py} +5 -6
- lionagi/core/models/note.py +2 -2
- lionagi/core/models/operable_model.py +8 -4
- lionagi/core/models/schema_model.py +9 -31
- lionagi/core/models/types.py +15 -6
- lionagi/core/session/branch.py +10 -7
- lionagi/core/session/branch_mixins.py +52 -15
- lionagi/core/session/session.py +1 -2
- lionagi/core/typing/__init__.py +4 -4
- lionagi/core/typing/{concepts.py → _concepts.py} +43 -2
- lionagi/core/typing/_id.py +104 -0
- lionagi/integrations/anthropic_/AnthropicModel.py +8 -3
- lionagi/integrations/anthropic_/AnthropicService.py +4 -0
- lionagi/integrations/groq_/GroqModel.py +11 -4
- lionagi/integrations/groq_/GroqService.py +4 -0
- lionagi/integrations/litellm_/imodel.py +10 -8
- lionagi/integrations/ollama_/OllamaService.py +4 -0
- lionagi/integrations/openai_/OpenAIModel.py +12 -3
- lionagi/integrations/openai_/image_token_calculator/image_token_calculator.py +14 -8
- lionagi/integrations/perplexity_/PerplexityModel.py +8 -3
- lionagi/integrations/perplexity_/PerplexityService.py +4 -0
- lionagi/libs/func/async_calls/__init__.py +6 -3
- lionagi/libs/func/async_calls/alcall.py +46 -0
- lionagi/libs/func/async_calls/bcall.py +49 -1
- lionagi/libs/func/async_calls/rcall.py +32 -0
- lionagi/libs/utils.py +12 -1
- lionagi/operations/brainstorm/brainstorm.py +3 -3
- lionagi/operations/plan/plan.py +3 -3
- lionagi/protocols/__init__.py +3 -0
- lionagi/protocols/configs/__init__.py +0 -15
- lionagi/protocols/configs/branch_config.py +1 -1
- lionagi/protocols/configs/imodel_config.py +2 -2
- lionagi/protocols/configs/log_config.py +1 -1
- lionagi/protocols/configs/types.py +15 -0
- lionagi/protocols/operatives/__init__.py +3 -15
- lionagi/protocols/operatives/action.py +4 -0
- lionagi/protocols/operatives/instruct.py +6 -2
- lionagi/protocols/operatives/operative.py +9 -21
- lionagi/protocols/operatives/prompts.py +4 -0
- lionagi/protocols/operatives/reason.py +4 -0
- lionagi/protocols/operatives/step.py +11 -23
- lionagi/protocols/operatives/types.py +19 -0
- lionagi/protocols/registries/__init__.py +3 -0
- lionagi/protocols/registries/_component_registry.py +4 -0
- lionagi/protocols/registries/_pile_registry.py +4 -0
- lionagi/service/__init__.py +3 -0
- lionagi/service/imodel.py +22 -7
- lionagi/service/service.py +4 -0
- lionagi/service/service_match_util.py +4 -4
- lionagi/settings.py +10 -18
- lionagi/strategies/base.py +4 -5
- lionagi/strategies/concurrent.py +4 -3
- lionagi/strategies/concurrent_chunk.py +3 -3
- lionagi/strategies/concurrent_sequential_chunk.py +3 -3
- lionagi/strategies/params.py +7 -4
- lionagi/version.py +1 -1
- {lionagi-0.5.0.dist-info → lionagi-0.5.2.dist-info}/METADATA +214 -15
- {lionagi-0.5.0.dist-info → lionagi-0.5.2.dist-info}/RECORD +77 -76
- lionagi/core/typing/config.py +0 -15
- lionagi/core/typing/id.py +0 -221
- /lionagi/core/typing/{pydantic_.py → _pydantic.py} +0 -0
- /lionagi/core/typing/{typing_.py → _typing.py} +0 -0
- /lionagi/integrations/{services.py → _services.py} +0 -0
- {lionagi-0.5.0.dist-info → lionagi-0.5.2.dist-info}/WHEEL +0 -0
- {lionagi-0.5.0.dist-info → lionagi-0.5.2.dist-info}/licenses/LICENSE +0 -0
@@ -1,3 +1,7 @@
|
|
1
|
+
# Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
|
1
5
|
"""Field definitions and validation for InstructModel components."""
|
2
6
|
|
3
7
|
from typing import Any, ClassVar
|
@@ -169,7 +173,7 @@ class OperationInstruct(Instruct):
|
|
169
173
|
return ACTIONS_FIELD.validator(cls, v)
|
170
174
|
|
171
175
|
|
172
|
-
|
176
|
+
INSTRUCT_FIELD_MODEL = FieldModel(
|
173
177
|
name="instruct_models",
|
174
178
|
annotation=list[Instruct],
|
175
179
|
default_factory=list,
|
@@ -191,6 +195,6 @@ __all__ = [
|
|
191
195
|
"REASON_FIELD",
|
192
196
|
"ACTIONS_FIELD",
|
193
197
|
"Instruct",
|
194
|
-
"
|
198
|
+
"INSTRUCT_FIELD_MODEL",
|
195
199
|
"InstructResponse",
|
196
200
|
]
|
@@ -1,25 +1,13 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
you may not use this file except in compliance with the License.
|
6
|
-
You may obtain a copy of the License at
|
7
|
-
|
8
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
See the License for the specific language governing permissions and
|
14
|
-
limitations under the License.
|
15
|
-
"""
|
1
|
+
# Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
16
4
|
|
17
5
|
from typing import Self
|
18
6
|
|
19
7
|
from pydantic import BaseModel, Field, PrivateAttr, model_validator
|
20
8
|
from pydantic.fields import FieldInfo
|
21
9
|
|
22
|
-
from lionagi.core.models import FieldModel,
|
10
|
+
from lionagi.core.models import FieldModel, ModelParams, OperableModel
|
23
11
|
from lionagi.core.typing import UNDEFINED
|
24
12
|
from lionagi.libs.parse import to_json, validate_keys
|
25
13
|
|
@@ -29,10 +17,10 @@ class Operative(OperableModel):
|
|
29
17
|
|
30
18
|
name: str | None = None
|
31
19
|
|
32
|
-
request_params:
|
20
|
+
request_params: ModelParams | None = Field(default=None)
|
33
21
|
request_type: type[BaseModel] | None = Field(default=None)
|
34
22
|
|
35
|
-
response_params:
|
23
|
+
response_params: ModelParams | None = Field(default=None)
|
36
24
|
response_type: type[BaseModel] | None = Field(default=None)
|
37
25
|
response_model: OperableModel | None = Field(default=None)
|
38
26
|
response_str_dict: dict | str | None = Field(default=None)
|
@@ -140,7 +128,7 @@ class Operative(OperableModel):
|
|
140
128
|
|
141
129
|
def create_response_type(
|
142
130
|
self,
|
143
|
-
response_params:
|
131
|
+
response_params: ModelParams | None = None,
|
144
132
|
field_models: list[FieldModel] | None = None,
|
145
133
|
parameter_fields: dict[str, FieldInfo] | None = None,
|
146
134
|
exclude_fields: list[str] | None = None,
|
@@ -154,7 +142,7 @@ class Operative(OperableModel):
|
|
154
142
|
"""Creates a new response type based on the provided parameters.
|
155
143
|
|
156
144
|
Args:
|
157
|
-
response_params (
|
145
|
+
response_params (ModelParams, optional): Parameters for the new response model.
|
158
146
|
field_models (list[FieldModel], optional): List of field models.
|
159
147
|
parameter_fields (dict[str, FieldInfo], optional): Dictionary of parameter fields.
|
160
148
|
exclude_fields (list, optional): List of fields to exclude.
|
@@ -165,7 +153,7 @@ class Operative(OperableModel):
|
|
165
153
|
frozen (bool, optional): Whether the model is frozen.
|
166
154
|
validators (dict, optional): Dictionary of validators.
|
167
155
|
"""
|
168
|
-
self.response_params = response_params or
|
156
|
+
self.response_params = response_params or ModelParams(
|
169
157
|
parameter_fields=parameter_fields,
|
170
158
|
field_models=field_models,
|
171
159
|
exclude_fields=exclude_fields,
|
@@ -1,23 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
5
|
-
you may not use this file except in compliance with the License.
|
6
|
-
You may obtain a copy of the License at
|
7
|
-
|
8
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
9
|
-
|
10
|
-
Unless required by applicable law or agreed to in writing, software
|
11
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
12
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
13
|
-
See the License for the specific language governing permissions and
|
14
|
-
limitations under the License.
|
15
|
-
"""
|
1
|
+
# Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
16
4
|
|
17
5
|
from pydantic import BaseModel
|
18
6
|
from pydantic.fields import FieldInfo
|
19
7
|
|
20
|
-
from lionagi.core.typing import FieldModel,
|
8
|
+
from lionagi.core.typing import FieldModel, ModelParams
|
21
9
|
from lionagi.protocols.operatives.operative import Operative
|
22
10
|
|
23
11
|
from .action import (
|
@@ -54,7 +42,7 @@ class Step:
|
|
54
42
|
operative_name: str | None = None,
|
55
43
|
reason: bool = False,
|
56
44
|
actions: bool = False,
|
57
|
-
request_params:
|
45
|
+
request_params: ModelParams | None = None,
|
58
46
|
parameter_fields: dict[str, FieldInfo] | None = None,
|
59
47
|
base_type: type[BaseModel] | None = None,
|
60
48
|
field_models: list[FieldModel] | None = None,
|
@@ -72,7 +60,7 @@ class Step:
|
|
72
60
|
operative_name (str, optional): Name of the operative.
|
73
61
|
reason (bool, optional): Whether to include reason field.
|
74
62
|
actions (bool, optional): Whether to include action fields.
|
75
|
-
request_params (
|
63
|
+
request_params (ModelParams, optional): Parameters for the new model.
|
76
64
|
parameter_fields (dict[str, FieldInfo], optional): Parameter fields for the model.
|
77
65
|
base_type (type[BaseModel], optional): Base type for the model.
|
78
66
|
field_models (list[FieldModel], optional): List of field models.
|
@@ -100,7 +88,7 @@ class Step:
|
|
100
88
|
ACTION_REQUIRED_FIELD,
|
101
89
|
]
|
102
90
|
)
|
103
|
-
request_params = request_params or
|
91
|
+
request_params = request_params or ModelParams(
|
104
92
|
parameter_fields=parameter_fields,
|
105
93
|
base_type=base_type,
|
106
94
|
field_models=field_models,
|
@@ -119,7 +107,7 @@ class Step:
|
|
119
107
|
*,
|
120
108
|
operative: Operative,
|
121
109
|
additional_data: dict | None = None,
|
122
|
-
response_params:
|
110
|
+
response_params: ModelParams | None = None,
|
123
111
|
field_models: list[FieldModel] | None = None,
|
124
112
|
frozen_response: bool = False,
|
125
113
|
response_config_dict: dict | None = None,
|
@@ -131,7 +119,7 @@ class Step:
|
|
131
119
|
Args:
|
132
120
|
operative (Operative): The operative instance to update.
|
133
121
|
additional_data (dict | None, optional): Additional data to include in the response.
|
134
|
-
response_params (
|
122
|
+
response_params (ModelParams | None, optional): Parameters for the response model.
|
135
123
|
field_models (list[FieldModel] | None, optional): List of field models.
|
136
124
|
frozen_response (bool, optional): Whether the response model is frozen.
|
137
125
|
response_config_dict (dict | None, optional): Configuration dictionary for the response.
|
@@ -162,7 +150,7 @@ class Step:
|
|
162
150
|
@staticmethod
|
163
151
|
def _create_response_type(
|
164
152
|
operative: Operative,
|
165
|
-
response_params:
|
153
|
+
response_params: ModelParams | None = None,
|
166
154
|
response_validators: dict | None = None,
|
167
155
|
frozen_response: bool = False,
|
168
156
|
response_config_dict: dict | None = None,
|
@@ -174,7 +162,7 @@ class Step:
|
|
174
162
|
|
175
163
|
Args:
|
176
164
|
operative (Operative): The operative instance.
|
177
|
-
response_params (
|
165
|
+
response_params (ModelParams | None, optional): Parameters for the response model.
|
178
166
|
response_validators (dict | None, optional): Validators for the response model.
|
179
167
|
frozen_response (bool, optional): Whether the response model is frozen.
|
180
168
|
response_config_dict (dict | None, optional): Configuration dictionary for the response.
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# Copyright (c) 2023 - 2024, HaiyangLi <quantocean.li at gmail dot com>
|
2
|
+
#
|
3
|
+
# SPDX-License-Identifier: Apache-2.0
|
4
|
+
|
5
|
+
from .action import ActionRequestModel, ActionResponseModel
|
6
|
+
from .instruct import Instruct
|
7
|
+
from .operative import Operative
|
8
|
+
from .reason import ReasonModel
|
9
|
+
from .step import Step, StepModel
|
10
|
+
|
11
|
+
__all__: list[str] = [
|
12
|
+
"Operative",
|
13
|
+
"Step",
|
14
|
+
"ActionRequestModel",
|
15
|
+
"ActionResponseModel",
|
16
|
+
"StepModel",
|
17
|
+
"Instruct",
|
18
|
+
"ReasonModel",
|
19
|
+
]
|
lionagi/service/__init__.py
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
from lionagi.integrations.litellm_.imodel import LiteiModel
|
2
|
+
|
1
3
|
from .imodel import iModel
|
2
4
|
from .rate_limiter import RateLimiter, RateLimitError
|
3
5
|
from .service import Service, register_service
|
@@ -10,4 +12,5 @@ __all__ = [
|
|
10
12
|
"RateLimitError",
|
11
13
|
"invoke_retry",
|
12
14
|
"iModel",
|
15
|
+
"LiteiModel",
|
13
16
|
]
|
lionagi/service/imodel.py
CHANGED
@@ -9,6 +9,7 @@ from lionagi.service.service_match_util import (
|
|
9
9
|
|
10
10
|
|
11
11
|
class iModel:
|
12
|
+
|
12
13
|
def __init__(
|
13
14
|
self,
|
14
15
|
provider: str | Service,
|
@@ -20,25 +21,34 @@ class iModel:
|
|
20
21
|
interval_requests: int = None,
|
21
22
|
**kwargs,
|
22
23
|
):
|
23
|
-
|
24
24
|
if api_key is not None:
|
25
25
|
api_key = api_key
|
26
26
|
elif api_key_schema is not None:
|
27
27
|
api_key = api_key_schema
|
28
28
|
|
29
|
-
if
|
30
|
-
|
29
|
+
if task == "chat":
|
30
|
+
match provider:
|
31
|
+
case "openai":
|
32
|
+
task = "create_chat_completion"
|
33
|
+
case "anthropic":
|
34
|
+
task = "create_message"
|
35
|
+
case "groq":
|
36
|
+
task = "create_chat_completion"
|
37
|
+
case "perplexity":
|
38
|
+
task = "create_chat_completion"
|
39
|
+
|
40
|
+
if isinstance(provider, str):
|
41
|
+
if api_key is None:
|
31
42
|
match provider:
|
32
43
|
case "openai":
|
33
44
|
api_key = "OPENAI_API_KEY"
|
34
45
|
case "anthropic":
|
35
46
|
api_key = "ANTHROPIC_API_KEY"
|
36
|
-
case "
|
37
|
-
api_key = "
|
47
|
+
case "groq":
|
48
|
+
api_key = "GROQ_API_KEY"
|
38
49
|
case "perplexity":
|
39
|
-
api_key = "
|
50
|
+
api_key = "PERPLEXIY_API_KEY"
|
40
51
|
|
41
|
-
if isinstance(provider, str):
|
42
52
|
self.service = match_service(provider, api_key=api_key, **kwargs)
|
43
53
|
elif isinstance(provider, Service):
|
44
54
|
self.service = provider
|
@@ -80,6 +90,7 @@ class iModel:
|
|
80
90
|
self.data_model = self.service.match_data_model(self.task)
|
81
91
|
|
82
92
|
def parse_to_data_model(self, **kwargs):
|
93
|
+
|
83
94
|
if kwargs.get("model") and self.model:
|
84
95
|
if kwargs.get("model") != self.model:
|
85
96
|
raise ValueError(
|
@@ -106,5 +117,9 @@ class iModel:
|
|
106
117
|
def list_tasks(self):
|
107
118
|
return self.service.list_tasks()
|
108
119
|
|
120
|
+
@property
|
121
|
+
def allowed_roles(self):
|
122
|
+
return self.service.allowed_roles
|
123
|
+
|
109
124
|
|
110
125
|
__all__ = ["iModel"]
|
lionagi/service/service.py
CHANGED
@@ -19,7 +19,7 @@ def match_service(service_name: str, **kwargs):
|
|
19
19
|
return key1 == key2
|
20
20
|
|
21
21
|
if service_name == "openai":
|
22
|
-
from lionagi.integrations.
|
22
|
+
from lionagi.integrations._services import OpenAIService
|
23
23
|
|
24
24
|
api_key = kwargs.get("api_key")
|
25
25
|
openai_organization = kwargs.get("openai_organization")
|
@@ -44,7 +44,7 @@ def match_service(service_name: str, **kwargs):
|
|
44
44
|
)
|
45
45
|
|
46
46
|
elif service_name == "anthropic":
|
47
|
-
from lionagi.integrations.
|
47
|
+
from lionagi.integrations._services import AnthropicService
|
48
48
|
|
49
49
|
api_key = kwargs.get("api_key")
|
50
50
|
api_version = kwargs.get("api_version", "2023-06-01")
|
@@ -63,7 +63,7 @@ def match_service(service_name: str, **kwargs):
|
|
63
63
|
)
|
64
64
|
|
65
65
|
elif service_name == "perplexity":
|
66
|
-
from lionagi.integrations.
|
66
|
+
from lionagi.integrations._services import PerplexityService
|
67
67
|
|
68
68
|
api_key = kwargs.get("api_key")
|
69
69
|
api_version = kwargs.get("api_version", "2023-06-01")
|
@@ -77,7 +77,7 @@ def match_service(service_name: str, **kwargs):
|
|
77
77
|
return PerplexityService(api_key=api_key)
|
78
78
|
|
79
79
|
elif service_name == "groq":
|
80
|
-
from lionagi.integrations.
|
80
|
+
from lionagi.integrations._services import GroqService
|
81
81
|
|
82
82
|
api_key = kwargs.get("api_key")
|
83
83
|
for service in ServiceSetting.services.values():
|
lionagi/settings.py
CHANGED
@@ -1,19 +1,18 @@
|
|
1
1
|
from datetime import timezone
|
2
2
|
from enum import Enum
|
3
3
|
|
4
|
-
from lionagi.protocols.configs import (
|
4
|
+
from lionagi.protocols.configs.types import (
|
5
5
|
BranchConfig,
|
6
|
-
|
6
|
+
LogConfig,
|
7
7
|
MessageConfig,
|
8
8
|
RetryConfig,
|
9
9
|
TimedFuncCallConfig,
|
10
10
|
iModelConfig,
|
11
11
|
)
|
12
|
-
from lionagi.protocols.configs.log_config import LogConfig
|
13
12
|
|
14
13
|
|
15
14
|
class BaseSystemFields(str, Enum):
|
16
|
-
|
15
|
+
LN_ID = "ln_id"
|
17
16
|
TIMESTAMP = "timestamp"
|
18
17
|
METADATA = "metadata"
|
19
18
|
EXTRA_FIELDS = "extra_fields"
|
@@ -22,15 +21,8 @@ class BaseSystemFields(str, Enum):
|
|
22
21
|
EMBEDDING = "embedding"
|
23
22
|
|
24
23
|
|
25
|
-
|
26
|
-
|
27
|
-
random_hyphen=True,
|
28
|
-
num_hyphens=4,
|
29
|
-
hyphen_start_index=6,
|
30
|
-
hyphen_end_index=-6,
|
31
|
-
prefix="ao",
|
32
|
-
postfix="",
|
33
|
-
)
|
24
|
+
UUID_VERSION = 4
|
25
|
+
|
34
26
|
|
35
27
|
DEFAULT_TIMED_FUNC_CALL_CONFIG = TimedFuncCallConfig(
|
36
28
|
initial_delay=0,
|
@@ -61,7 +53,7 @@ DEFAULT_CHAT_CONFIG = iModelConfig(
|
|
61
53
|
)
|
62
54
|
|
63
55
|
|
64
|
-
|
56
|
+
DEFAULT_PARSE_CONFIG = iModelConfig(
|
65
57
|
provider="openai",
|
66
58
|
task="chat",
|
67
59
|
model="gpt-4o-mini",
|
@@ -109,7 +101,7 @@ DEFAULT_BRANCH_CONFIG = BranchConfig(
|
|
109
101
|
auto_register_tools=True,
|
110
102
|
action_call_config=DEFAULT_TIMED_FUNC_CALL_CONFIG,
|
111
103
|
imodel_config=DEFAULT_CHAT_CONFIG,
|
112
|
-
retry_imodel_config=
|
104
|
+
retry_imodel_config=DEFAULT_PARSE_CONFIG,
|
113
105
|
)
|
114
106
|
|
115
107
|
|
@@ -120,7 +112,7 @@ BASE_LION_FIELDS = set(BaseSystemFields.__members__.values())
|
|
120
112
|
class Settings:
|
121
113
|
|
122
114
|
class Config:
|
123
|
-
|
115
|
+
UUID_VERSION: int = UUID_VERSION
|
124
116
|
RETRY: RetryConfig = DEFAULT_RETRY_CONFIG
|
125
117
|
TIMED_CALL: TimedFuncCallConfig = DEFAULT_TIMED_FUNC_CALL_CONFIG
|
126
118
|
TIMEZONE: timezone = DEFAULT_TIMEZONE
|
@@ -129,8 +121,8 @@ class Settings:
|
|
129
121
|
BRANCH: BranchConfig = DEFAULT_BRANCH_CONFIG
|
130
122
|
|
131
123
|
class iModel:
|
132
|
-
CHAT:
|
133
|
-
PARSE: iModelConfig =
|
124
|
+
CHAT: iModelConfig = DEFAULT_CHAT_CONFIG
|
125
|
+
PARSE: iModelConfig = DEFAULT_PARSE_CONFIG
|
134
126
|
|
135
127
|
|
136
128
|
# File: autoos/setting.py
|
lionagi/strategies/base.py
CHANGED
@@ -1,15 +1,14 @@
|
|
1
1
|
from typing import ClassVar
|
2
2
|
|
3
|
-
from pydantic import model_validator
|
3
|
+
from pydantic import BaseModel, model_validator
|
4
4
|
|
5
|
-
from lionagi.
|
5
|
+
from lionagi.core.session.types import Branch, Session
|
6
|
+
from lionagi.protocols.operatives.instruct import Instruct, InstructResponse
|
6
7
|
|
7
|
-
from ..protocols.types import BaseLionModel
|
8
|
-
from ..session.types import Branch, Session
|
9
8
|
from .params import StrategyParams
|
10
9
|
|
11
10
|
|
12
|
-
class StrategyExecutor(
|
11
|
+
class StrategyExecutor(BaseModel):
|
13
12
|
"""Base class for different execution strategies.
|
14
13
|
|
15
14
|
Each concrete executor should implement `execute()` to run instructions
|
lionagi/strategies/concurrent.py
CHANGED
@@ -1,6 +1,7 @@
|
|
1
|
-
from lionagi.
|
2
|
-
from lionagi.
|
3
|
-
from lionagi.
|
1
|
+
from lionagi.core.session.types import Branch
|
2
|
+
from lionagi.libs.func.types import alcall
|
3
|
+
from lionagi.libs.parse.types import to_list
|
4
|
+
from lionagi.protocols.operatives.instruct import Instruct, InstructResponse
|
4
5
|
|
5
6
|
from .base import StrategyExecutor
|
6
7
|
|
@@ -1,9 +1,9 @@
|
|
1
1
|
from typing import ClassVar
|
2
2
|
|
3
|
-
from lionagi.
|
4
|
-
from lionagi.
|
3
|
+
from lionagi.libs.func.types import bcall
|
4
|
+
from lionagi.libs.parse.types import to_list
|
5
|
+
from lionagi.protocols.operatives.instruct import Instruct, InstructResponse
|
5
6
|
|
6
|
-
from ..libs.async_utils import bcall
|
7
7
|
from .concurrent import ConcurrentExecutor
|
8
8
|
from .params import ChunkStrategyParams
|
9
9
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
from pydantic import model_validator
|
2
2
|
|
3
|
-
from lionagi.
|
4
|
-
from lionagi.
|
5
|
-
from lionagi.
|
3
|
+
from lionagi.core.session.types import Branch, Session
|
4
|
+
from lionagi.libs.func.types import alcall
|
5
|
+
from lionagi.protocols.operatives.instruct import Instruct, InstructResponse
|
6
6
|
|
7
7
|
from .base import StrategyExecutor
|
8
8
|
from .params import HybridStrategyParams
|
lionagi/strategies/params.py
CHANGED
@@ -2,10 +2,13 @@ from typing import Any, Literal
|
|
2
2
|
|
3
3
|
from pydantic import Field, field_validator, model_validator
|
4
4
|
|
5
|
-
from lionagi.
|
6
|
-
from lionagi.
|
7
|
-
from lionagi.
|
8
|
-
from lionagi.
|
5
|
+
from lionagi.core.models.types import FieldModel, SchemaModel
|
6
|
+
from lionagi.core.session.types import Branch, Session
|
7
|
+
from lionagi.libs.func.types import RCallParams
|
8
|
+
from lionagi.protocols.operatives.instruct import (
|
9
|
+
INSTRUCT_FIELD_MODEL,
|
10
|
+
Instruct,
|
11
|
+
)
|
9
12
|
|
10
13
|
|
11
14
|
class StrategyParams(SchemaModel):
|
lionagi/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.5.
|
1
|
+
__version__ = "0.5.2"
|