lionagi 0.8.3__py3-none-any.whl → 0.8.5__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.
@@ -21,6 +21,10 @@ async def ReAct(
21
21
  branch: "Branch",
22
22
  instruct: Instruct | dict[str, Any],
23
23
  interpret: bool = False,
24
+ interpret_domain: str | None = None,
25
+ interpret_style: str | None = None,
26
+ interpret_sample: str | None = None,
27
+ interpret_kwargs: dict | None = None,
24
28
  tools: Any = None,
25
29
  tool_schemas: Any = None,
26
30
  response_format: type[BaseModel] | BaseModel = None,
@@ -43,7 +47,11 @@ async def ReAct(
43
47
  instruct.to_dict()
44
48
  if isinstance(instruct, Instruct)
45
49
  else instruct
46
- )
50
+ ),
51
+ domain=interpret_domain,
52
+ style=interpret_style,
53
+ sample_writing=interpret_sample,
54
+ **(interpret_kwargs or {}),
47
55
  )
48
56
 
49
57
  # Convert Instruct to dict if necessary
@@ -12,7 +12,6 @@ import inspect
12
12
  from collections.abc import Callable
13
13
  from typing import Any, TypeAlias
14
14
 
15
- from openai import BaseModel
16
15
  from pydantic import Field, field_validator, model_validator
17
16
  from typing_extensions import Self
18
17
 
@@ -1,5 +1,4 @@
1
1
  # forms/flow.py
2
- from typing import List
3
2
 
4
3
  from pydantic import BaseModel, ConfigDict, Field
5
4
 
@@ -1,6 +1,6 @@
1
1
  # forms/form.py
2
2
 
3
- from typing import Any, Optional
3
+ from typing import Any
4
4
 
5
5
  from pydantic import ConfigDict, Field, model_validator
6
6
  from typing_extensions import Self
@@ -61,6 +61,7 @@ class EndpointConfig(BaseModel):
61
61
  use_enum_values=True,
62
62
  )
63
63
 
64
+ name: str | None = None
64
65
  provider: str | None = None
65
66
  base_url: str | None = None
66
67
  endpoint: str
@@ -75,6 +76,7 @@ class EndpointConfig(BaseModel):
75
76
  requires_tokens: bool = False
76
77
  api_version: str | None = None
77
78
  allowed_roles: list[str] | None = None
79
+ request_options: type | None = None
78
80
 
79
81
 
80
82
  class EndPoint(ABC):
@@ -100,6 +102,11 @@ class EndPoint(ABC):
100
102
  config.update(kwargs)
101
103
  self.config = EndpointConfig(**config)
102
104
 
105
+ @property
106
+ def name(self) -> str | None:
107
+ """str | None: The name of the endpoint, if any."""
108
+ return self.config.name or self.endpoint
109
+
103
110
  @property
104
111
  def is_streamable(self) -> bool:
105
112
  """bool: Whether this endpoint supports streaming responses."""
@@ -185,6 +192,10 @@ class EndPoint(ABC):
185
192
  """bool: Indicates if this endpoint uses role-based messages."""
186
193
  return self.allowed_roles is not None
187
194
 
195
+ @property
196
+ def request_options(self) -> type | None:
197
+ return self.config.request_options
198
+
188
199
  def create_payload(self, **kwargs) -> dict:
189
200
  """Generates a request payload (and headers) for this endpoint.
190
201
 
lionagi/service/imodel.py CHANGED
@@ -5,6 +5,8 @@
5
5
  import os
6
6
  import warnings
7
7
 
8
+ from pydantic import BaseModel
9
+
8
10
  from .endpoints.base import APICalling, EndPoint
9
11
  from .endpoints.match_endpoint import match_endpoint
10
12
  from .endpoints.rate_limited_processor import RateLimitedAPIExecutor
@@ -266,6 +268,15 @@ class iModel:
266
268
  """
267
269
  return self.kwargs.get("model", "")
268
270
 
271
+ @property
272
+ def request_options(self) -> type[BaseModel] | None:
273
+ """type[BaseModel] | None: The request options model for the endpoint.
274
+
275
+ Returns:
276
+ The request options model if available; otherwise, None.
277
+ """
278
+ return self.endpoint.request_options
279
+
269
280
  def to_dict(self):
270
281
  kwargs = self.kwargs
271
282
  if "kwargs" in self.kwargs:
@@ -1,10 +1,8 @@
1
- from typing import TYPE_CHECKING, Literal
1
+ from typing import Literal
2
2
 
3
3
  from lionagi.service.endpoints.base import EndPoint
4
4
 
5
- if TYPE_CHECKING:
6
- from .models import ExaSearchRequest
7
-
5
+ from .models import ExaSearchRequest
8
6
 
9
7
  CATEGORY_OPTIONS = Literal[
10
8
  "article",
@@ -21,6 +19,7 @@ CATEGORY_OPTIONS = Literal[
21
19
  ]
22
20
 
23
21
  SEARCH_CONFIG = {
22
+ "name": "search_exa",
24
23
  "provider": "exa",
25
24
  "base_url": "https://api.exa.ai",
26
25
  "endpoint": "search",
@@ -47,6 +46,7 @@ SEARCH_CONFIG = {
47
46
  "type", # keyword, neural, auto
48
47
  "useAutoPrompt",
49
48
  },
49
+ "request_options": ExaSearchRequest,
50
50
  }
51
51
 
52
52
 
@@ -4,7 +4,10 @@
4
4
 
5
5
  from lionagi.service.endpoints.chat_completion import ChatCompletionEndPoint
6
6
 
7
+ from .models import PerplexityChatCompletionRequest
8
+
7
9
  CHAT_COMPLETION_CONFIG = {
10
+ "name": "search_perplexity",
8
11
  "provider": "perplexity",
9
12
  "base_url": "https://api.perplexity.ai",
10
13
  "endpoint": "chat/completions",
@@ -31,6 +34,7 @@ CHAT_COMPLETION_CONFIG = {
31
34
  "frequency_penalty",
32
35
  },
33
36
  "allowed_roles": ["user", "assistant"],
37
+ "request_options": PerplexityChatCompletionRequest,
34
38
  }
35
39
 
36
40
 
@@ -0,0 +1,144 @@
1
+ from enum import Enum
2
+ from typing import Any
3
+
4
+ from pydantic import BaseModel, Field, model_validator
5
+
6
+
7
+ class PerplexityRole(str, Enum):
8
+ """Roles allowed in Perplexity's messages."""
9
+
10
+ system = "system"
11
+ user = "user"
12
+ assistant = "assistant"
13
+
14
+
15
+ class PerplexityMessage(BaseModel):
16
+ """
17
+ A single message in the conversation.
18
+ `role` can be 'system', 'user', or 'assistant'.
19
+ `content` is the text for that conversation turn.
20
+ """
21
+
22
+ role: PerplexityRole = Field(
23
+ ...,
24
+ description="The role of the speaker. Must be system, user, or assistant.",
25
+ )
26
+ content: str = Field(..., description="The text content of this message.")
27
+
28
+
29
+ class PerplexityChatCompletionRequest(BaseModel):
30
+ """
31
+ Represents the request body for Perplexity's Chat Completions endpoint.
32
+ Endpoint: POST https://api.perplexity.ai/chat/completions
33
+ """
34
+
35
+ model: str = Field(
36
+ ...,
37
+ description="The model name, e.g. 'llama-3.1-sonar-small-128k-online'.",
38
+ )
39
+ messages: list[PerplexityMessage] = Field(
40
+ ..., description="A list of messages forming the conversation so far."
41
+ )
42
+
43
+ # Optional parameters
44
+ frequency_penalty: float | None = Field(
45
+ default=None,
46
+ gt=0,
47
+ description=(
48
+ "Multiplicative penalty > 0. Values > 1.0 penalize repeated tokens more strongly. "
49
+ "Value=1.0 means no penalty. Incompatible with presence_penalty."
50
+ ),
51
+ )
52
+ presence_penalty: float | None = Field(
53
+ default=None,
54
+ ge=-2.0,
55
+ le=2.0,
56
+ description=(
57
+ "Penalizes tokens that have appeared so far (range -2 to 2). "
58
+ "Positive values encourage talking about new topics. Incompatible with frequency_penalty."
59
+ ),
60
+ )
61
+ max_tokens: int | None = Field(
62
+ default=None,
63
+ description=(
64
+ "Maximum number of completion tokens. If omitted, model generates tokens until it "
65
+ "hits stop or context limit."
66
+ ),
67
+ )
68
+ return_images: bool | None = Field(
69
+ default=None,
70
+ description="If True, attempt to return images (closed beta feature).",
71
+ )
72
+ return_related_questions: bool | None = Field(
73
+ default=None,
74
+ description="If True, attempt to return related questions (closed beta feature).",
75
+ )
76
+ search_domain_filter: list[Any] | None = Field(
77
+ default=None,
78
+ description=(
79
+ "List of domains to limit or exclude in the online search. Example: ['example.com', '-twitter.com']. "
80
+ "Supports up to 3 entries. (Closed beta feature.)"
81
+ ),
82
+ )
83
+ search_recency_filter: str | None = Field(
84
+ default=None,
85
+ description=(
86
+ "Returns search results within a specified time interval: 'month', 'week', 'day', or 'hour'."
87
+ ),
88
+ )
89
+ stream: bool | None = Field(
90
+ default=None,
91
+ description=(
92
+ "If True, response is returned incrementally via Server-Sent Events (SSE)."
93
+ ),
94
+ )
95
+ temperature: float | None = Field(
96
+ default=None,
97
+ ge=0.0,
98
+ lt=2.0,
99
+ description=(
100
+ "Controls randomness of sampling, range [0, 2). Higher => more random. "
101
+ "Defaults to 0.2."
102
+ ),
103
+ )
104
+ top_k: int | None = Field(
105
+ default=None,
106
+ ge=0,
107
+ le=2048,
108
+ description=(
109
+ "Top-K filtering. 0 disables top-k filtering. If set, only the top K tokens are considered. "
110
+ "We recommend altering either top_k or top_p, but not both."
111
+ ),
112
+ )
113
+ top_p: float | None = Field(
114
+ default=None,
115
+ ge=0.0,
116
+ le=1.0,
117
+ description=(
118
+ "Nucleus sampling threshold. We recommend altering either top_k or top_p, but not both."
119
+ ),
120
+ )
121
+
122
+ @model_validator(mode="before")
123
+ def validate_penalties(cls, values):
124
+ """
125
+ Disallow using both frequency_penalty != 1.0 and presence_penalty != 0.0 at once,
126
+ since the docs say they're incompatible.
127
+ """
128
+ freq_pen = values.get("frequency_penalty", 1.0)
129
+ pres_pen = values.get("presence_penalty", 0.0)
130
+
131
+ # The doc states frequency_penalty is incompatible with presence_penalty.
132
+ # We'll enforce that if presence_penalty != 0, frequency_penalty must be 1.0
133
+ # or vice versa. Adjust logic as needed.
134
+ if pres_pen != 0.0 and freq_pen != 1.0:
135
+ raise ValueError(
136
+ "presence_penalty is incompatible with frequency_penalty. "
137
+ "Please use only one: either presence_penalty=0 with freq_pen !=1, "
138
+ "or presence_penalty!=0 with freq_pen=1."
139
+ )
140
+ return values
141
+
142
+ def to_dict(self) -> dict:
143
+ """Return a dict suitable for JSON serialization and sending to Perplexity API."""
144
+ return self.model_dump(exclude_none=True)
lionagi/session/branch.py CHANGED
@@ -45,6 +45,7 @@ from lionagi.protocols.types import (
45
45
  SenderRecipient,
46
46
  System,
47
47
  )
48
+ from lionagi.service.endpoints.base import EndPoint
48
49
  from lionagi.service.types import iModel, iModelManager
49
50
  from lionagi.settings import Settings
50
51
  from lionagi.utils import UNDEFINED, alcall, bcall, copy
@@ -345,6 +346,20 @@ class Branch(Element, Communicatable, Relational):
345
346
 
346
347
  return branch_clone
347
348
 
349
+ def register_tools(
350
+ self, tools: FuncTool | list[FuncTool], update: bool = False
351
+ ):
352
+ """
353
+ Registers one or more tools in the ActionManager.
354
+
355
+ Args:
356
+ tools (FuncTool | list[FuncTool]):
357
+ A single tool or a list of tools to register.
358
+ update (bool, optional):
359
+ If `True`, updates existing tools with the same name.
360
+ """
361
+ self._action_manager.register_tools(tools, update=update)
362
+
348
363
  # -------------------------------------------------------------------------
349
364
  # Conversion / Serialization
350
365
  # -------------------------------------------------------------------------
@@ -532,6 +547,59 @@ class Branch(Element, Communicatable, Relational):
532
547
  for key in self.mailbox.pending_ins:
533
548
  self.receive(key)
534
549
 
550
+ def connect(
551
+ self,
552
+ provider: str = None,
553
+ base_url: str = None,
554
+ endpoint: str | EndPoint = "chat",
555
+ endpoint_params: list[str] | None = None,
556
+ api_key: str = None,
557
+ queue_capacity: int = 100,
558
+ capacity_refresh_time: float = 60,
559
+ interval: float | None = None,
560
+ limit_requests: int = None,
561
+ limit_tokens: int = None,
562
+ invoke_with_endpoint: bool = False,
563
+ imodel: iModel = None,
564
+ name: str = None,
565
+ request_options: type[BaseModel] = None,
566
+ description: str = None,
567
+ update: bool = False,
568
+ ):
569
+ if not imodel:
570
+ imodel = iModel(
571
+ provider=provider,
572
+ base_url=base_url,
573
+ endpoint=endpoint,
574
+ endpoint_params=endpoint_params,
575
+ api_key=api_key,
576
+ queue_capacity=queue_capacity,
577
+ capacity_refresh_time=capacity_refresh_time,
578
+ interval=interval,
579
+ limit_requests=limit_requests,
580
+ limit_tokens=limit_tokens,
581
+ invoke_with_endpoint=invoke_with_endpoint,
582
+ )
583
+
584
+ if not update and name in self.tools:
585
+ raise ValueError(f"Tool with name '{name}' already exists.")
586
+
587
+ async def _connect(**kwargs):
588
+ """connect to an api endpoint"""
589
+ api_call = await imodel.invoke(**kwargs)
590
+ self._log_manager.log(Log.create(api_call))
591
+ return api_call.response
592
+
593
+ _connect.__name__ = name or imodel.endpoint.name
594
+ if description:
595
+ _connect.__doc__ = description
596
+
597
+ tool = Tool(
598
+ func_callable=_connect,
599
+ request_options=request_options or imodel.request_options,
600
+ )
601
+ self._action_manager.register_tools(tool, update=update)
602
+
535
603
  # -------------------------------------------------------------------------
536
604
  # Dictionary Conversion
537
605
  # -------------------------------------------------------------------------
@@ -1480,6 +1548,10 @@ class Branch(Element, Communicatable, Relational):
1480
1548
  self,
1481
1549
  instruct: Instruct | dict[str, Any],
1482
1550
  interpret: bool = False,
1551
+ interpret_domain: str | None = None,
1552
+ interpret_style: str | None = None,
1553
+ interpret_sample: str | None = None,
1554
+ interpret_kwargs: dict | None = None,
1483
1555
  tools: Any = None,
1484
1556
  tool_schemas: Any = None,
1485
1557
  response_format: type[BaseModel] = None,
@@ -1506,6 +1578,14 @@ class Branch(Element, Communicatable, Relational):
1506
1578
  interpret (bool, optional):
1507
1579
  If `True`, first interprets (`branch.interpret`) the instructions to refine them
1508
1580
  before proceeding. Defaults to `False`.
1581
+ interpret_domain (str | None, optional):
1582
+ Optional domain hint for the interpretation step.
1583
+ interpret_style (str | None, optional):
1584
+ Optional style hint for the interpretation step.
1585
+ interpret_sample (str | None, optional):
1586
+ Optional sample hint for the interpretation step.
1587
+ interpret_kwargs (dict | None, optional):
1588
+ Additional arguments for the interpretation step.
1509
1589
  tools (Any, optional):
1510
1590
  Tools to be made available for the ReAct process. If omitted or `None`,
1511
1591
  and if no `tool_schemas` are provided, it defaults to `True` (all tools).
@@ -1554,6 +1634,10 @@ class Branch(Element, Communicatable, Relational):
1554
1634
  self,
1555
1635
  instruct,
1556
1636
  interpret=interpret,
1637
+ interpret_domain=interpret_domain,
1638
+ interpret_style=interpret_style,
1639
+ interpret_sample=interpret_sample,
1640
+ interpret_kwargs=interpret_kwargs,
1557
1641
  tools=tools,
1558
1642
  tool_schemas=tool_schemas,
1559
1643
  response_format=response_format,
lionagi/version.py CHANGED
@@ -1 +1 @@
1
- __version__ = "0.8.3"
1
+ __version__ = "0.8.5"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: lionagi
3
- Version: 0.8.3
3
+ Version: 0.8.5
4
4
  Summary: An Intelligence Operating System.
5
5
  Author-email: HaiyangLi <quantocean.li@gmail.com>
6
6
  License: Apache License
@@ -4,7 +4,7 @@ lionagi/_errors.py,sha256=wNKdnVQvE_CHEstK7htrrj334RA_vbGcIds-3pUiRkc,455
4
4
  lionagi/_types.py,sha256=9g7iytvSj3UjZxD-jL06_fxuNfgZyWT3Qnp0XYp1wQU,63
5
5
  lionagi/settings.py,sha256=k9zRJXv57TveyfHO3Vr9VGiKrSwlRUUVKt5zf6v9RU4,1627
6
6
  lionagi/utils.py,sha256=QbF4E1PG-BaRcEVH3kJIYCJVNq-oRNoTxjda5k8NYW4,73177
7
- lionagi/version.py,sha256=otnwfmvJLUamPajTPUaIekiO9mA-2HPi-_h_E0N-uOQ,22
7
+ lionagi/version.py,sha256=K0kGrhh1kzVisZcoSkeuJdC06rTwxufV05Vy2hOVGoo,22
8
8
  lionagi/libs/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
9
9
  lionagi/libs/parse.py,sha256=tpEbmIRGuHhLCJlUlm6fjmqm_Z6XJLAXGNFHNuk422I,1011
10
10
  lionagi/libs/file/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
@@ -48,7 +48,7 @@ lionagi/operations/__init__.py,sha256=O7nV0tedpUe7_OlUWmCcduGPFtqtzWZcR_SIOnjLsr
48
48
  lionagi/operations/manager.py,sha256=H7UY86PIxvxKdzJY9YVsWyJcqlwLWhVyvm4sYePH_uY,565
49
49
  lionagi/operations/types.py,sha256=LIa68xcyKLVafof-DSFwKtSkneuYPFqrtGyClohYI6o,704
50
50
  lionagi/operations/utils.py,sha256=Twy6L_UFt9JqJFRYuKKTKVZIXsePidNl5ipcYcCbesI,1220
51
- lionagi/operations/ReAct/ReAct.py,sha256=07F_VhxNnOhOInEZkbY9nT2YiCcnApSibxjz2yAa7Wk,3696
51
+ lionagi/operations/ReAct/ReAct.py,sha256=pmg50Bz859dfoFW4S-fh5-2FUZKkleCVISMp4d6ye5E,4018
52
52
  lionagi/operations/ReAct/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
53
53
  lionagi/operations/ReAct/utils.py,sha256=yBsbaZm3NNb-LhdjdK3jVmxSYbp0enWzl8d09iv8oSo,1099
54
54
  lionagi/operations/_act/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
@@ -85,12 +85,12 @@ lionagi/operatives/action/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQp
85
85
  lionagi/operatives/action/function_calling.py,sha256=dFNldEuV77quaM2M4VGXPQRhh3yGCAA5WucyipRu13M,5067
86
86
  lionagi/operatives/action/manager.py,sha256=FXfWhQMSFE5qJNZPpgdz4ePvthLafZfnmak2PImCrsc,8824
87
87
  lionagi/operatives/action/request_response_model.py,sha256=mCyKub_WoEttJ_mqLhGoOoPVBQHOhr7sswy_jN6-620,3378
88
- lionagi/operatives/action/tool.py,sha256=G63P1Q9Kmq6wtK3OJy7G8lqzLo6AsmLa7Yk4fGgida4,5613
88
+ lionagi/operatives/action/tool.py,sha256=39Z2beUUdG0ngoK1r2ynmX4yIiDIyHv_dxb4X53In24,5584
89
89
  lionagi/operatives/action/utils.py,sha256=vUe7Aysuzbg16rAfe2Ttp5QUz5_L6mMedBVAWzGAHwk,4330
90
90
  lionagi/operatives/forms/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
91
91
  lionagi/operatives/forms/base.py,sha256=hitr0eKk7Yts2VfpuBGl0YxpClMJEpsy7xWodhg2AhQ,2720
92
- lionagi/operatives/forms/flow.py,sha256=JRHY_t8yZNN2p_spPvoFG1hD--2YVtAiA8h3hrK7Vt0,2556
93
- lionagi/operatives/forms/form.py,sha256=GJTE_PrlHT_bgWf-zOQaIFdEkx1CUDTzgAyRofPXoOE,2934
92
+ lionagi/operatives/forms/flow.py,sha256=Em0AIiSQT5r45wKjoq57J_wuDZ9fecKZxf6FzmmamQM,2532
93
+ lionagi/operatives/forms/form.py,sha256=j5Mf9DCblJYtN_uCgBhXzE4IkrZHWc7jyzog3tXqeW4,2924
94
94
  lionagi/operatives/forms/report.py,sha256=ZQsM5nDnmF3WdCSurDUBTMI-PEy8yTnRA_uN6tyRneA,1488
95
95
  lionagi/operatives/instruct/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
96
96
  lionagi/operatives/instruct/base.py,sha256=Vw9u3BGzjNRGcPfW1ROr2uCZcZsjrm4WU6491P6ecCI,1895
@@ -161,11 +161,11 @@ lionagi/protocols/messages/templates/instruction_message.jinja2,sha256=L-ptw5OHx
161
161
  lionagi/protocols/messages/templates/system_message.jinja2,sha256=JRKJ0aFpYfaXSFouKc_N4unZ35C3yZTOWhIrIdCB5qk,215
162
162
  lionagi/protocols/messages/templates/tool_schemas.jinja2,sha256=ozIaSDCRjIAhLyA8VM6S-YqS0w2NcctALSwx4LjDwII,126
163
163
  lionagi/service/__init__.py,sha256=DMGXIqPsmut9H5GT0ZeSzQIzYzzPwI-2gLXydpbwiV8,21
164
- lionagi/service/imodel.py,sha256=Mv5wVsmZj4hYmrvXfHVmA-fskfAKrDY0mbdmgOCAGoE,11946
164
+ lionagi/service/imodel.py,sha256=zQq9cdVPpEAPB7IscntExvtHOYA5ToiWonmD2n93pEw,12273
165
165
  lionagi/service/manager.py,sha256=MKSYBkg23s7YhZy5GEFdnpspEnhPVfFhpkpoJe20D7k,1435
166
166
  lionagi/service/types.py,sha256=v9SAn5-GTmds4Mar13Or_VFrRHCinBK99dmeDUd-QNk,486
167
167
  lionagi/service/endpoints/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
168
- lionagi/service/endpoints/base.py,sha256=RbBBQIbtNtkP1LT9U3ZrhL35SfmVIpaq-AGW8d538k4,18275
168
+ lionagi/service/endpoints/base.py,sha256=SaYobDBCdKd4398TyFPp5u3PKyMnzEbm6PsoUxVkZDA,18605
169
169
  lionagi/service/endpoints/chat_completion.py,sha256=9ltSQaKPH43WdEDW32_-f5x07I9hOU8g-T_PAG-nYsQ,2529
170
170
  lionagi/service/endpoints/match_endpoint.py,sha256=hIGYyok1y53FfI6av5NfYMygRIpDWYZbdCj0pJJfmPY,1874
171
171
  lionagi/service/endpoints/rate_limited_processor.py,sha256=umri0FofbyBSFdAQBEsviDB5K6N12LkRiXQgSOorGKg,4663
@@ -176,7 +176,7 @@ lionagi/service/providers/anthropic_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKU
176
176
  lionagi/service/providers/anthropic_/messages.py,sha256=PTZZ2VXVMRHWY84YFIzrft9gVrcH2V-NIq_Phi9_-xI,1760
177
177
  lionagi/service/providers/exa_/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
178
178
  lionagi/service/providers/exa_/models.py,sha256=263KP-JSxbxmomNrFeYjB_cebquoMOsCJeWsiKZ0mL4,5420
179
- lionagi/service/providers/exa_/search.py,sha256=Z9bOxTjPZbtI_qH4fSePYKSXhkc8N3ZFbCHdsml8YSA,1903
179
+ lionagi/service/providers/exa_/search.py,sha256=Z3pyJH8KiWiquJSJw8Rd6D7x43BwTFHb2ESsgSicCk0,1932
180
180
  lionagi/service/providers/exa_/types.py,sha256=8ODjXpFajBE9-DGqBJNS--GObwmLSDi667xS84z_AgA,139
181
181
  lionagi/service/providers/groq_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
182
182
  lionagi/service/providers/groq_/chat_completions.py,sha256=578NqQYyrIYjIemyL3bagvFGE6ear_w4S1HNlPWA5mg,1343
@@ -185,11 +185,12 @@ lionagi/service/providers/openai_/chat_completions.py,sha256=SfRcEnMTn3MD59YuZCl
185
185
  lionagi/service/providers/openrouter_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
186
186
  lionagi/service/providers/openrouter_/chat_completions.py,sha256=MRf4ZbMCgzNIL4gxUZTD-KeFe8JYDn1Fu40Jph3bCH8,1525
187
187
  lionagi/service/providers/perplexity_/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
188
- lionagi/service/providers/perplexity_/chat_completions.py,sha256=SsDbrtXwQsR4Yu2VMU43KfeS86QWI8UTNhDth5lNWNs,1055
188
+ lionagi/service/providers/perplexity_/chat_completions.py,sha256=jhE-KHWRX6yYEeKWLMCKLgK3bQzieSv2viqQWDP8q0Q,1197
189
+ lionagi/service/providers/perplexity_/models.py,sha256=gXH4XGkhZ4aFxvMSDTlHq9Rz1mhu3aTENXAtE-BIr6U,4866
189
190
  lionagi/session/__init__.py,sha256=v8vNyJVIVj8_Oz9RJdVe6ZKUQMYTgDh1VQpnr1KdLaw,112
190
- lionagi/session/branch.py,sha256=JvErd9YUuGdWyLj37rtKOteSqV0ltn9lg0R2G8GO40c,62539
191
+ lionagi/session/branch.py,sha256=JFRX_amOH5puYBIFifvXlk6YztUTi8D2Zy-eck0AFn8,65757
191
192
  lionagi/session/session.py,sha256=po6C7PnM0iu_ISHUo4PBzzQ61HFOgcsAUfPoO--eLak,8987
192
- lionagi-0.8.3.dist-info/METADATA,sha256=uWD1Rcqe1Qknq4Fcroot2pVTsFNyPxM0UrbyZZaa8NY,22819
193
- lionagi-0.8.3.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
194
- lionagi-0.8.3.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
195
- lionagi-0.8.3.dist-info/RECORD,,
193
+ lionagi-0.8.5.dist-info/METADATA,sha256=nTeNxoGDS7shH8qi3iSb03arU23BDaQ2DgB9_UJvTEQ,22819
194
+ lionagi-0.8.5.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
195
+ lionagi-0.8.5.dist-info/licenses/LICENSE,sha256=VXFWsdoN5AAknBCgFqQNgPWYx7OPp-PFEP961zGdOjc,11288
196
+ lionagi-0.8.5.dist-info/RECORD,,