grasp_agents 0.5.8__py3-none-any.whl → 0.5.10__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.
- grasp_agents/cloud_llm.py +88 -109
- grasp_agents/litellm/converters.py +4 -2
- grasp_agents/litellm/lite_llm.py +90 -80
- grasp_agents/llm.py +52 -97
- grasp_agents/llm_agent.py +32 -36
- grasp_agents/llm_agent_memory.py +3 -2
- grasp_agents/llm_policy_executor.py +63 -33
- grasp_agents/openai/converters.py +4 -2
- grasp_agents/openai/openai_llm.py +66 -85
- grasp_agents/openai/tool_converters.py +6 -4
- grasp_agents/processors/base_processor.py +18 -10
- grasp_agents/processors/parallel_processor.py +8 -6
- grasp_agents/processors/processor.py +10 -6
- grasp_agents/prompt_builder.py +22 -28
- grasp_agents/run_context.py +1 -1
- grasp_agents/runner.py +1 -1
- grasp_agents/typing/converters.py +3 -1
- grasp_agents/typing/tool.py +13 -5
- grasp_agents/workflow/workflow_processor.py +4 -4
- {grasp_agents-0.5.8.dist-info → grasp_agents-0.5.10.dist-info}/METADATA +12 -13
- {grasp_agents-0.5.8.dist-info → grasp_agents-0.5.10.dist-info}/RECORD +23 -23
- {grasp_agents-0.5.8.dist-info → grasp_agents-0.5.10.dist-info}/WHEEL +0 -0
- {grasp_agents-0.5.8.dist-info → grasp_agents-0.5.10.dist-info}/licenses/LICENSE.md +0 -0
@@ -1,5 +1,5 @@
|
|
1
1
|
import logging
|
2
|
-
from collections.abc import AsyncIterator
|
2
|
+
from collections.abc import AsyncIterator, Sequence
|
3
3
|
from typing import Any, ClassVar, Generic, cast
|
4
4
|
|
5
5
|
from ..memory import MemT
|
@@ -25,7 +25,7 @@ class Processor(BaseProcessor[InT, OutT, MemT, CtxT], Generic[InT, OutT, MemT, C
|
|
25
25
|
in_args: list[InT] | None = None,
|
26
26
|
memory: MemT,
|
27
27
|
call_id: str,
|
28
|
-
ctx: RunContext[CtxT]
|
28
|
+
ctx: RunContext[CtxT],
|
29
29
|
) -> list[OutT]:
|
30
30
|
return cast("list[OutT]", in_args)
|
31
31
|
|
@@ -36,7 +36,7 @@ class Processor(BaseProcessor[InT, OutT, MemT, CtxT], Generic[InT, OutT, MemT, C
|
|
36
36
|
in_args: list[InT] | None = None,
|
37
37
|
memory: MemT,
|
38
38
|
call_id: str,
|
39
|
-
ctx: RunContext[CtxT]
|
39
|
+
ctx: RunContext[CtxT],
|
40
40
|
) -> AsyncIterator[Event[Any]]:
|
41
41
|
outputs = await self._process(
|
42
42
|
chat_inputs=chat_inputs,
|
@@ -58,7 +58,7 @@ class Processor(BaseProcessor[InT, OutT, MemT, CtxT], Generic[InT, OutT, MemT, C
|
|
58
58
|
in_args: InT | list[InT] | None = None,
|
59
59
|
forgetful: bool = False,
|
60
60
|
call_id: str | None = None,
|
61
|
-
ctx: RunContext[CtxT]
|
61
|
+
ctx: RunContext[CtxT],
|
62
62
|
) -> tuple[list[InT] | None, MemT, str]:
|
63
63
|
call_id = self._generate_call_id(call_id)
|
64
64
|
|
@@ -74,10 +74,10 @@ class Processor(BaseProcessor[InT, OutT, MemT, CtxT], Generic[InT, OutT, MemT, C
|
|
74
74
|
return val_in_args, memory, call_id
|
75
75
|
|
76
76
|
def _postprocess(
|
77
|
-
self, outputs: list[OutT], call_id: str, ctx: RunContext[CtxT]
|
77
|
+
self, outputs: list[OutT], call_id: str, ctx: RunContext[CtxT]
|
78
78
|
) -> Packet[OutT]:
|
79
79
|
payloads: list[OutT] = []
|
80
|
-
routing: dict[int,
|
80
|
+
routing: dict[int, Sequence[ProcName] | None] = {}
|
81
81
|
for idx, output in enumerate(outputs):
|
82
82
|
val_output = self._validate_output(output, call_id=call_id)
|
83
83
|
recipients = self._select_recipients(output=val_output, ctx=ctx)
|
@@ -105,6 +105,8 @@ class Processor(BaseProcessor[InT, OutT, MemT, CtxT], Generic[InT, OutT, MemT, C
|
|
105
105
|
call_id: str | None = None,
|
106
106
|
ctx: RunContext[CtxT] | None = None,
|
107
107
|
) -> Packet[OutT]:
|
108
|
+
ctx = RunContext[CtxT](state=None) if ctx is None else ctx # type: ignore
|
109
|
+
|
108
110
|
val_in_args, memory, call_id = self._preprocess(
|
109
111
|
chat_inputs=chat_inputs,
|
110
112
|
in_packet=in_packet,
|
@@ -134,6 +136,8 @@ class Processor(BaseProcessor[InT, OutT, MemT, CtxT], Generic[InT, OutT, MemT, C
|
|
134
136
|
call_id: str | None = None,
|
135
137
|
ctx: RunContext[CtxT] | None = None,
|
136
138
|
) -> AsyncIterator[Event[Any]]:
|
139
|
+
ctx = RunContext[CtxT](state=None) if ctx is None else ctx # type: ignore
|
140
|
+
|
137
141
|
val_in_args, memory, call_id = self._preprocess(
|
138
142
|
chat_inputs=chat_inputs,
|
139
143
|
in_packet=in_packet,
|
grasp_agents/prompt_builder.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import json
|
2
2
|
from collections.abc import Sequence
|
3
|
-
from typing import ClassVar, Generic, Protocol, TypeAlias, TypeVar, final
|
3
|
+
from typing import ClassVar, Generic, Protocol, TypeAlias, TypeVar, cast, final
|
4
4
|
|
5
5
|
from pydantic import BaseModel, TypeAdapter
|
6
6
|
|
@@ -15,13 +15,11 @@ _InT_contra = TypeVar("_InT_contra", contravariant=True)
|
|
15
15
|
|
16
16
|
|
17
17
|
class SystemPromptBuilder(Protocol[CtxT]):
|
18
|
-
def __call__(self, ctx: RunContext[CtxT]
|
18
|
+
def __call__(self, ctx: RunContext[CtxT]) -> str | None: ...
|
19
19
|
|
20
20
|
|
21
21
|
class InputContentBuilder(Protocol[_InT_contra, CtxT]):
|
22
|
-
def __call__(
|
23
|
-
self, in_args: _InT_contra | None, *, ctx: RunContext[CtxT] | None
|
24
|
-
) -> Content: ...
|
22
|
+
def __call__(self, in_args: _InT_contra, ctx: RunContext[CtxT]) -> Content: ...
|
25
23
|
|
26
24
|
|
27
25
|
PromptArgumentType: TypeAlias = str | bool | int | ImageData
|
@@ -45,7 +43,7 @@ class PromptBuilder(AutoInstanceAttributesMixin, Generic[InT, CtxT]):
|
|
45
43
|
self._in_args_type_adapter: TypeAdapter[InT] = TypeAdapter(self._in_type)
|
46
44
|
|
47
45
|
@final
|
48
|
-
def build_system_prompt(self, ctx: RunContext[CtxT]
|
46
|
+
def build_system_prompt(self, ctx: RunContext[CtxT]) -> str | None:
|
49
47
|
if self.system_prompt_builder:
|
50
48
|
return self.system_prompt_builder(ctx=ctx)
|
51
49
|
|
@@ -73,23 +71,19 @@ class PromptBuilder(AutoInstanceAttributesMixin, Generic[InT, CtxT]):
|
|
73
71
|
|
74
72
|
@final
|
75
73
|
def _build_input_content(
|
76
|
-
self,
|
77
|
-
in_args: InT | None = None,
|
78
|
-
ctx: RunContext[CtxT] | None = None,
|
74
|
+
self, in_args: InT | None, ctx: RunContext[CtxT]
|
79
75
|
) -> Content:
|
80
|
-
|
81
|
-
if in_args is not None:
|
82
|
-
val_in_args = self._validate_input_args(in_args=in_args)
|
83
|
-
|
84
|
-
if self.input_content_builder:
|
85
|
-
return self.input_content_builder(in_args=val_in_args, ctx=ctx)
|
86
|
-
|
87
|
-
if val_in_args is None:
|
76
|
+
if in_args is None and self._in_type is not type(None):
|
88
77
|
raise InputPromptBuilderError(
|
89
78
|
proc_name=self._agent_name,
|
90
|
-
message="
|
91
|
-
f"
|
79
|
+
message="Either chat inputs or input arguments must be provided "
|
80
|
+
f"when input type is not None [agent_name={self._agent_name}]",
|
92
81
|
)
|
82
|
+
in_args = cast("InT", in_args)
|
83
|
+
|
84
|
+
val_in_args = self._validate_input_args(in_args)
|
85
|
+
if self.input_content_builder:
|
86
|
+
return self.input_content_builder(in_args=val_in_args, ctx=ctx)
|
93
87
|
|
94
88
|
if issubclass(self._in_type, BaseModel) and isinstance(val_in_args, BaseModel):
|
95
89
|
val_in_args_map = self._format_pydantic_prompt_args(val_in_args)
|
@@ -106,17 +100,17 @@ class PromptBuilder(AutoInstanceAttributesMixin, Generic[InT, CtxT]):
|
|
106
100
|
def build_input_message(
|
107
101
|
self,
|
108
102
|
chat_inputs: LLMPrompt | Sequence[str | ImageData] | None = None,
|
103
|
+
*,
|
109
104
|
in_args: InT | None = None,
|
110
|
-
ctx: RunContext[CtxT]
|
105
|
+
ctx: RunContext[CtxT],
|
111
106
|
) -> UserMessage | None:
|
112
|
-
if chat_inputs is not None
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
if chat_inputs:
|
107
|
+
if chat_inputs is not None:
|
108
|
+
if in_args is not None:
|
109
|
+
raise InputPromptBuilderError(
|
110
|
+
proc_name=self._agent_name,
|
111
|
+
message="Cannot use both chat inputs and input arguments "
|
112
|
+
f"at the same time [agent_name={self._agent_name}]",
|
113
|
+
)
|
120
114
|
if isinstance(chat_inputs, LLMPrompt):
|
121
115
|
return UserMessage.from_text(chat_inputs, name=self._agent_name)
|
122
116
|
return UserMessage.from_content_parts(chat_inputs, name=self._agent_name)
|
grasp_agents/run_context.py
CHANGED
grasp_agents/runner.py
CHANGED
@@ -69,7 +69,9 @@ class Converters(ABC):
|
|
69
69
|
|
70
70
|
@staticmethod
|
71
71
|
@abstractmethod
|
72
|
-
def to_tool(
|
72
|
+
def to_tool(
|
73
|
+
tool: BaseTool[BaseModel, Any, Any], strict: bool | None = None, **kwargs: Any
|
74
|
+
) -> Any:
|
73
75
|
pass
|
74
76
|
|
75
77
|
@staticmethod
|
grasp_agents/typing/tool.py
CHANGED
@@ -48,8 +48,6 @@ class BaseTool(
|
|
48
48
|
name: str
|
49
49
|
description: str
|
50
50
|
|
51
|
-
strict: bool | None = None
|
52
|
-
|
53
51
|
_in_type: type[_InT] = PrivateAttr()
|
54
52
|
_out_type: type[_OutT_co] = PrivateAttr()
|
55
53
|
|
@@ -62,14 +60,24 @@ class BaseTool(
|
|
62
60
|
return self._out_type
|
63
61
|
|
64
62
|
@abstractmethod
|
65
|
-
async def run(
|
63
|
+
async def run(
|
64
|
+
self,
|
65
|
+
inp: _InT,
|
66
|
+
*,
|
67
|
+
call_id: str | None = None,
|
68
|
+
ctx: RunContext[CtxT] | None = None,
|
69
|
+
) -> _OutT_co:
|
66
70
|
pass
|
67
71
|
|
68
72
|
async def __call__(
|
69
|
-
self,
|
73
|
+
self,
|
74
|
+
*,
|
75
|
+
call_id: str | None = None,
|
76
|
+
ctx: RunContext[CtxT] | None = None,
|
77
|
+
**kwargs: Any,
|
70
78
|
) -> _OutT_co:
|
71
79
|
input_args = TypeAdapter(self._in_type).validate_python(kwargs)
|
72
|
-
output = await self.run(input_args, ctx=ctx)
|
80
|
+
output = await self.run(input_args, call_id=call_id, ctx=ctx)
|
73
81
|
|
74
82
|
return TypeAdapter(self._out_type).validate_python(output)
|
75
83
|
|
@@ -21,7 +21,7 @@ class WorkflowProcessor(
|
|
21
21
|
subprocs: Sequence[BaseProcessor[Any, Any, Any, CtxT]],
|
22
22
|
start_proc: BaseProcessor[InT, Any, Any, CtxT],
|
23
23
|
end_proc: BaseProcessor[Any, OutT, Any, CtxT],
|
24
|
-
recipients:
|
24
|
+
recipients: Sequence[ProcName] | None = None,
|
25
25
|
max_retries: int = 0,
|
26
26
|
) -> None:
|
27
27
|
super().__init__(name=name, recipients=recipients, max_retries=max_retries)
|
@@ -57,11 +57,11 @@ class WorkflowProcessor(
|
|
57
57
|
return func
|
58
58
|
|
59
59
|
@property
|
60
|
-
def recipients(self) ->
|
60
|
+
def recipients(self) -> Sequence[ProcName] | None:
|
61
61
|
return self._end_proc.recipients
|
62
62
|
|
63
63
|
@recipients.setter
|
64
|
-
def recipients(self, value:
|
64
|
+
def recipients(self, value: Sequence[ProcName] | None) -> None:
|
65
65
|
if hasattr(self, "_end_proc"):
|
66
66
|
self._end_proc.recipients = value
|
67
67
|
|
@@ -96,7 +96,7 @@ class WorkflowProcessor(
|
|
96
96
|
pass
|
97
97
|
|
98
98
|
@abstractmethod
|
99
|
-
async def run_stream(
|
99
|
+
async def run_stream(
|
100
100
|
self,
|
101
101
|
chat_inputs: Any | None = None,
|
102
102
|
*,
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.4
|
2
2
|
Name: grasp_agents
|
3
|
-
Version: 0.5.
|
3
|
+
Version: 0.5.10
|
4
4
|
Summary: Grasp Agents Library
|
5
5
|
License-File: LICENSE.md
|
6
6
|
Requires-Python: <4,>=3.11.4
|
@@ -37,31 +37,30 @@ Description-Content-Type: text/markdown
|
|
37
37
|
|
38
38
|
## Features
|
39
39
|
|
40
|
-
- Clean formulation of agents as generic entities over
|
41
|
-
- I/O schemas
|
42
|
-
- Memory
|
43
|
-
- Shared context
|
40
|
+
- Clean formulation of agents as generic entities over I/O schemas and shared context.
|
44
41
|
- Transparent implementation of common agentic patterns:
|
45
|
-
- Single-agent loops
|
42
|
+
- Single-agent loops
|
46
43
|
- Workflows (static communication topology), including loops
|
47
44
|
- Agents-as-tools for task delegation
|
48
45
|
- Freeform A2A communication via the in-process actor model
|
49
|
-
-
|
50
|
-
-
|
46
|
+
- Built-in parallel processing with flexible retries and rate limiting.
|
47
|
+
- Support for all popular API providers via LiteLLM.
|
48
|
+
- Granular event streaming with separate events for standard outputs, thinking, and tool calls.
|
49
|
+
- Callbacks via decorators or subclassing for straightforward customisation of agentic loops and context management.
|
51
50
|
|
52
51
|
## Project Structure
|
53
52
|
|
54
|
-
- `
|
55
|
-
- `packet.py`, `packet_pool.py`: Communication management.
|
53
|
+
- `processors/`, `llm_agent.py`: Core processor and agent class implementations.
|
54
|
+
- `packet.py`, `packet_pool.py`, `runner.py`: Communication management.
|
56
55
|
- `llm_policy_executor.py`: LLM actions and tool call loops.
|
57
56
|
- `prompt_builder.py`: Tools for constructing prompts.
|
58
57
|
- `workflow/`: Modules for defining and managing static agent workflows.
|
59
58
|
- `llm.py`, `cloud_llm.py`: LLM integration and base LLM functionalities.
|
60
59
|
- `openai/`: Modules specific to OpenAI API integration.
|
61
|
-
- `
|
60
|
+
- `litellm/`: Modules specific to LiteLLM integration.
|
61
|
+
- `memory.py`, `llm_agent_memory.py`: Basic agent memory management.
|
62
62
|
- `run_context.py`: Shared context management for agent runs.
|
63
63
|
- `usage_tracker.py`: Tracking of API usage and costs.
|
64
|
-
- `costs_dict.yaml`: Dictionary for cost tracking (update if needed).
|
65
64
|
- `rate_limiting/`: Basic rate limiting tools.
|
66
65
|
|
67
66
|
## Quickstart & Installation Variants (UV Package manager)
|
@@ -190,7 +189,7 @@ teacher = LLMAgent[None, Problem, None](
|
|
190
189
|
)
|
191
190
|
|
192
191
|
async def main():
|
193
|
-
ctx = RunContext[None](
|
192
|
+
ctx = RunContext[None](log_messages=True)
|
194
193
|
out = await teacher.run("start", ctx=ctx)
|
195
194
|
print(out.payloads[0])
|
196
195
|
print(ctx.usage_tracker.total_usage)
|
@@ -1,40 +1,40 @@
|
|
1
1
|
grasp_agents/__init__.py,sha256=Z3a_j2Etiap9H6lvE8-PQP_OIGMUcHNPeJAJO12B8kY,1031
|
2
|
-
grasp_agents/cloud_llm.py,sha256=
|
2
|
+
grasp_agents/cloud_llm.py,sha256=_5iQAYL7w49-5oLgx0eycFJRoGSwh38tuFRWMkCxc0Q,13183
|
3
3
|
grasp_agents/costs_dict.yaml,sha256=2MFNWtkv5W5WSCcv1Cj13B1iQLVv5Ot9pS_KW2Gu2DA,2510
|
4
4
|
grasp_agents/errors.py,sha256=K-22TCM1Klhsej47Rg5eTqnGiGPaXgKOpdOZZ7cPipw,4633
|
5
5
|
grasp_agents/generics_utils.py,sha256=5Pw3I9dlnKC2VGqYKC4ZZUO3Z_vTNT-NPFovNfPkl6I,6542
|
6
6
|
grasp_agents/grasp_logging.py,sha256=H1GYhXdQvVkmauFDZ-KDwvVmPQHZUUm9sRqX_ObK2xI,1111
|
7
7
|
grasp_agents/http_client.py,sha256=Es8NXGDkp4Nem7g24-jW0KFGA9Hp_o2Cv3cOvjup-iU,859
|
8
|
-
grasp_agents/llm.py,sha256=
|
9
|
-
grasp_agents/llm_agent.py,sha256=
|
10
|
-
grasp_agents/llm_agent_memory.py,sha256=
|
11
|
-
grasp_agents/llm_policy_executor.py,sha256=
|
8
|
+
grasp_agents/llm.py,sha256=IeV2QpR4AldVP3THzSETEnsaDx3DYz5HM6dkikSpy4o,10684
|
9
|
+
grasp_agents/llm_agent.py,sha256=bkd_MvhQOJsH8CXJO-r2fexH5272bCkNWm8OOOSEf1I,13546
|
10
|
+
grasp_agents/llm_agent_memory.py,sha256=uxyJ1jq0oUgxIh7ysRcorGy1Q1WHosLBvWqjvLT2AUg,1834
|
11
|
+
grasp_agents/llm_policy_executor.py,sha256=JOAnIHZX-_oX1TcgCqRvIFQ6OuPQ4TypSvAxtT4ZGeg,17916
|
12
12
|
grasp_agents/memory.py,sha256=keHuNEZNSxHT9FKpMohHOCNi7UAz_oRIc91IQEuzaWE,1162
|
13
13
|
grasp_agents/packet.py,sha256=EmE-W4ZSMVZoqClECGFe7OGqrT4FSJ8IVGICrdjtdEY,1462
|
14
14
|
grasp_agents/packet_pool.py,sha256=AF7ZMYY1U6ppNLEn6o0R8QXyWmcLQGcju7_TYQpAudg,4443
|
15
15
|
grasp_agents/printer.py,sha256=wVNCaR9mbFKyzYdT8YpYD1JQqRqHdLtdfiZrwYxaM6Y,11132
|
16
|
-
grasp_agents/prompt_builder.py,sha256=
|
17
|
-
grasp_agents/run_context.py,sha256=
|
18
|
-
grasp_agents/runner.py,sha256=
|
16
|
+
grasp_agents/prompt_builder.py,sha256=m8EZBFUOjK63ym9z-ix0R1R8V9hocB0mCNB6EKyeVmk,5829
|
17
|
+
grasp_agents/run_context.py,sha256=7qVs0T5rLvINmtlXqOoyy2Hu9xPzuFDbcVR6R93NF-0,951
|
18
|
+
grasp_agents/runner.py,sha256=JL2wSKahbPYVd56NRB09cwco43sjhZPI4XYFCZyOXOA,5173
|
19
19
|
grasp_agents/usage_tracker.py,sha256=ZQfVUUpG0C89hyPWT_JgXnjQOxoYmumcQ9t-aCfcMo8,3561
|
20
20
|
grasp_agents/utils.py,sha256=qKmGBwrQHw1-BgqRLuGTPKGs3J_zbrpk3nxnP1iZBiQ,6152
|
21
21
|
grasp_agents/litellm/__init__.py,sha256=wD8RZBYokFDfbS9Cs7nO_zKb3w7RIVwEGj7g2D5CJH0,4510
|
22
22
|
grasp_agents/litellm/completion_chunk_converters.py,sha256=J5PPxzoTBqkvKQnCoBxQxJo7Q8Xfl9cbv2GRZox8Cjo,2689
|
23
23
|
grasp_agents/litellm/completion_converters.py,sha256=JQ7XvQwwc-biFqVMcRO61SL5VGs_SkUvAhUz1QD7EmU,2516
|
24
|
-
grasp_agents/litellm/converters.py,sha256=
|
25
|
-
grasp_agents/litellm/lite_llm.py,sha256=
|
24
|
+
grasp_agents/litellm/converters.py,sha256=XjePHii578sXP26Fyhnv0XfwJ3cNTp5PraggTsvcBXo,4778
|
25
|
+
grasp_agents/litellm/lite_llm.py,sha256=2XsPB-BbM-Y2xNxsKmO0JOJOD_UYj6ndGMjfLkGPAK4,8279
|
26
26
|
grasp_agents/litellm/message_converters.py,sha256=PsGLIJEcAeEoluHIh-utEufJ_9WeMYzXkwnR-8jyULQ,2037
|
27
27
|
grasp_agents/openai/__init__.py,sha256=xaRnblUskiLvypIhMe4NRp9dxCG-gNR7dPiugUbPbhE,4717
|
28
28
|
grasp_agents/openai/completion_chunk_converters.py,sha256=3MnMskdlp7ycsggc1ok1XpCHaP4Us2rLYaxImPLw1eI,2573
|
29
29
|
grasp_agents/openai/completion_converters.py,sha256=UlDeQSl0AEFUS-QI5e8rrjfmXZojSYksJGnrXA7DmIk,2528
|
30
30
|
grasp_agents/openai/content_converters.py,sha256=sMsZhoatuL_8t0IdVaGWIVZLB4nyi1ajD61GewQmeY4,2503
|
31
|
-
grasp_agents/openai/converters.py,sha256=
|
31
|
+
grasp_agents/openai/converters.py,sha256=RKOfMbIJmfFQ7ot0RGR6wrdMbR6_L7PB0UZwxwgM88g,4691
|
32
32
|
grasp_agents/openai/message_converters.py,sha256=fhSN81uK51EGbLyM2-f0MvPX_UBrMy7SF3JQPo-dkXg,4686
|
33
|
-
grasp_agents/openai/openai_llm.py,sha256=
|
34
|
-
grasp_agents/openai/tool_converters.py,sha256=
|
35
|
-
grasp_agents/processors/base_processor.py,sha256=
|
36
|
-
grasp_agents/processors/parallel_processor.py,sha256=
|
37
|
-
grasp_agents/processors/processor.py,sha256=
|
33
|
+
grasp_agents/openai/openai_llm.py,sha256=mC73ImgRLd56DLzCbvFvtMyf7wjL6Hhelc7e-UNP2Q0,9715
|
34
|
+
grasp_agents/openai/tool_converters.py,sha256=rNH5t2Wir9nuy8Ei0jaxNuzDaXGqTLmLz3VyrnJhyn0,1196
|
35
|
+
grasp_agents/processors/base_processor.py,sha256=rQncbE6Cih3PoaGEkYQtTYz2PImP__tOaDb7TYLIoJY,10835
|
36
|
+
grasp_agents/processors/parallel_processor.py,sha256=lpJSSmyUzGGDedqPdQ2ygBXwNK8MiEi7VZo-TCzJFeE,7945
|
37
|
+
grasp_agents/processors/processor.py,sha256=DbitqHMQJCMCMTCvSQZQuamjEEC6e7RlN_L-Z4gA8vA,5283
|
38
38
|
grasp_agents/rate_limiting/__init__.py,sha256=KRgtF_E7R3YfA2cpYcFcZ7wycV0pWVJ0xRQC7YhiIEQ,158
|
39
39
|
grasp_agents/rate_limiting/rate_limiter_chunked.py,sha256=BPgkUXvhmZhTpZs2T6uujNFuxH_kYHiISuf6_-eNhUc,5544
|
40
40
|
grasp_agents/rate_limiting/types.py,sha256=PbnNhEAcYedQdIpPJWud8HUVcxa_xZS2RDZu4c5jr40,1003
|
@@ -43,16 +43,16 @@ grasp_agents/typing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
|
|
43
43
|
grasp_agents/typing/completion.py,sha256=PHJ01m7WI2KYQL8w7W2ti6hMsKEZnzYGaxbNcBCc_IE,2782
|
44
44
|
grasp_agents/typing/completion_chunk.py,sha256=eiOcpyMrH4Ws2XnY3_jj2_g396MqA3zV3lHygHfXt4o,17883
|
45
45
|
grasp_agents/typing/content.py,sha256=XFmLpNWkGhkw5JujO6UsYwhzTHkU67PfhzaXH2waLcQ,3659
|
46
|
-
grasp_agents/typing/converters.py,sha256=
|
46
|
+
grasp_agents/typing/converters.py,sha256=VrsqjuC_1IMj9rTOAMPBJ1N0hHY3Z9fx0zySo4Z-xLQ,3020
|
47
47
|
grasp_agents/typing/events.py,sha256=vFq6qRGofY8NuxOG9ZIN2_CnhAqsAodYLD4b4KtAq2U,12620
|
48
48
|
grasp_agents/typing/io.py,sha256=MGEoUjAwKH1AHYglFkKNpHiielw-NFf13Epg3B4Q7Iw,139
|
49
49
|
grasp_agents/typing/message.py,sha256=o7bN84AgrC5Fm3Wx20gqL9ArAMcEtYvnHnXbb04ngCs,3224
|
50
|
-
grasp_agents/typing/tool.py,sha256=
|
50
|
+
grasp_agents/typing/tool.py,sha256=ivUq7FIYq1St3GNzbl_1VDbnKOZkTjQB5dYAgj6GPX0,1913
|
51
51
|
grasp_agents/workflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
52
52
|
grasp_agents/workflow/looped_workflow.py,sha256=WHp9O3Za2sBVfY_BLOdvPvtY20XsjZQaWSO2-oAFvOY,6806
|
53
53
|
grasp_agents/workflow/sequential_workflow.py,sha256=e3BIWzy_2novmEWNwIteyMbrzvl1-evHrTBE3r3SpU8,3648
|
54
|
-
grasp_agents/workflow/workflow_processor.py,sha256=
|
55
|
-
grasp_agents-0.5.
|
56
|
-
grasp_agents-0.5.
|
57
|
-
grasp_agents-0.5.
|
58
|
-
grasp_agents-0.5.
|
54
|
+
grasp_agents/workflow/workflow_processor.py,sha256=DwHz70UOTp9dkbtzH9KE5LkGcT1RdHV7Hdiby0Bu9tw,3535
|
55
|
+
grasp_agents-0.5.10.dist-info/METADATA,sha256=tprOY_Kg0RWdYp5PLA2iQuVcWq5BOLga4uPoJB4UdLI,6998
|
56
|
+
grasp_agents-0.5.10.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
57
|
+
grasp_agents-0.5.10.dist-info/licenses/LICENSE.md,sha256=-nNNdWqGB8gJ2O-peFQ2Irshv5tW5pHKyTcYkwvH7CE,1201
|
58
|
+
grasp_agents-0.5.10.dist-info/RECORD,,
|
File without changes
|
File without changes
|