deepanything 0.1.1__py3-none-any.whl → 0.1.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  import openai
2
- from openai.types.chat import chat_completion
2
+ from openai.types.chat import chat_completion, chat_completion_chunk
3
3
  from deepanything.Stream import Stream,AsyncStream
4
4
  from deepanything import Utility
5
5
 
@@ -126,6 +126,15 @@ class AsyncDeepseekReasonClient(AsyncReasonClient):
126
126
  .on_next(lambda it : it.__anext__())
127
127
  .on_close(lambda _: stream.close()))
128
128
 
129
+
130
+ def _rebuild_chunk_for_openai(
131
+ chunk:chat_completion_chunk.ChatCompletionChunk
132
+ ) -> chat_completion_chunk.ChatCompletionChunk:
133
+ chunk.choices[0].delta.reasoning_content = chunk.choices[0].delta.content
134
+ chunk.choices[0].delta.content = None
135
+ return chunk
136
+
137
+
129
138
  class OpenaiReasonClient(ReasonClient):
130
139
  client : openai.OpenAI
131
140
  def __init__(
@@ -146,13 +155,15 @@ class OpenaiReasonClient(ReasonClient):
146
155
  model: str,
147
156
  **kwargs
148
157
  ) -> Stream:
149
- return self.client.chat.completions.create(
158
+ stream = self.client.chat.completions.create(
150
159
  messages=messages,
151
160
  model=model,
152
161
  stream=True,
153
162
  **kwargs
154
163
  )
155
164
 
165
+ return Stream(stream).on_next(lambda it: _rebuild_chunk_for_openai(it.__next__())).on_close(lambda _: stream.close())
166
+
156
167
  def reason(
157
168
  self,
158
169
  messages:list[dict],
@@ -160,13 +171,20 @@ class OpenaiReasonClient(ReasonClient):
160
171
  stream = False,
161
172
  **kwargs
162
173
  ) -> Stream or chat_completion.ChatCompletion:
163
- return self.client.chat.completions.create(
174
+ if stream:
175
+ return self.reason_stream(messages, model, **kwargs)
176
+ completion = self.client.chat.completions.create(
164
177
  messages=messages,
165
178
  model=model,
166
179
  stream=stream,
167
180
  **kwargs
168
181
  )
169
182
 
183
+ completion.choices[0].message.reasoning_content = completion.choices[0].message.content
184
+ completion.choices[0].message.content = None
185
+
186
+ return completion
187
+
170
188
  class AsyncOpenaiReasonClient(AsyncReasonClient):
171
189
  client : openai.AsyncOpenAI
172
190
  def __init__(self,base_url:str,api_key:str,**kwargs) -> None:
@@ -182,22 +200,35 @@ class AsyncOpenaiReasonClient(AsyncReasonClient):
182
200
  model: str,
183
201
  **kwargs
184
202
  ) -> AsyncStream:
185
- return await self.client.chat.completions.create(
203
+
204
+ stream = await self.client.chat.completions.create(
186
205
  messages=messages,
187
206
  model=model,
188
207
  stream=True,
189
208
  **kwargs
190
209
  )
191
210
 
211
+ async def _next(it):
212
+ return _rebuild_chunk_for_openai(await it.__anext__())
213
+
214
+ return AsyncStream(stream).on_next(lambda it: _next(it)).on_close(lambda _: stream.close())
215
+
192
216
  async def reason(self,
193
217
  messages: list[dict],
194
218
  model: str,
195
219
  stream = False,
196
220
  **kwargs
197
221
  ) -> AsyncStream or chat_completion.ChatCompletion:
198
- return await self.client.chat.completions.create(
222
+ if stream:
223
+ return await self.reason_stream(messages, model, **kwargs)
224
+
225
+ completion = await self.client.chat.completions.create(
199
226
  messages=messages,
200
227
  model=model,
201
- stream=stream,
202
228
  **kwargs
203
- )
229
+ )
230
+
231
+ completion.choices[0].message.reasoning_content = completion.choices[0].message.content
232
+ completion.choices[0].message.content = None
233
+
234
+ return completion
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: deepanything
3
- Version: 0.1.1
3
+ Version: 0.1.2
4
4
  Summary: DeepAnything is a project that provides DeepSeek R1's deep thinking capabilities for various large language models (LLMs).
5
5
  Author: Junity
6
6
  Author-email: 1727636624@qq.com
@@ -1,5 +1,5 @@
1
1
  deepanything/DeepAnythingClient.py,sha256=7yf4iteGjcDWcLKd3GD0OWv-A_d54QKVAuSHMl7-T54,15042
2
- deepanything/ReasonClient.py,sha256=8uV2wuDUmUP7ICCOfClVm5J2gBcdQJwI5F_-ftxS2Ho,5941
2
+ deepanything/ReasonClient.py,sha256=TxyXf7q3f_xASFA-blrKNHhaV38FIcFKmTnGBqU_d0U,7116
3
3
  deepanything/ResponseClient.py,sha256=oWPIQXknm7QEkG5Ysx9ejKUyISd0cHZF-HVG0fersOQ,2871
4
4
  deepanything/Stream.py,sha256=8ESR8ttjyPZ-uXPDENsVWUzaL34_GT2OZBJ0PWu7vsA,1578
5
5
  deepanything/Utility.py,sha256=HmiXU5X1eQO9iL292lfFA3dbGVjEPIM4Ayvw8Z8y2lk,6677
@@ -8,9 +8,9 @@ deepanything/__main__.py,sha256=x9LQGBlVnyML4yJ6Y3Rrt1pZ4xkLu0uZ569wKqwmpJQ,941
8
8
  deepanything/Server/Server.py,sha256=rrTVahuDe0U1U6V6IfWJ7p5c-LbOQ15T42lymbwzna4,7211
9
9
  deepanything/Server/Types.py,sha256=iN3X2QDnOyKwpuifUymeu1qg4OZ8uu4QG9ThttZFSDQ,390
10
10
  deepanything/Server/__init__.py,sha256=eIpn6NbNvEg4ST8CuuIuzPT3m_fTlmPC3sikPoPFsYo,92
11
- deepanything-0.1.1.dist-info/LICENSE,sha256=JWYd2E-mcNcSYjT5nk4ayM5kkkDq6ZlOxVcYsyqCIwU,1059
12
- deepanything-0.1.1.dist-info/METADATA,sha256=nEHVkjQXaTRgvlXh1aw0cc0nj6DgVXz_nqUtja8S_V0,5840
13
- deepanything-0.1.1.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
14
- deepanything-0.1.1.dist-info/entry_points.txt,sha256=UT4gNGx6dJsKBjZIl3VkMekh385O5WMbMidAAla6UB4,60
15
- deepanything-0.1.1.dist-info/top_level.txt,sha256=wGeRb__4jEJTclCUl0cxhgubD_Bq-QT38VIH6C4KpzY,13
16
- deepanything-0.1.1.dist-info/RECORD,,
11
+ deepanything-0.1.2.dist-info/LICENSE,sha256=JWYd2E-mcNcSYjT5nk4ayM5kkkDq6ZlOxVcYsyqCIwU,1059
12
+ deepanything-0.1.2.dist-info/METADATA,sha256=06fgJbN8qXxxsFKbwkUaBs3hJm4VDe5JO3lRAlrk0Ko,5840
13
+ deepanything-0.1.2.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92
14
+ deepanything-0.1.2.dist-info/entry_points.txt,sha256=UT4gNGx6dJsKBjZIl3VkMekh385O5WMbMidAAla6UB4,60
15
+ deepanything-0.1.2.dist-info/top_level.txt,sha256=wGeRb__4jEJTclCUl0cxhgubD_Bq-QT38VIH6C4KpzY,13
16
+ deepanything-0.1.2.dist-info/RECORD,,