Skip to content

Commit f47bf16

Browse files
authored
Merge pull request #185 from mindsdb/fix/add-v2-completion_stream_v2
fix: add v2 for methods to return raw results
2 parents 633527f + f3298ce commit f47bf16

File tree

3 files changed

+47
-4
lines changed

3 files changed

+47
-4
lines changed

mindsdb_sdk/__about__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
__title__ = 'mindsdb_sdk'
22
__package_name__ = 'mindsdb_sdk'
3-
__version__ = '3.4.0'
3+
__version__ = '3.4.1'
44
__description__ = "MindsDB Python SDK, provides an SDK to use a remote mindsdb instance"
55
__email__ = "jorge@mindsdb.com"
66
__author__ = 'MindsDB Inc'

mindsdb_sdk/agents.py

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ def __repr__(self):
3535

3636
class Agent:
3737
"""Represents a MindsDB agent.
38-
38+
3939
Working with agents:
4040
4141
Get an agent by name:
@@ -100,9 +100,15 @@ def __init__(
100100
def completion(self, messages: List[dict]) -> AgentCompletion:
101101
return self.collection.completion(self.name, messages)
102102

103+
def completion_v2(self, messages: List[dict]) -> AgentCompletion:
104+
return self.collection.completion_v2(self.name, messages)
105+
103106
def completion_stream(self, messages: List[dict]) -> Iterable[object]:
104107
return self.collection.completion_stream(self.name, messages)
105108

109+
def completion_stream_v2(self, messages: List[dict]) -> Iterable[object]:
110+
return self.collection.completion_stream_v2(self.name, messages)
111+
106112
def add_files(self, file_paths: List[str], description: str, knowledge_base: str = None):
107113
"""
108114
Add a list of files to the agent for retrieval.
@@ -246,6 +252,17 @@ def completion(self, name: str, messages: List[dict]) -> AgentCompletion:
246252

247253
return AgentCompletion(data['message']['content'])
248254

255+
def completion_v2(self, name: str, messages: List[dict]) -> AgentCompletion:
256+
"""
257+
Queries the agent for a completion.
258+
259+
:param name: Name of the agent
260+
:param messages: List of messages to be sent to the agent
261+
262+
:return: completion from querying the agent
263+
"""
264+
return self.api.agent_completion(self.project.name, name, messages)
265+
249266
def completion_stream(self, name, messages: List[dict]) -> Iterable[object]:
250267
"""
251268
Queries the agent for a completion and streams the response as an iterable object.
@@ -257,6 +274,17 @@ def completion_stream(self, name, messages: List[dict]) -> Iterable[object]:
257274
"""
258275
return self.api.agent_completion_stream(self.project.name, name, messages)
259276

277+
def completion_stream_v2(self, name, messages: List[dict]) -> Iterable[object]:
278+
"""
279+
Queries the agent for a completion and streams the response as an iterable object.
280+
281+
:param name: Name of the agent
282+
:param messages: List of messages to be sent to the agent
283+
284+
:return: iterable of completion chunks from querying the agent.
285+
"""
286+
return self.api.agent_completion_stream_v2(self.project.name, name, messages)
287+
260288
def _create_default_knowledge_base(self, agent: Agent, name: str) -> KnowledgeBase:
261289
# Make sure default ML engine for embeddings exists.
262290
try:

mindsdb_sdk/connectors/rest_api.py

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ def _raise_for_status(response):
3737

3838

3939
class RestAPI:
40-
def __init__(self, url=None, login=None, password=None, api_key=None, is_managed=False,
40+
def __init__(self, url=None, login=None, password=None, api_key=None, is_managed=False,
4141
cookies=None, headers=None):
4242

4343
self.url = url
@@ -289,6 +289,22 @@ def agent_completion_stream(self, project: str, name: str, messages: List[dict])
289289
# Stream objects loaded from SSE events 'data' param.
290290
yield json.loads(chunk.data)
291291

292+
@_try_relogin
293+
def agent_completion_stream_v2(self, project: str, name: str, messages: List[dict]):
294+
url = self.url + f'/api/projects/{project}/agents/{name}/completions/stream'
295+
response = self.session.post(url, json={'messages': messages}, stream=True)
296+
297+
# Check for HTTP errors before processing the stream
298+
response.raise_for_status()
299+
300+
client = SSEClient(response)
301+
302+
try:
303+
for chunk in client.events():
304+
yield chunk # Stream SSE events
305+
except Exception as e:
306+
yield e
307+
292308
@_try_relogin
293309
def create_agent(self, project: str, name: str, model: str = None, provider: str = None, skills: List[str] = None, params: dict = None):
294310
url = self.url + f'/api/projects/{project}/agents'
@@ -452,4 +468,3 @@ def knowledge_base_completion(self, project: str, knowledge_base_name, payload):
452468
)
453469
_raise_for_status(r)
454470
return r.json()
455-

0 commit comments

Comments
 (0)