Skip to content

Commit 762ba60

Browse files
committed
steam completion
1 parent 0922300 commit 762ba60

File tree

2 files changed

+21
-5
lines changed

2 files changed

+21
-5
lines changed

examples/base_usage.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,10 @@
7373
# call completion
7474
print(mind.completion('2+3'))
7575

76+
# stream completion
77+
for chunk in mind.completion('2+3', stream=True):
78+
print(chunk.content)
79+
7680
# --- managing datasources ---
7781

7882
# create or replace

minds/minds.py

Lines changed: 17 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from typing import List, Union
1+
from typing import List, Union, Iterable
22
from urllib.parse import urlparse, urlunparse
33

44
from openai import OpenAI
@@ -90,7 +90,15 @@ def add_datasource(self, datasource: Datasource):
9090
def del_datasource(self, datasource: Union[Datasource, str]):
9191
raise NotImplementedError
9292

93-
def completion(self, message):
93+
def completion(self, message: str, stream: bool = False) -> Union[str, Iterable[object]]:
94+
"""
95+
Call mind completion
96+
97+
:param message: input question
98+
:param stream: to enable stream mode
99+
100+
:return: string if stream mode is off or iterator of ChoiceDelta objects (by openai)
101+
"""
94102
parsed = urlparse(self.api.base_url)
95103

96104
netloc = parsed.netloc
@@ -107,14 +115,18 @@ def completion(self, message):
107115
base_url=base_url
108116
)
109117

110-
completion = openai_client.chat.completions.create(
118+
response = openai_client.chat.completions.create(
111119
model=self.name,
112120
messages=[
113121
{'role': 'user', 'content': message}
114122
],
115-
stream=False
123+
stream=stream
116124
)
117-
return completion.choices[0].message.content
125+
if stream:
126+
for chunk in response:
127+
yield chunk.choices[0].delta
128+
else:
129+
return response.choices[0].message.content
118130

119131

120132
class Minds:

0 commit comments

Comments
 (0)