lionagi 0.0.106__py3-none-any.whl → 0.0.110__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- lionagi/api/__init__.py +2 -1
- lionagi/api/oai_service.py +25 -13
- lionagi/session/__init__.py +3 -1
- lionagi/session/conversation.py +18 -9
- lionagi/session/message.py +38 -14
- lionagi/session/session.py +122 -55
- lionagi/utils/__init__.py +6 -5
- lionagi/utils/api_util.py +91 -45
- lionagi/utils/doc_util.py +69 -26
- lionagi/utils/log_util.py +15 -4
- lionagi/utils/sys_util.py +74 -11
- lionagi/utils/tool_util.py +39 -24
- lionagi/version.py +1 -1
- {lionagi-0.0.106.dist-info → lionagi-0.0.110.dist-info}/METADATA +7 -12
- lionagi-0.0.110.dist-info/RECORD +20 -0
- lionagi/tools/__init__.py +0 -0
- lionagi-0.0.106.dist-info/RECORD +0 -21
- {lionagi-0.0.106.dist-info → lionagi-0.0.110.dist-info}/LICENSE +0 -0
- {lionagi-0.0.106.dist-info → lionagi-0.0.110.dist-info}/WHEEL +0 -0
- {lionagi-0.0.106.dist-info → lionagi-0.0.110.dist-info}/top_level.txt +0 -0
lionagi/utils/sys_util.py
CHANGED
@@ -39,7 +39,9 @@ def _flatten_dict(input: Dict[str, Any], parent_key: str = '',
|
|
39
39
|
|
40
40
|
Parameters:
|
41
41
|
input (Dict[str, Any]): The dictionary to be flattened.
|
42
|
+
|
42
43
|
parent_key (str, optional): Initial key for nested structures. Defaults to ''.
|
44
|
+
|
43
45
|
sep (str, optional): Separator for concatenated key. Defaults to '_'.
|
44
46
|
|
45
47
|
Yields:
|
@@ -77,7 +79,9 @@ def to_flat_dict(input: Dict[str, Any], parent_key: str = '', sep: str = '_') ->
|
|
77
79
|
|
78
80
|
Parameters:
|
79
81
|
input (Dict[str, Any]): The nested dictionary to flatten.
|
82
|
+
|
80
83
|
parent_key (str, optional): Initial key for nested structures. Defaults to ''.
|
84
|
+
|
81
85
|
sep (str, optional): Separator for concatenated keys. Defaults to '_'.
|
82
86
|
|
83
87
|
Returns:
|
@@ -99,6 +103,7 @@ def _flatten_list(input: List[Any], dropna: bool = True) -> Generator[Any, None,
|
|
99
103
|
|
100
104
|
Parameters:
|
101
105
|
input (List[Any]): The list to be flattened.
|
106
|
+
|
102
107
|
dropna (bool, optional): Flag to indicate whether 'None' values should be omitted. Defaults to True.
|
103
108
|
|
104
109
|
Yields:
|
@@ -126,10 +131,17 @@ def to_list(input: Union[Iterable, Any], flatten_dict: bool = False, flat: bool
|
|
126
131
|
|
127
132
|
Parameters:
|
128
133
|
input (Union[Iterable, Any]): The input to convert.
|
134
|
+
|
129
135
|
flatten_dict (bool, optional): Flatten dictionary input. Defaults to False.
|
136
|
+
|
130
137
|
flat (bool, optional): Flatten the output list. Defaults to True.
|
138
|
+
|
131
139
|
dropna (bool, optional): Drop 'None' values during flattening. Defaults to True.
|
132
140
|
|
141
|
+
parent_key (str, optional): The parent key for flattening dictionaries. Defaults to an empty string.
|
142
|
+
|
143
|
+
sep (str, optional): The separator for creating flattened dictionary keys. Defaults to '_'.
|
144
|
+
|
133
145
|
Raises:
|
134
146
|
ValueError: If input is None, callable, or unconvertible to a list.
|
135
147
|
|
@@ -176,9 +188,13 @@ def str_to_num(input: str,
|
|
176
188
|
|
177
189
|
Parameters:
|
178
190
|
input (str): String to search for numeric values.
|
191
|
+
|
179
192
|
upper_bound (Optional[Union[int, float]]): Upper limit for the numeric value. None for no limit.
|
193
|
+
|
180
194
|
lower_bound (Optional[Union[int, float]]): Lower limit for the numeric value. None for no limit.
|
195
|
+
|
181
196
|
num_type (type): Desired type for the numeric value (int or float).
|
197
|
+
|
182
198
|
precision (Optional[int]): Decimal places for rounding if float. None for no rounding.
|
183
199
|
|
184
200
|
Raises:
|
@@ -226,6 +242,7 @@ def make_copy(input: Any, n: int) -> Any:
|
|
226
242
|
|
227
243
|
Parameters:
|
228
244
|
input (Any): The object to be copied.
|
245
|
+
|
229
246
|
n (int): The number of deep copies to create.
|
230
247
|
|
231
248
|
Raises:
|
@@ -255,8 +272,11 @@ def to_temp(input: Any,
|
|
255
272
|
|
256
273
|
Parameters:
|
257
274
|
input (Any): The data to be converted and written to a file.
|
275
|
+
|
258
276
|
flatten_dict (bool, optional): Flatten dictionaries in the input. Defaults to False.
|
277
|
+
|
259
278
|
flat (bool, optional): Flatten lists in the input. Defaults to False.
|
279
|
+
|
260
280
|
dropna (bool, optional): Exclude 'None' values during flattening. Defaults to False.
|
261
281
|
|
262
282
|
Raises:
|
@@ -289,7 +309,9 @@ def to_csv(input: List[Dict[str, Any]],
|
|
289
309
|
|
290
310
|
Parameters:
|
291
311
|
input (List[Dict[str, Any]]): Data to write to the CSV file.
|
312
|
+
|
292
313
|
filepath (str): Path of the output CSV file.
|
314
|
+
|
293
315
|
file_exist_ok (bool, optional): Create the file if it doesn't exist. Defaults to False.
|
294
316
|
|
295
317
|
Raises:
|
@@ -321,6 +343,7 @@ def append_to_jsonl(data: Any, filepath: str) -> None:
|
|
321
343
|
|
322
344
|
Parameters:
|
323
345
|
data (Any): Data to be serialized and appended.
|
346
|
+
|
324
347
|
filepath (str): Path to the jsonl file.
|
325
348
|
|
326
349
|
Example:
|
@@ -345,10 +368,15 @@ def hold_call(input: Any,
|
|
345
368
|
|
346
369
|
Parameters:
|
347
370
|
input (Any): Input to the function.
|
371
|
+
|
348
372
|
func (Callable): Function to execute.
|
373
|
+
|
349
374
|
sleep (int, optional): Time in seconds to wait before calling the function. Defaults to 0.1.
|
375
|
+
|
350
376
|
message (Optional[str], optional): Message to print on exception. Defaults to None.
|
377
|
+
|
351
378
|
ignore_error (bool, optional): If True, ignores exceptions. Defaults to False.
|
379
|
+
|
352
380
|
**kwargs: Additional keyword arguments for the function.
|
353
381
|
|
354
382
|
Returns:
|
@@ -388,10 +416,15 @@ async def ahold_call(input: Any,
|
|
388
416
|
|
389
417
|
Parameters:
|
390
418
|
input (Any): Input to the function.
|
419
|
+
|
391
420
|
func (Callable): Asynchronous function to execute.
|
421
|
+
|
392
422
|
sleep (int, optional): Time in seconds to wait before calling the function. Defaults to 5.
|
423
|
+
|
393
424
|
message (Optional[str], optional): Message to print on exception. Defaults to None.
|
425
|
+
|
394
426
|
ignore_error (bool, optional): If True, ignores exceptions. Defaults to False.
|
427
|
+
|
395
428
|
**kwargs: Additional keyword arguments for the function.
|
396
429
|
|
397
430
|
Returns:
|
@@ -432,9 +465,13 @@ def l_call(input: Any,
|
|
432
465
|
|
433
466
|
Parameters:
|
434
467
|
input (Any): The input to be converted to a list and processed.
|
468
|
+
|
435
469
|
func (Callable): The function to apply to each element of the list.
|
470
|
+
|
436
471
|
flatten_dict (bool, optional): If True, flattens dictionaries in the input. Defaults to False.
|
472
|
+
|
437
473
|
flat (bool, optional): If True, flattens nested lists in the input. Defaults to False.
|
474
|
+
|
438
475
|
dropna (bool, optional): If True, drops None values during flattening. Defaults to True.
|
439
476
|
|
440
477
|
Returns:
|
@@ -469,9 +506,13 @@ async def al_call(input: Any,
|
|
469
506
|
|
470
507
|
Parameters:
|
471
508
|
input (Any): The input to be converted to a list and processed.
|
509
|
+
|
472
510
|
func (Callable): The asynchronous function to apply to each element of the list.
|
511
|
+
|
473
512
|
flatten_dict (bool, optional): If True, flattens dictionaries in the input. Defaults to False.
|
513
|
+
|
474
514
|
flat (bool, optional): If True, flattens nested lists in the input. Defaults to False.
|
515
|
+
|
475
516
|
dropna (bool, optional): If True, drops None values during flattening. Defaults to True.
|
476
517
|
|
477
518
|
Returns:
|
@@ -507,9 +548,13 @@ def m_call(input: Union[Any, List[Any]],
|
|
507
548
|
|
508
549
|
Parameters:
|
509
550
|
input (Union[Any, List[Any]]): The input or list of inputs to be processed.
|
510
|
-
|
551
|
+
|
552
|
+
func (Union[Callable, List[Callable]]): The function or list of functions to apply.
|
553
|
+
|
511
554
|
flatten_dict (bool, optional): Whether to flatten dictionaries in the input. Defaults to False.
|
555
|
+
|
512
556
|
flat (bool, optional): Whether the output list should be flattened. Defaults to True.
|
557
|
+
|
513
558
|
dropna (bool, optional): Whether to drop None values during flattening. Defaults to True.
|
514
559
|
|
515
560
|
Returns:
|
@@ -544,9 +589,13 @@ async def am_call(input: Union[Any, List[Any]],
|
|
544
589
|
|
545
590
|
Parameters:
|
546
591
|
input (Union[Any, List[Any]]): The input or list of inputs to be processed.
|
547
|
-
|
592
|
+
|
593
|
+
func (Union[Callable, List[Callable]]): The function or list of functions to apply.
|
594
|
+
|
548
595
|
flatten_dict (bool, optional): Whether to flatten dictionaries in the input. Defaults to False.
|
596
|
+
|
549
597
|
flat (bool, optional): Whether the output list should be flattened. Defaults to True.
|
598
|
+
|
550
599
|
dropna (bool, optional): Whether to drop None values during flattening. Defaults to True.
|
551
600
|
|
552
601
|
Returns:
|
@@ -584,9 +633,13 @@ def e_call(input: Any,
|
|
584
633
|
|
585
634
|
Parameters:
|
586
635
|
input (Union[Any, List[Any]]): The input or list of inputs to be processed.
|
587
|
-
|
636
|
+
|
637
|
+
func (Union[Callable, List[Callable]]): The function or list of functions to apply.
|
638
|
+
|
588
639
|
flatten_dict (bool, optional): Whether to flatten dictionaries in the input. Defaults to False.
|
640
|
+
|
589
641
|
flat (bool, optional): Whether the output list should be flattened. Defaults to True.
|
642
|
+
|
590
643
|
dropna (bool, optional): Whether to drop None values during flattening. Defaults to True.
|
591
644
|
|
592
645
|
Returns:
|
@@ -599,9 +652,9 @@ def e_call(input: Any,
|
|
599
652
|
[[1], [4], [9]]
|
600
653
|
"""
|
601
654
|
|
602
|
-
|
655
|
+
_f = lambda x, y: m_call(make_copy(x, len(to_list(y))), y,
|
603
656
|
flatten_dict=flatten_dict, flat=flat, dropna=dropna)
|
604
|
-
return to_list([
|
657
|
+
return to_list([_f(inp, func) for inp in to_list(input)], flat=flat)
|
605
658
|
|
606
659
|
async def ae_call(input_: Any,
|
607
660
|
func_: Callable,
|
@@ -616,10 +669,14 @@ async def ae_call(input_: Any,
|
|
616
669
|
of different asynchronous transformations to the same input.
|
617
670
|
|
618
671
|
Parameters:
|
619
|
-
|
620
|
-
|
672
|
+
input_ (Union[Any, List[Any]]): The input or list of inputs to be processed.
|
673
|
+
|
674
|
+
func_ (Union[Callable, List[Callable]]): The function or list of functions to apply.
|
675
|
+
|
621
676
|
flatten_dict (bool, optional): Whether to flatten dictionaries in the input. Defaults to False.
|
677
|
+
|
622
678
|
flat (bool, optional): Whether the output list should be flattened. Defaults to True.
|
679
|
+
|
623
680
|
dropna (bool, optional): Whether to drop None values during flattening. Defaults to True.
|
624
681
|
|
625
682
|
Example:
|
@@ -628,10 +685,10 @@ async def ae_call(input_: Any,
|
|
628
685
|
>>> asyncio.run(ae_call([1, 2, 3], [async_square]))
|
629
686
|
[[1, 4, 9]]
|
630
687
|
"""
|
631
|
-
async def
|
688
|
+
async def _async_f(x, y):
|
632
689
|
return await am_call(make_copy(x, len(to_list(y))), y, flatten_dict=flatten_dict, flat=flat, dropna=dropna)
|
633
690
|
|
634
|
-
tasks = [
|
691
|
+
tasks = [_async_f(inp, func_) for inp in to_list(input_)]
|
635
692
|
return await asyncio.gather(*tasks)
|
636
693
|
|
637
694
|
def get_timestamp() -> str:
|
@@ -670,6 +727,7 @@ def create_id() -> str:
|
|
670
727
|
random_bytes = os.urandom(16)
|
671
728
|
return hashlib.sha256(current_time + random_bytes).hexdigest()[:16]
|
672
729
|
|
730
|
+
|
673
731
|
def create_path(dir: str, filename: str, timestamp: bool = True, dir_exist_ok: bool = True, time_prefix=False) -> str:
|
674
732
|
"""
|
675
733
|
Creates a file path by optionally appending a timestamp to the filename.
|
@@ -677,12 +735,17 @@ def create_path(dir: str, filename: str, timestamp: bool = True, dir_exist_ok: b
|
|
677
735
|
This function constructs a file path by combining a directory, an optional timestamp,
|
678
736
|
and a filename. It also ensures the existence of the directory.
|
679
737
|
|
680
|
-
|
681
|
-
|
738
|
+
Parameters:
|
739
|
+
dir (str): The directory in which the file is to be located.
|
740
|
+
|
682
741
|
filename (str): The name of the file.
|
742
|
+
|
683
743
|
timestamp (bool, optional): If True, appends a timestamp to the filename. Defaults to True.
|
744
|
+
|
684
745
|
dir_exist_ok (bool, optional): If True, creates the directory if it doesn't exist. Defaults to True.
|
685
746
|
|
747
|
+
time_prefix (bool, optional): If True, the timestamp is added as a prefix; otherwise, it's appended. Defaults to False.
|
748
|
+
|
686
749
|
Returns:
|
687
750
|
str: The full path to the file.
|
688
751
|
|
lionagi/utils/tool_util.py
CHANGED
@@ -10,7 +10,8 @@ class ToolManager:
|
|
10
10
|
This class allows the registration of tools and functions, enabling their invocation.
|
11
11
|
|
12
12
|
Attributes:
|
13
|
-
registry (dict):
|
13
|
+
registry (dict):
|
14
|
+
A dictionary storing the registered tools and their corresponding functions.
|
14
15
|
|
15
16
|
Methods:
|
16
17
|
_to_dict(name, function, content=None) -> dict:
|
@@ -25,7 +26,7 @@ class ToolManager:
|
|
25
26
|
invoke(name, args) -> Any:
|
26
27
|
Invoke a registered function with the provided arguments.
|
27
28
|
|
28
|
-
ainvoke(
|
29
|
+
ainvoke(func_call) -> Any:
|
29
30
|
Asynchronously invoke a registered function with the provided arguments.
|
30
31
|
|
31
32
|
_get_function_call(response) -> Tuple[str, dict]:
|
@@ -44,19 +45,21 @@ class ToolManager:
|
|
44
45
|
self.registry = {}
|
45
46
|
|
46
47
|
@staticmethod
|
47
|
-
def _to_dict(name,
|
48
|
+
def _to_dict(name, func, content=None):
|
48
49
|
"""
|
49
50
|
Convert tool information to a dictionary entry.
|
50
51
|
|
51
52
|
Parameters:
|
52
53
|
name (str): The name of the tool.
|
53
|
-
|
54
|
+
|
55
|
+
func (callable): The function associated with the tool.
|
56
|
+
|
54
57
|
content (Optional[str]): Additional content for the tool.
|
55
58
|
|
56
59
|
Returns:
|
57
60
|
dict: A dictionary entry representing the tool.
|
58
61
|
"""
|
59
|
-
return {name: {"function":
|
62
|
+
return {name: {"function": func, "content": content or "none"}}
|
60
63
|
|
61
64
|
def _name_existed(self, name):
|
62
65
|
"""
|
@@ -71,17 +74,23 @@ class ToolManager:
|
|
71
74
|
"""
|
72
75
|
return True if name in self.registry.keys() else False
|
73
76
|
|
74
|
-
def _register_function(self, name,
|
77
|
+
def _register_function(self, name, func, content=None, update=False, new=False, prefix=None, postfix=None):
|
75
78
|
"""
|
76
79
|
Register a function with a specified name in the registry.
|
77
80
|
|
78
81
|
Parameters:
|
79
82
|
name (str): The name of the function.
|
80
|
-
|
83
|
+
|
84
|
+
func (callable): The function to register.
|
85
|
+
|
81
86
|
content (Optional[str]): Additional content for the function.
|
87
|
+
|
82
88
|
update (bool): Whether to update an existing function with the same name.
|
89
|
+
|
83
90
|
new (bool): Whether to create a new registry for an existing function.
|
91
|
+
|
84
92
|
prefix (Optional[str]): A prefix to add to the function name.
|
93
|
+
|
85
94
|
postfix (Optional[str]): A postfix to add to the function name.
|
86
95
|
|
87
96
|
"""
|
@@ -90,7 +99,7 @@ class ToolManager:
|
|
90
99
|
raise ValueError(f"Cannot both update and create new registry for existing function {name} at the same time")
|
91
100
|
|
92
101
|
name = f"{prefix or ''}{name}{postfix or '1'}" if new else name
|
93
|
-
self.registry.update(self._to_dict(name,
|
102
|
+
self.registry.update(self._to_dict(name, func, content))
|
94
103
|
|
95
104
|
def invoke(self, name, kwargs):
|
96
105
|
"""
|
@@ -98,6 +107,7 @@ class ToolManager:
|
|
98
107
|
|
99
108
|
Parameters:
|
100
109
|
name (str): The name of the function to invoke.
|
110
|
+
|
101
111
|
kwargs (dict): The arguments to pass to the function.
|
102
112
|
|
103
113
|
Returns:
|
@@ -111,25 +121,25 @@ class ToolManager:
|
|
111
121
|
else:
|
112
122
|
raise ValueError(f"Function {name} is not registered.")
|
113
123
|
|
114
|
-
async def ainvoke(self,
|
124
|
+
async def ainvoke(self, func_call):
|
115
125
|
"""
|
116
126
|
Asynchronously invoke a registered function with the provided arguments.
|
117
127
|
|
118
128
|
Parameters:
|
119
|
-
|
120
|
-
kwargs (dict): The arguments to pass to the function.
|
129
|
+
func_call (Tuple[str, dict]): The name of the function and the arguments to pass.
|
121
130
|
|
122
131
|
Returns:
|
123
132
|
Any: The result of invoking the function asynchronously.
|
124
133
|
|
125
134
|
"""
|
135
|
+
name, kwargs = func_call
|
126
136
|
if self._name_existed(name):
|
127
|
-
|
137
|
+
func = self.registry[name]["function"]
|
128
138
|
try:
|
129
|
-
if asyncio.iscoroutinefunction(
|
130
|
-
return await
|
139
|
+
if asyncio.iscoroutinefunction(func):
|
140
|
+
return await func(**kwargs)
|
131
141
|
else:
|
132
|
-
return
|
142
|
+
return func(**kwargs)
|
133
143
|
except Exception as e:
|
134
144
|
raise ValueError(f"Error when invoking function {name} with arguments {kwargs} with error message {e}")
|
135
145
|
else:
|
@@ -141,22 +151,20 @@ class ToolManager:
|
|
141
151
|
Extract function name and arguments from a response JSON.
|
142
152
|
|
143
153
|
Parameters:
|
144
|
-
response (
|
154
|
+
response (dict): The JSON response containing function information.
|
145
155
|
|
146
156
|
Returns:
|
147
157
|
Tuple[str, dict]: The function name and its arguments.
|
148
158
|
"""
|
149
159
|
try:
|
150
|
-
out = json.loads(response)
|
151
|
-
func =
|
152
|
-
args = json.loads(
|
160
|
+
# out = json.loads(response)
|
161
|
+
func = response['function'][5:]
|
162
|
+
args = json.loads(response['arguments'])
|
153
163
|
return (func, args)
|
154
164
|
except:
|
155
165
|
try:
|
156
|
-
|
157
|
-
|
158
|
-
func = out['recipient_name'].split('.')[-1]
|
159
|
-
args = out['parameters']
|
166
|
+
func = response['recipient_name'].split('.')[-1]
|
167
|
+
args = response['parameters']
|
160
168
|
return (func, args)
|
161
169
|
except:
|
162
170
|
raise ValueError('response is not a valid function call')
|
@@ -168,6 +176,7 @@ class ToolManager:
|
|
168
176
|
|
169
177
|
Parameters:
|
170
178
|
tool (dict): The tool information.
|
179
|
+
|
171
180
|
func (callable): The function associated with the tool.
|
172
181
|
|
173
182
|
Returns:
|
@@ -183,12 +192,18 @@ class ToolManager:
|
|
183
192
|
|
184
193
|
Parameters:
|
185
194
|
tools (list): The list of tool information dictionaries.
|
195
|
+
|
186
196
|
functions (list): The list of corresponding functions.
|
197
|
+
|
187
198
|
update (bool): Whether to update existing functions.
|
199
|
+
|
188
200
|
new (bool): Whether to create new registries for existing functions.
|
201
|
+
|
189
202
|
prefix (Optional[str]): A prefix to add to the function names.
|
203
|
+
|
190
204
|
postfix (Optional[str]): A postfix to add to the function names.
|
191
205
|
|
192
206
|
"""
|
193
207
|
funcs = l_call(range(len(tools)), lambda i: self._from_tool(tools[i], functions[i]))
|
194
|
-
l_call(range(len(tools)), lambda i: self._register_function(funcs[i][0], funcs[i][1], update=update, new=new, prefix=prefix, postfix=postfix))
|
208
|
+
l_call(range(len(tools)), lambda i: self._register_function(funcs[i][0], funcs[i][1], update=update, new=new, prefix=prefix, postfix=postfix))
|
209
|
+
|
lionagi/version.py
CHANGED
@@ -1 +1 @@
|
|
1
|
-
__version__ = "0.0.
|
1
|
+
__version__ = "0.0.110"
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: lionagi
|
3
|
-
Version: 0.0.
|
3
|
+
Version: 0.0.110
|
4
4
|
Summary: Towards automated general intelligence.
|
5
5
|
Author: HaiyangLi
|
6
6
|
Author-email: Haiyang Li <ocean@lionagi.ai>
|
@@ -222,18 +222,13 @@ Requires-Dist: httpx ==0.25.1
|
|
222
222
|
|
223
223
|
![PyPI - Version](https://img.shields.io/pypi/v/lionagi?labelColor=233476aa&color=231fc935) ![PyPI - Downloads](https://img.shields.io/pypi/dm/lionagi?labelColor=233476aa&color=231fc935) ![GitHub License](https://img.shields.io/github/license/lion-agi/lionagi?labelColor=233476aa&color=231fc935)
|
224
224
|
|
225
|
-
|
226
|
-
|
227
|
-
- PyPI: https://pypi.org/project/lionagi/
|
228
|
-
- Documentation: https://lionagi.readthedocs.io/en/latest/ (still a lot TODO)
|
229
|
-
- Website: TODO
|
230
|
-
- Discord: [Join Our Discord](https://discord.gg/7RGWqpSxze)
|
225
|
+
[PyPI](https://pypi.org/project/lionagi/) | [Documentation](https://lionagi.readthedocs.io/en/latest/) | [Website](https://www.lionagi.ai) | [Discord](https://discord.gg/7RGWqpSxze)
|
231
226
|
|
232
227
|
|
233
228
|
# LionAGI
|
234
229
|
**Towards Automated General Intelligence**
|
235
230
|
|
236
|
-
LionAGI is a Python
|
231
|
+
LionAGI is a Python intelligent agent framework that combines data manipulation with AI tools, aiming to simplify the integration of advanced machine learning tools, such as Large Language Models (i.e. OpenAI's GPT), with production-level data-centric projects.
|
237
232
|
|
238
233
|
Install LionAGI with pip:
|
239
234
|
|
@@ -244,13 +239,13 @@ Download the `.env_template` file, input your OPENAI_API_KEY, save the file, ren
|
|
244
239
|
|
245
240
|
### Features
|
246
241
|
|
247
|
-
- Robust performance. LionAGI is written in almost pure python. With minimum external dependency (aiohttp
|
242
|
+
- Robust performance. LionAGI is written in almost pure python. With minimum external dependency (`aiohttp`, `httpx`, `python-dotenv`, `tiktoken`)
|
248
243
|
- Efficient data operations for reading, chunking, binning, writing, storing and managing data.
|
249
|
-
- Fast interaction with LLM services like OpenAI with configurable rate limiting concurrent API calls for maximum throughput.
|
250
|
-
- Create a production ready LLM application in hours
|
244
|
+
- Fast interaction with LLM services like OpenAI with **configurable rate limiting concurrent API calls** for maximum throughput.
|
245
|
+
- Create a production ready LLM application **in hours**. Intuitive workflow management to streamline and expedite the process from idea to market.
|
251
246
|
|
252
247
|
---
|
253
|
-
Currently, LionAGI only natively support OpenAI API calls, support for other LLM providers as well as open source models will be integrated in future releases. LionAGI is designed to be async only, please check python documentation [here](https://docs.python.org/3/library/asyncio.html)
|
248
|
+
Currently, LionAGI only natively support OpenAI API calls, support for other LLM providers as well as open source models will be integrated in future releases. LionAGI is designed to be async only, please check python official documentation on how `async` work: [here](https://docs.python.org/3/library/asyncio.html)
|
254
249
|
|
255
250
|
|
256
251
|
**Notice**:
|
@@ -0,0 +1,20 @@
|
|
1
|
+
lionagi/__init__.py,sha256=2Rko3tw94ZFVN_GSvcxAY1O77FxswcaMxNHKH5Bj7jc,788
|
2
|
+
lionagi/version.py,sha256=00B0bSjQW8FClEUTZrcxxlOoilJS1Cz7oACh4nBKyM4,24
|
3
|
+
lionagi/api/__init__.py,sha256=PF-fWsB0axACGDbm8FluZgDQMyQf3PUUJ1tIXW535TQ,178
|
4
|
+
lionagi/api/oai_config.py,sha256=yhyZ4aEaF6r3XBbhxI47r8CL2-amc-4IKJhbXv2W9CM,356
|
5
|
+
lionagi/api/oai_service.py,sha256=mxsMlg__Ck4kNtzoH6bTkgOBu67RTEmQAX5UTvubA6Y,11283
|
6
|
+
lionagi/session/__init__.py,sha256=qAf0IAA2D1ZhwvRopSgi8X13DH4Y0E5HaA2DVr6FxG0,152
|
7
|
+
lionagi/session/conversation.py,sha256=5EePoSVIcyaZJEtkNxv1yCFby_3_SLx5AmaSxS9pwI8,4058
|
8
|
+
lionagi/session/message.py,sha256=L4QhTvay-xqL_PWWzr_lTig70cr7zEc5YjONILmAoWU,6504
|
9
|
+
lionagi/session/session.py,sha256=Kt4Ks5CCfwdI5cobPWzgi1LiGpjKAFAt5lsFkoM1-ac,14604
|
10
|
+
lionagi/utils/__init__.py,sha256=e5aEzyHofUYZ8olcyHxq7wqTGRsRZwag3vyZ0T4_ByQ,842
|
11
|
+
lionagi/utils/api_util.py,sha256=Mnk5DdY1DlixI_365Q3xl1oDmSz0zY-F3IhXsCbW4EQ,15230
|
12
|
+
lionagi/utils/doc_util.py,sha256=ZEuLKzc3EH692FW1LXRXBHgextMfb1OaLE3z_NhBBT0,12882
|
13
|
+
lionagi/utils/log_util.py,sha256=mfLmvjv4hvTYMel46tpKJyqLbj1PZimCgKigz48osZY,3158
|
14
|
+
lionagi/utils/sys_util.py,sha256=q4I_d61Zwe-WvukNoa53Gd8ycDcTpfOhw3yER8ZoiCg,28449
|
15
|
+
lionagi/utils/tool_util.py,sha256=0mWGW_rfUPTay_L05dckGzEXdg4ZdhFyGA1lve9tnj8,7410
|
16
|
+
lionagi-0.0.110.dist-info/LICENSE,sha256=TBnSyG8fs_tMRtK805GzA1cIyExleKyzoN_kuVxT9IY,11358
|
17
|
+
lionagi-0.0.110.dist-info/METADATA,sha256=F2tKrl8Z0kjVHJ2bZ2Vu_DDqPnxfL-7wUGjQQI5h61Y,17414
|
18
|
+
lionagi-0.0.110.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
19
|
+
lionagi-0.0.110.dist-info/top_level.txt,sha256=szvch_d2jE1Lu9ZIKsl26Ll6BGfYfbOgt5lm-UpFSo4,8
|
20
|
+
lionagi-0.0.110.dist-info/RECORD,,
|
lionagi/tools/__init__.py
DELETED
File without changes
|
lionagi-0.0.106.dist-info/RECORD
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
lionagi/__init__.py,sha256=2Rko3tw94ZFVN_GSvcxAY1O77FxswcaMxNHKH5Bj7jc,788
|
2
|
-
lionagi/version.py,sha256=PNgUABlGb7ny9DJoPWFQ_4l3TkVF8MMbJNWWeHy9dGY,24
|
3
|
-
lionagi/api/__init__.py,sha256=RcmOxPnbaj5R6JYqQzQZ67KyVByJfyUw6QSw22KSo8g,134
|
4
|
-
lionagi/api/oai_config.py,sha256=yhyZ4aEaF6r3XBbhxI47r8CL2-amc-4IKJhbXv2W9CM,356
|
5
|
-
lionagi/api/oai_service.py,sha256=ctX4k3du_sl52n2LilSxXGHdce-igHXtEfpB6RrKbwQ,11209
|
6
|
-
lionagi/session/__init__.py,sha256=hbM6VwWz0Oh-Vld79JDFo5eYaCIqAn_OswmLiT0z4UA,58
|
7
|
-
lionagi/session/conversation.py,sha256=SOZK8c6P48GqbXTnSiHbB9mROo6VrLwhdD_CHGagQfM,4069
|
8
|
-
lionagi/session/message.py,sha256=R2J5uXuDkMYGxjUKD0fJIdummlsZccId7nw4V8li5Ro,6217
|
9
|
-
lionagi/session/session.py,sha256=_1kAijUrclzKhqZfGxTAuJ55qEhGcORJe2vpRkfoU9w,12904
|
10
|
-
lionagi/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
11
|
-
lionagi/utils/__init__.py,sha256=jTZigmOboszESjWr9dP8PKtZ8XF_RqVd4Ni8s-GkaVs,760
|
12
|
-
lionagi/utils/api_util.py,sha256=WE51kMpKzmBwRqD0dkzxAMWzK04_k_5dth2kiOjVkMA,14837
|
13
|
-
lionagi/utils/doc_util.py,sha256=uT2paXguEs26kkW7oe2rR3CozQmpP2P9eJJdnZ9uM_E,12338
|
14
|
-
lionagi/utils/log_util.py,sha256=qbmaZxiX_bKY-LLaZcpMbTwi3aeBcK9-Lc93vkLIBuk,3103
|
15
|
-
lionagi/utils/sys_util.py,sha256=K4dumJ0th082RITpoz_F_eUw-OwkaLOz-BHoezuxwlU,28045
|
16
|
-
lionagi/utils/tool_util.py,sha256=HxBkHAu7Ema-HTmfRgnD4k4jyBJdsKd6ZiedosFwSDU,7479
|
17
|
-
lionagi-0.0.106.dist-info/LICENSE,sha256=TBnSyG8fs_tMRtK805GzA1cIyExleKyzoN_kuVxT9IY,11358
|
18
|
-
lionagi-0.0.106.dist-info/METADATA,sha256=50DYFq9K5kPlSKKmovP-a1z-12q0Lj4N9Sngcj0fFKE,17370
|
19
|
-
lionagi-0.0.106.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
20
|
-
lionagi-0.0.106.dist-info/top_level.txt,sha256=szvch_d2jE1Lu9ZIKsl26Ll6BGfYfbOgt5lm-UpFSo4,8
|
21
|
-
lionagi-0.0.106.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|