lionagi 0.0.208__py3-none-any.whl → 0.0.210__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 +4 -6
- lionagi/api_service/base_endpoint.py +65 -0
- lionagi/api_service/base_rate_limiter.py +121 -0
- lionagi/api_service/base_service.py +146 -0
- lionagi/api_service/chat_completion.py +6 -0
- lionagi/api_service/embeddings.py +6 -0
- lionagi/api_service/payload_package.py +47 -0
- lionagi/api_service/status_tracker.py +29 -0
- lionagi/core/__init__.py +5 -9
- lionagi/core/branch.py +1191 -0
- lionagi/core/flow.py +423 -0
- lionagi/core/{instruction_set/instruction_set.py → instruction_set.py} +3 -3
- lionagi/core/session.py +872 -0
- lionagi/schema/__init__.py +5 -8
- lionagi/schema/base_schema.py +821 -0
- lionagi/{_services → services}/base_service.py +4 -4
- lionagi/{_services → services}/oai.py +4 -4
- lionagi/structures/graph.py +1 -1
- lionagi/structures/relationship.py +1 -1
- lionagi/structures/structure.py +1 -1
- lionagi/tools/tool_manager.py +0 -163
- lionagi/tools/tool_util.py +2 -1
- lionagi/utils/__init__.py +7 -14
- lionagi/utils/api_util.py +63 -2
- lionagi/utils/core_utils.py +338 -0
- lionagi/utils/sys_util.py +3 -3
- lionagi/version.py +1 -1
- {lionagi-0.0.208.dist-info → lionagi-0.0.210.dist-info}/METADATA +28 -29
- lionagi-0.0.210.dist-info/RECORD +56 -0
- lionagi/_services/anthropic.py +0 -79
- lionagi/_services/anyscale.py +0 -0
- lionagi/_services/azure.py +0 -1
- lionagi/_services/bedrock.py +0 -0
- lionagi/_services/everlyai.py +0 -0
- lionagi/_services/gemini.py +0 -0
- lionagi/_services/gpt4all.py +0 -0
- lionagi/_services/huggingface.py +0 -0
- lionagi/_services/litellm.py +0 -33
- lionagi/_services/localai.py +0 -0
- lionagi/_services/openllm.py +0 -0
- lionagi/_services/openrouter.py +0 -44
- lionagi/_services/perplexity.py +0 -0
- lionagi/_services/predibase.py +0 -0
- lionagi/_services/rungpt.py +0 -0
- lionagi/_services/vllm.py +0 -0
- lionagi/_services/xinference.py +0 -0
- lionagi/agents/planner.py +0 -1
- lionagi/agents/prompter.py +0 -1
- lionagi/agents/scorer.py +0 -1
- lionagi/agents/summarizer.py +0 -1
- lionagi/agents/validator.py +0 -1
- lionagi/bridge/__init__.py +0 -22
- lionagi/bridge/langchain.py +0 -195
- lionagi/bridge/llama_index.py +0 -266
- lionagi/core/branch/__init__.py +0 -0
- lionagi/core/branch/branch.py +0 -841
- lionagi/core/branch/cluster.py +0 -1
- lionagi/core/branch/conversation.py +0 -787
- lionagi/core/core_util.py +0 -0
- lionagi/core/flow/__init__.py +0 -0
- lionagi/core/flow/flow.py +0 -19
- lionagi/core/flow/flow_util.py +0 -62
- lionagi/core/instruction_set/__init__.py +0 -0
- lionagi/core/messages/__init__.py +0 -0
- lionagi/core/sessions/__init__.py +0 -0
- lionagi/core/sessions/session.py +0 -504
- lionagi/datastores/__init__.py +0 -1
- lionagi/datastores/chroma.py +0 -1
- lionagi/datastores/deeplake.py +0 -1
- lionagi/datastores/elasticsearch.py +0 -1
- lionagi/datastores/lantern.py +0 -1
- lionagi/datastores/pinecone.py +0 -1
- lionagi/datastores/postgres.py +0 -1
- lionagi/datastores/qdrant.py +0 -1
- lionagi/loaders/__init__.py +0 -18
- lionagi/loaders/chunker.py +0 -166
- lionagi/loaders/load_util.py +0 -240
- lionagi/loaders/reader.py +0 -122
- lionagi/models/__init__.py +0 -0
- lionagi/models/base_model.py +0 -0
- lionagi/models/imodel.py +0 -53
- lionagi/schema/async_queue.py +0 -158
- lionagi/schema/base_condition.py +0 -1
- lionagi/schema/base_node.py +0 -422
- lionagi/schema/base_tool.py +0 -44
- lionagi/schema/data_logger.py +0 -126
- lionagi/schema/data_node.py +0 -88
- lionagi/schema/status_tracker.py +0 -37
- lionagi/tests/test_utils/test_encrypt_util.py +0 -323
- lionagi/utils/encrypt_util.py +0 -283
- lionagi/utils/url_util.py +0 -55
- lionagi-0.0.208.dist-info/RECORD +0 -106
- lionagi/{agents → api_service}/__init__.py +0 -0
- lionagi/core/{branch/branch_manager.py → branch_manager.py} +0 -0
- lionagi/core/{messages/messages.py → messages.py} +3 -3
- /lionagi/{_services → services}/__init__.py +0 -0
- /lionagi/{_services → services}/mistralai.py +0 -0
- /lionagi/{_services → services}/mlx_service.py +0 -0
- /lionagi/{_services → services}/ollama.py +0 -0
- /lionagi/{_services → services}/services.py +0 -0
- /lionagi/{_services → services}/transformers.py +0 -0
- {lionagi-0.0.208.dist-info → lionagi-0.0.210.dist-info}/LICENSE +0 -0
- {lionagi-0.0.208.dist-info → lionagi-0.0.210.dist-info}/WHEEL +0 -0
- {lionagi-0.0.208.dist-info → lionagi-0.0.210.dist-info}/top_level.txt +0 -0
lionagi/core/core_util.py
DELETED
File without changes
|
lionagi/core/flow/__init__.py
DELETED
File without changes
|
lionagi/core/flow/flow.py
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
"""async def critic_workflow():
|
2
|
-
|
3
|
-
@ cd.max_concurrency(limit=3)
|
4
|
-
async def run_critic_stage(critic_idx=None, step_num=None, outs=None, max_num_tool_uses=5):
|
5
|
-
|
6
|
-
async def inner_func_():
|
7
|
-
critic_ = f"critic{critic_idx}"
|
8
|
-
name_ = li.nget(critics, [critic_, "name"])
|
9
|
-
tool = li.nget(critics, [critic_, "tool"])
|
10
|
-
instruction_ = li.nget(critics, [critic_, f"step{step_num}"])
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
out = await researcher.auto_followup(branch=name_, instruction=instruction_, tools=tool, num=max_num_tool_uses)
|
15
|
-
add_name_to_messages(name_)
|
16
|
-
last_response = last_response_row(df=researcher.branches[name_].messages, name_=name_)
|
17
|
-
outs.append(last_response)
|
18
|
-
|
19
|
-
return out"""
|
lionagi/core/flow/flow_util.py
DELETED
@@ -1,62 +0,0 @@
|
|
1
|
-
# from .sessions import Session
|
2
|
-
|
3
|
-
# def get_config(temperature, max_tokens, key_scheme, n):
|
4
|
-
# f = lambda i:{
|
5
|
-
# "temperature": temperature[i],
|
6
|
-
# "max_tokens": max_tokens[i],
|
7
|
-
# }
|
8
|
-
# return {
|
9
|
-
# "key": f"{key_scheme}{n+1}",
|
10
|
-
# "config": f(n)
|
11
|
-
# }
|
12
|
-
|
13
|
-
# async def run_workflow(
|
14
|
-
# session, prompts, temperature, max_tokens,
|
15
|
-
# key_scheme, num_prompts, context
|
16
|
-
# ):
|
17
|
-
# for i in range(num_prompts):
|
18
|
-
# key_, config_ = get_config(temperature, max_tokens, key_scheme, i)
|
19
|
-
# if i == 0:
|
20
|
-
# await session.initiate(instruction=prompts[key_], context=context, **config_)
|
21
|
-
# else:
|
22
|
-
# await session.followup(instruction=prompts[key_], **config_)
|
23
|
-
|
24
|
-
# return session
|
25
|
-
|
26
|
-
# async def run_auto_workflow(
|
27
|
-
# session, prompts, temperature, max_tokens,
|
28
|
-
# key_scheme, num_prompts, context
|
29
|
-
# ):
|
30
|
-
# for i in range(num_prompts):
|
31
|
-
# key_, config_ = get_config(temperature, max_tokens, key_scheme, i)
|
32
|
-
# if i == 0:
|
33
|
-
# await session.initiate(instruction=prompts[key_], context=context, **config_)
|
34
|
-
# else:
|
35
|
-
# await session.auto_followup(instruction=prompts[key_], **config_)
|
36
|
-
|
37
|
-
# return session
|
38
|
-
|
39
|
-
# async def run_session(
|
40
|
-
# prompts, dir, llmconfig, key_scheme, num_prompts,
|
41
|
-
# temperature, max_tokens, type_=None, tools=None
|
42
|
-
# ):
|
43
|
-
# prompts_ = prompts.copy()
|
44
|
-
# session = Session(
|
45
|
-
# system=prompts_.pop('system', 'You are a helpful assistant'),
|
46
|
-
# dir = dir,
|
47
|
-
# llmconfig = llmconfig
|
48
|
-
# )
|
49
|
-
# if tools:
|
50
|
-
# session.register_tools(tools)
|
51
|
-
# if type_ is None:
|
52
|
-
# session = await run_workflow(
|
53
|
-
# session, prompts_, temperature, max_tokens,
|
54
|
-
# key_scheme=key_scheme, num_prompts=num_prompts
|
55
|
-
# )
|
56
|
-
# elif type_ == 'auto':
|
57
|
-
# session = await run_auto_workflow(
|
58
|
-
# session, prompts_, temperature, max_tokens,
|
59
|
-
# key_scheme=key_scheme, num_prompts=num_prompts
|
60
|
-
# )
|
61
|
-
|
62
|
-
# return session
|
File without changes
|
File without changes
|
File without changes
|
lionagi/core/sessions/session.py
DELETED
@@ -1,504 +0,0 @@
|
|
1
|
-
import pandas as pd
|
2
|
-
|
3
|
-
from typing import Any, List, Union, Dict, Optional, Callable, Tuple
|
4
|
-
from dotenv import load_dotenv
|
5
|
-
|
6
|
-
from lionagi.schema import Tool
|
7
|
-
from lionagi._services.oai import OpenAIService
|
8
|
-
from ..messages.messages import System, Instruction
|
9
|
-
from ..branch.branch import Branch
|
10
|
-
from ..branch.branch_manager import BranchManager
|
11
|
-
|
12
|
-
load_dotenv()
|
13
|
-
|
14
|
-
|
15
|
-
class Session:
|
16
|
-
"""
|
17
|
-
Manages sessions with conversation branches, tool management, and interaction logging.
|
18
|
-
|
19
|
-
This class orchestrates the handling of different conversation branches, enabling distinct conversational contexts to coexist within a single session. It facilitates the integration with external services for processing chat completions, tool management, and the logging of session activities.
|
20
|
-
|
21
|
-
Attributes:
|
22
|
-
branches (Dict[str, Branch]): Maps branch names to Branch instances.
|
23
|
-
default_branch (Branch): The primary branch for the session.
|
24
|
-
default_branch_name (str): Identifier for the default branch.
|
25
|
-
llmconfig (Dict[str, Any]): Configurations for language model interactions.
|
26
|
-
service (OpenAIService): Interface for external service interactions.
|
27
|
-
"""
|
28
|
-
def __init__(
|
29
|
-
self,
|
30
|
-
system: Optional[Union[str, System]] = None,
|
31
|
-
sender: Optional[str] = None,
|
32
|
-
llmconfig: Optional[Dict[str, Any]] = None,
|
33
|
-
service: OpenAIService = None,
|
34
|
-
branches: Optional[Dict[str, Branch]] = None,
|
35
|
-
default_branch: Optional[Branch] = None,
|
36
|
-
default_branch_name: str = 'main',
|
37
|
-
):
|
38
|
-
"""
|
39
|
-
Initializes a session with optional settings for branches, service, and language model configurations.
|
40
|
-
|
41
|
-
Args:
|
42
|
-
system (Optional[Union[str, System]]): Initial system message or configuration.
|
43
|
-
sender (Optional[str]): Identifier for the sender of the system message.
|
44
|
-
llmconfig (Optional[Dict[str, Any]]): Language model configuration settings.
|
45
|
-
service (OpenAIService): External service for chat completions and other operations.
|
46
|
-
branches (Optional[Dict[str, Branch]]): Predefined conversation branches.
|
47
|
-
default_branch (Optional[Branch]): Preselected default branch for the session.
|
48
|
-
default_branch_name (str): Name for the default branch, defaults to 'main'.
|
49
|
-
"""
|
50
|
-
|
51
|
-
self.branches = branches if isinstance(branches, dict) else {}
|
52
|
-
if service is None:
|
53
|
-
service = OpenAIService()
|
54
|
-
|
55
|
-
self._setup_default_branch(
|
56
|
-
default_branch, default_branch_name, service, llmconfig, system, sender)
|
57
|
-
|
58
|
-
self._verify_default_branch()
|
59
|
-
self.branch_manager = BranchManager(self.branches)
|
60
|
-
|
61
|
-
def new_branch(
|
62
|
-
self,
|
63
|
-
branch_name: str,
|
64
|
-
dir: Optional[str] = None,
|
65
|
-
messages: Optional[pd.DataFrame] = None,
|
66
|
-
tools: Optional[Union[Tool, List[Tool]]] = None,
|
67
|
-
system: Optional[Union[str, System]] = None,
|
68
|
-
sender: Optional[str] = None,
|
69
|
-
service: Optional[OpenAIService] = None,
|
70
|
-
llmconfig: Optional[Dict] = None,
|
71
|
-
) -> None:
|
72
|
-
"""
|
73
|
-
Creates a new branch within the session.
|
74
|
-
|
75
|
-
Args:
|
76
|
-
branch_name (str): Name for the new branch.
|
77
|
-
dir (Optional[str]): Path for storing branch-related logs.
|
78
|
-
messages (Optional[pd.DataFrame]): Initial set of messages for the branch.
|
79
|
-
tools (Optional[Union[Tool, List[Tool]]]): Tools to register in the new branch.
|
80
|
-
system (Optional[Union[str, System]]): System message or configuration for the branch.
|
81
|
-
sender (Optional[str]): Identifier for the sender of the initial message.
|
82
|
-
service (Optional[OpenAIService]): Service interface specific to the branch.
|
83
|
-
llmconfig (Optional[Dict[str, Any]]): Language model configurations for the branch.
|
84
|
-
|
85
|
-
Raises:
|
86
|
-
ValueError: If the branch name already exists within the session.
|
87
|
-
"""
|
88
|
-
if branch_name in self.branches.keys():
|
89
|
-
raise ValueError(f'Invalid new branch name {branch_name}. Already existed.')
|
90
|
-
new_ = Branch(name=branch_name, dir=dir, messages=messages, service=service, llmconfig=llmconfig)
|
91
|
-
if system:
|
92
|
-
new_.add_message(system=system, sender=sender)
|
93
|
-
if tools:
|
94
|
-
new_.register_tools(tools=tools)
|
95
|
-
self.branches[branch_name] = new_
|
96
|
-
|
97
|
-
self.branch_manager.sources[branch_name] = new_
|
98
|
-
self.branch_manager.requests[branch_name] = {}
|
99
|
-
|
100
|
-
def get_branch(
|
101
|
-
self,
|
102
|
-
branch: Optional[Union[Branch, str]] = None,
|
103
|
-
get_name: bool = False
|
104
|
-
) -> Union[Branch, Tuple[Branch, str]]:
|
105
|
-
"""
|
106
|
-
Retrieves a branch from the session by name or as a Branch object.
|
107
|
-
|
108
|
-
If no branch is specified, returns the default branch. Optionally, can also return the branch's name.
|
109
|
-
|
110
|
-
Args:
|
111
|
-
branch (Optional[Union[Branch, str]]): The branch name or Branch object to retrieve. Defaults to None, which refers to the default branch.
|
112
|
-
get_name (bool): If True, also returns the name of the branch alongside the Branch object.
|
113
|
-
|
114
|
-
Returns:
|
115
|
-
Union[Branch, Tuple[Branch, str]]: The requested Branch object, or a tuple of the Branch object and its name if `get_name` is True.
|
116
|
-
|
117
|
-
Raises:
|
118
|
-
ValueError: If the specified branch does not exist within the session.
|
119
|
-
"""
|
120
|
-
if isinstance(branch, str):
|
121
|
-
if branch not in self.branches.keys():
|
122
|
-
raise ValueError(f'Invalid branch name {branch}. Not exist.')
|
123
|
-
else:
|
124
|
-
if get_name:
|
125
|
-
return self.branches[branch], branch
|
126
|
-
return self.branches[branch]
|
127
|
-
|
128
|
-
elif isinstance(branch, Branch) and branch in self.branches.values():
|
129
|
-
if get_name:
|
130
|
-
return branch, [key for key, value in self.branches.items() if value == branch][0]
|
131
|
-
return branch
|
132
|
-
|
133
|
-
elif branch is None:
|
134
|
-
if get_name:
|
135
|
-
return self.default_branch, self.default_branch_name
|
136
|
-
return self.default_branch
|
137
|
-
|
138
|
-
else:
|
139
|
-
raise ValueError(f'Invalid branch input {branch}.')
|
140
|
-
|
141
|
-
def change_default(self, branch: Union[str, Branch]) -> None:
|
142
|
-
"""
|
143
|
-
Changes the default branch of the session.
|
144
|
-
|
145
|
-
Args:
|
146
|
-
branch (Union[str, Branch]): The branch name or Branch object to set as the new default branch.
|
147
|
-
"""
|
148
|
-
branch_, name_ = self.get_branch(branch, get_name=True)
|
149
|
-
self.default_branch = branch_
|
150
|
-
self.default_branch_name = name_
|
151
|
-
|
152
|
-
def delete_branch(self, branch: Union[Branch, str], verbose: bool = True) -> bool:
|
153
|
-
"""
|
154
|
-
Delete a branch from the session.
|
155
|
-
|
156
|
-
Args:
|
157
|
-
branch (Union[Branch, str]): The branch object or its name to be deleted.
|
158
|
-
verbose (bool, optional): If True, prints a confirmation message.
|
159
|
-
|
160
|
-
Returns:
|
161
|
-
bool: True if the branch is successfully deleted, False otherwise.
|
162
|
-
|
163
|
-
Raises:
|
164
|
-
ValueError: If trying to delete the current default branch.
|
165
|
-
"""
|
166
|
-
_, branch_name = self.get_branch(branch, get_name=True)
|
167
|
-
|
168
|
-
if branch_name == self.default_branch_name:
|
169
|
-
raise ValueError(
|
170
|
-
f'{branch_name} is the current default branch, please switch to another branch before delete it.'
|
171
|
-
)
|
172
|
-
else:
|
173
|
-
self.branches.pop(branch_name)
|
174
|
-
# self.branch_manager.sources.pop(branch_name)
|
175
|
-
self.branch_manager.requests.pop(branch_name)
|
176
|
-
if verbose:
|
177
|
-
print(f'Branch {branch_name} is deleted.')
|
178
|
-
return True
|
179
|
-
|
180
|
-
def merge_branch(
|
181
|
-
self,
|
182
|
-
from_: Union[str, Branch],
|
183
|
-
to_: Union[str, Branch],
|
184
|
-
update: bool = True,
|
185
|
-
del_: bool = False
|
186
|
-
) -> None:
|
187
|
-
"""
|
188
|
-
Merge one branch into another within the session.
|
189
|
-
|
190
|
-
Args:
|
191
|
-
from_ (Union[str, Branch]): The branch or its name to merge from.
|
192
|
-
to_ (Union[str, Branch]): The branch or its name to merge into.
|
193
|
-
update (bool, optional): If True, updates the target branch's system message to be same as `from_`.
|
194
|
-
del_ (bool, optional): If True, deletes the 'from' branch after merging.
|
195
|
-
|
196
|
-
Raises:
|
197
|
-
ValueError: If the branch does not exist in the session.
|
198
|
-
"""
|
199
|
-
from_ = self.get_branch(branch=from_)
|
200
|
-
to_, to_name = self.get_branch(branch=to_, get_name=True)
|
201
|
-
to_.merge_branch(from_, update=update)
|
202
|
-
|
203
|
-
if del_:
|
204
|
-
if from_ == self.default_branch:
|
205
|
-
self.default_branch_name = to_name
|
206
|
-
self.default_branch = to_
|
207
|
-
self.delete_branch(from_, verbose=False)
|
208
|
-
|
209
|
-
async def chat(
|
210
|
-
self,
|
211
|
-
instruction: Union[Instruction, str],
|
212
|
-
to_: Optional[Union[Branch, str]] = None,
|
213
|
-
system: Optional[Union[System, str, Dict]] = None,
|
214
|
-
context: Optional[Any] = None,
|
215
|
-
out: bool = True,
|
216
|
-
sender: Optional[str] = None,
|
217
|
-
invoke: bool = True,
|
218
|
-
tools: Union[bool, Tool, List[Tool], str, List[str]] = False,
|
219
|
-
fallback: Optional[Callable] = None,
|
220
|
-
fallback_kwargs: Dict = {},
|
221
|
-
**kwargs
|
222
|
-
) -> None:
|
223
|
-
"""
|
224
|
-
Initiate a chat with the specified branch using an instruction.
|
225
|
-
|
226
|
-
Args:
|
227
|
-
instruction (Union[Instruction, str]): The instruction or message to send.
|
228
|
-
to_ (Optional[Union[Branch, str]], optional): The target branch or its name. Default is the main branch.
|
229
|
-
system (Optional[Union[System, str, Dict]], optional): System message or data to use.
|
230
|
-
context (Optional[Any], optional): Additional context for the chat.
|
231
|
-
out (bool, optional): If True, sends the output message.
|
232
|
-
sender (Optional[str], optional): The sender's name.
|
233
|
-
invoke (bool, optional): If True, invokes tool processing.
|
234
|
-
tools (Union[bool, Tool, List[Tool], str, List[str]], optional): Tools to be used or not used.
|
235
|
-
fallback (Optional[Callable], optional): Fallback function to call in case of an exception.
|
236
|
-
fallback_kwargs (Dict, optional): Keyword arguments for the fallback function.
|
237
|
-
**kwargs: Additional keyword arguments.
|
238
|
-
|
239
|
-
Raises:
|
240
|
-
Exception: If an exception occurs in the chat process and no fallback is provided.
|
241
|
-
"""
|
242
|
-
branch_ = self.get_branch(to_)
|
243
|
-
if fallback:
|
244
|
-
try:
|
245
|
-
return await branch_.chat(
|
246
|
-
instruction=instruction, system=system, context=context,
|
247
|
-
out=out, sender=sender, invoke=invoke, tools=tools, **kwargs
|
248
|
-
)
|
249
|
-
except:
|
250
|
-
return fallback(**fallback_kwargs)
|
251
|
-
|
252
|
-
return await branch_.chat(
|
253
|
-
instruction=instruction, system=system, context=context,
|
254
|
-
out=out, sender=sender, invoke=invoke, tools=tools, **kwargs)
|
255
|
-
|
256
|
-
async def ReAct(
|
257
|
-
self,
|
258
|
-
instruction: Union[Instruction, str],
|
259
|
-
context = None,
|
260
|
-
sender = None,
|
261
|
-
to_ = None,
|
262
|
-
system = None,
|
263
|
-
tools = None,
|
264
|
-
num_rounds: int = 1,
|
265
|
-
fallback: Optional[Callable] = None,
|
266
|
-
fallback_kwargs: Optional[Dict] = None,
|
267
|
-
out=True,
|
268
|
-
**kwargs
|
269
|
-
):
|
270
|
-
"""
|
271
|
-
Performs a sequence of reasoning and action steps in a specified or default branch.
|
272
|
-
|
273
|
-
Args:
|
274
|
-
instruction (Union[Instruction, str]): Instruction to initiate the ReAct process.
|
275
|
-
context: Additional context for reasoning and action. Defaults to None.
|
276
|
-
sender: Identifier for the sender. Defaults to None.
|
277
|
-
to_: Target branch name or object for ReAct. Defaults to the default branch.
|
278
|
-
system: System message or configuration. Defaults to None.
|
279
|
-
tools: Tools to be used for actions. Defaults to None.
|
280
|
-
num_rounds (int): Number of reasoning-action cycles. Defaults to 1.
|
281
|
-
fallback (Optional[Callable]): Fallback function in case of an error. Defaults to None.
|
282
|
-
fallback_kwargs (Optional[Dict]): Arguments for the fallback function. Defaults to None.
|
283
|
-
out (bool): If True, outputs the result of the ReAct process. Defaults to True.
|
284
|
-
**kwargs: Arbitrary keyword arguments for additional customization.
|
285
|
-
|
286
|
-
Returns:
|
287
|
-
The outcome of the ReAct process, depending on the specified branch and instructions.
|
288
|
-
"""
|
289
|
-
branch = self.get_branch(to_)
|
290
|
-
return await branch.ReAct(
|
291
|
-
instruction=instruction, context=context, sender=sender, system=system, tools=tools,
|
292
|
-
num_rounds=num_rounds, fallback=fallback, fallback_kwargs=fallback_kwargs,
|
293
|
-
out=out, **kwargs
|
294
|
-
)
|
295
|
-
|
296
|
-
async def auto_followup(
|
297
|
-
self,
|
298
|
-
instruction: Union[Instruction, str],
|
299
|
-
to_: Optional[Union[Branch, str]] = None,
|
300
|
-
num: int = 3,
|
301
|
-
tools: Union[bool, Tool, List[Tool], str, List[str], List[Dict]] = False,
|
302
|
-
fallback: Optional[Callable] = None,
|
303
|
-
fallback_kwargs: Dict = {},
|
304
|
-
**kwargs
|
305
|
-
) -> None:
|
306
|
-
"""
|
307
|
-
Automatically follow up on a chat conversation within a branch with multiple messages.
|
308
|
-
|
309
|
-
Args:
|
310
|
-
instruction (Union[Instruction, str]): The initial instruction or message to send.
|
311
|
-
to_ (Optional[Union[Branch, str]], optional): The target branch or its name. Default is the main branch.
|
312
|
-
num (int, optional): The number of follow-up messages to send.
|
313
|
-
tools (Union[bool, Tool, List[Tool], str, List[str], List[Dict]], optional): Tools to be used or not used.
|
314
|
-
fallback (Optional[Callable], optional): Fallback function to call in case of an exception.
|
315
|
-
fallback_kwargs (Dict, optional): Keyword arguments for the fallback function.
|
316
|
-
**kwargs: Additional keyword arguments.
|
317
|
-
|
318
|
-
Raises:
|
319
|
-
Exception: If an exception occurs in the auto-followup process and no fallback is provided.
|
320
|
-
"""
|
321
|
-
|
322
|
-
branch_ = self.get_branch(to_)
|
323
|
-
return await branch_.auto_followup(
|
324
|
-
instruction=instruction, num=num, tools=tools, fallback=fallback, fallback_kwargs=fallback_kwargs, **kwargs
|
325
|
-
)
|
326
|
-
|
327
|
-
def change_first_system_message(self, system: Union[System, str]) -> None:
|
328
|
-
"""
|
329
|
-
Change the system message of the current default branch.
|
330
|
-
|
331
|
-
Args:
|
332
|
-
system (Union[System, str]): The new system message or a System object.
|
333
|
-
"""
|
334
|
-
self.default_branch.change_first_system_message(system)
|
335
|
-
|
336
|
-
def collect(self, from_: Union[str, Branch, List[str], List[Branch]] = None):
|
337
|
-
"""
|
338
|
-
Collect requests from specified branches or all branches if none specified.
|
339
|
-
|
340
|
-
Args:
|
341
|
-
from_ (Union[str, Branch, List[str], List[Branch]], optional): The source branch(es) from which to collect requests.
|
342
|
-
If None, data is collected from all branches. Can be a single branch or a list of branches.
|
343
|
-
"""
|
344
|
-
if from_ is None:
|
345
|
-
for branch in self.branches.keys():
|
346
|
-
self.branch_manager.collect(branch)
|
347
|
-
else:
|
348
|
-
if not isinstance(from_, list):
|
349
|
-
from_ = [from_]
|
350
|
-
for branch in from_:
|
351
|
-
if isinstance(branch, Branch):
|
352
|
-
branch = branch.name
|
353
|
-
if isinstance(branch, str):
|
354
|
-
self.branch_manager.collect(branch)
|
355
|
-
|
356
|
-
def send(self, to_: Union[str, Branch, List[str], List[Branch]] = None):
|
357
|
-
"""
|
358
|
-
Collect requests from specified branches or all branches if none specified.
|
359
|
-
|
360
|
-
Args:
|
361
|
-
to_ (Union[str, Branch, List[str], List[Branch]], optional): The target branch(es) to which to send requests.
|
362
|
-
If None, requests are sent to all branches. Can be a single branch or a list of branches.
|
363
|
-
"""
|
364
|
-
if to_ is None:
|
365
|
-
for branch in self.branches.keys():
|
366
|
-
self.branch_manager.send(branch)
|
367
|
-
else:
|
368
|
-
if not isinstance(to_, list):
|
369
|
-
to_ = [to_]
|
370
|
-
for branch in to_:
|
371
|
-
if isinstance(branch, Branch):
|
372
|
-
branch = branch.name
|
373
|
-
if isinstance(branch, str):
|
374
|
-
self.branch_manager.send(branch)
|
375
|
-
|
376
|
-
def collect_send_all(self, receive_all=False):
|
377
|
-
"""
|
378
|
-
Collect and send requests across all branches, with an option to invoke receive_all on each branch.
|
379
|
-
|
380
|
-
Args:
|
381
|
-
receive_all (bool, optional): If True, triggers the receive_all method on each branch after sending requests.
|
382
|
-
"""
|
383
|
-
self.collect()
|
384
|
-
self.send()
|
385
|
-
if receive_all:
|
386
|
-
for branch in self.branches.values():
|
387
|
-
branch.receive_all()
|
388
|
-
|
389
|
-
def register_tools(self, tools: Union[Tool, List[Tool]]) -> None:
|
390
|
-
"""
|
391
|
-
Registers one or more tools to the current default branch.
|
392
|
-
|
393
|
-
Args:
|
394
|
-
tools (Union[Tool, List[Tool]]): The tool or list of tools to register.
|
395
|
-
"""
|
396
|
-
self.default_branch.register_tools(tools)
|
397
|
-
|
398
|
-
def delete_tool(self, name: str) -> bool:
|
399
|
-
"""
|
400
|
-
Deletes a tool from the current default branch.
|
401
|
-
|
402
|
-
Args:
|
403
|
-
name (str): The name of the tool to delete.
|
404
|
-
|
405
|
-
Returns:
|
406
|
-
bool: True if the tool is deleted, False otherwise.
|
407
|
-
"""
|
408
|
-
return self.default_branch.delete_tool(name)
|
409
|
-
|
410
|
-
@property
|
411
|
-
def describe(self) -> Dict[str, Any]:
|
412
|
-
"""
|
413
|
-
Generates a report of the current default branch.
|
414
|
-
|
415
|
-
Returns:
|
416
|
-
Dict[str, Any]: The report of the current default branch.
|
417
|
-
"""
|
418
|
-
return self.default_branch.describe
|
419
|
-
|
420
|
-
@property
|
421
|
-
def messages(self) -> pd.DataFrame:
|
422
|
-
"""
|
423
|
-
Get the DataFrame containing conversation messages.
|
424
|
-
|
425
|
-
Returns:
|
426
|
-
pd.DataFrame: A DataFrame containing conversation messages.
|
427
|
-
"""
|
428
|
-
return self.default_branch.messages
|
429
|
-
|
430
|
-
|
431
|
-
@property
|
432
|
-
def first_system(self) -> pd.Series:
|
433
|
-
"""
|
434
|
-
Get the first system message of the current default branch.
|
435
|
-
|
436
|
-
Returns:
|
437
|
-
System: The first system message of the current default branch.
|
438
|
-
"""
|
439
|
-
return self.default_branch.first_system
|
440
|
-
|
441
|
-
@property
|
442
|
-
def last_response(self) -> pd.Series:
|
443
|
-
"""
|
444
|
-
Get the last response message of the current default branch.
|
445
|
-
|
446
|
-
Returns:
|
447
|
-
str: The last response message of the current default branch.
|
448
|
-
"""
|
449
|
-
return self.default_branch.last_response
|
450
|
-
|
451
|
-
|
452
|
-
@property
|
453
|
-
def last_response_content(self) -> Dict:
|
454
|
-
"""
|
455
|
-
Get the last response content of the current default branch.
|
456
|
-
|
457
|
-
Returns:
|
458
|
-
Dict: The last response content of the current default branch.
|
459
|
-
"""
|
460
|
-
return self.default_branch.last_response_content
|
461
|
-
|
462
|
-
|
463
|
-
def _verify_default_branch(self):
|
464
|
-
if self.branches:
|
465
|
-
if self.default_branch_name not in self.branches.keys():
|
466
|
-
raise ValueError('default branch name is not in imported branches')
|
467
|
-
if self.default_branch is not self.branches[self.default_branch_name]:
|
468
|
-
raise ValueError(f'default branch does not match Branch object under {self.default_branch_name}')
|
469
|
-
|
470
|
-
if not self.branches:
|
471
|
-
self.branches[self.default_branch_name] = self.default_branch
|
472
|
-
|
473
|
-
def _setup_default_branch(
|
474
|
-
self, default_branch, default_branch_name, service, llmconfig, system, sender
|
475
|
-
):
|
476
|
-
self.default_branch = default_branch if default_branch else Branch(
|
477
|
-
name=default_branch_name, service=service, llmconfig=llmconfig
|
478
|
-
)
|
479
|
-
self.default_branch_name = default_branch_name
|
480
|
-
if system:
|
481
|
-
self.default_branch.add_message(system=system, sender=sender)
|
482
|
-
|
483
|
-
self.llmconfig = self.default_branch.llmconfig
|
484
|
-
# def add_instruction_set(self, name: str, instruction_set: InstructionSet) -> None:
|
485
|
-
# """
|
486
|
-
# Adds an instruction set to the current active branch.
|
487
|
-
#
|
488
|
-
# Args:
|
489
|
-
# name (str): The name of the instruction set.
|
490
|
-
# instruction_set (InstructionSet): The instruction set to add.
|
491
|
-
# """
|
492
|
-
# self.default_branch.add_instruction_set(name, instruction_set)
|
493
|
-
#
|
494
|
-
# def remove_instruction_set(self, name: str) -> bool:
|
495
|
-
# """
|
496
|
-
# Removes an instruction set from the current active branch.
|
497
|
-
#
|
498
|
-
# Args:
|
499
|
-
# name (str): The name of the instruction set to remove.
|
500
|
-
#
|
501
|
-
# Returns:
|
502
|
-
# bool: True if the instruction set is removed, False otherwise.
|
503
|
-
# """
|
504
|
-
# return self.default_branch.remove_instruction_set(name)
|
lionagi/datastores/__init__.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
lionagi/datastores/chroma.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
lionagi/datastores/deeplake.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
lionagi/datastores/lantern.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
lionagi/datastores/pinecone.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
lionagi/datastores/postgres.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
lionagi/datastores/qdrant.py
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
# TODO
|
lionagi/loaders/__init__.py
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
from .load_util import dir_to_path, dir_to_nodes, chunk_text, read_text, file_to_chunks
|
2
|
-
from .reader import load, ReaderType, text_reader
|
3
|
-
from .chunker import chunk, datanodes_convert, ChunkerType, text_chunker
|
4
|
-
|
5
|
-
__all__ = [
|
6
|
-
'load',
|
7
|
-
'chunk',
|
8
|
-
'datanodes_convert',
|
9
|
-
'text_reader',
|
10
|
-
'text_chunker',
|
11
|
-
'ReaderType',
|
12
|
-
'ChunkerType',
|
13
|
-
'dir_to_path',
|
14
|
-
'dir_to_nodes',
|
15
|
-
'chunk_text',
|
16
|
-
'read_text',
|
17
|
-
'file_to_chunks'
|
18
|
-
]
|