mbxai 0.6.4__py3-none-any.whl → 0.6.6__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.
mbxai/__init__.py CHANGED
@@ -2,4 +2,4 @@
2
2
  MBX AI package.
3
3
  """
4
4
 
5
- __version__ = "0.6.4"
5
+ __version__ = "0.6.6"
mbxai/mcp/server.py CHANGED
@@ -31,7 +31,7 @@ class MCPServer:
31
31
  self.app = FastAPI(
32
32
  title=self.name,
33
33
  description=self.description,
34
- version="0.6.4",
34
+ version="0.6.6",
35
35
  )
36
36
 
37
37
  # Initialize MCP server
mbxai/tools/client.py CHANGED
@@ -44,7 +44,7 @@ class ToolClient:
44
44
  functions = [tool.to_openai_function() for tool in self._tools.values()]
45
45
 
46
46
  # Make the chat request
47
- response = await self._openrouter_client.chat(
47
+ response = await self._openrouter_client.chat_completion(
48
48
  messages=messages,
49
49
  model=model,
50
50
  functions=functions,
@@ -89,7 +89,7 @@ class ToolClient:
89
89
  })
90
90
 
91
91
  # Get final response
92
- final_response = await self._openrouter_client.chat(
92
+ final_response = await self._openrouter_client.chat_completion(
93
93
  messages=messages,
94
94
  model=model,
95
95
  )
@@ -252,7 +252,6 @@ class ToolClient:
252
252
  response_format: type[T],
253
253
  *,
254
254
  model: str | None = None,
255
- stream: bool = False,
256
255
  **kwargs: Any,
257
256
  ) -> Any:
258
257
  """Chat with the model and parse the response into a Pydantic model.
@@ -261,22 +260,36 @@ class ToolClient:
261
260
  messages: The conversation messages
262
261
  response_format: The Pydantic model to parse the response into
263
262
  model: Optional model override
264
- stream: Whether to stream the response
265
263
  **kwargs: Additional parameters for the chat completion
266
264
 
267
265
  Returns:
268
266
  The parsed response from the model
269
267
  """
270
- # First use the chat function to handle any tool calls
268
+ # First use our own chat function to handle any tool calls
271
269
  response = await self.chat(
272
270
  messages=messages,
273
271
  model=model,
274
- stream=stream,
275
272
  **kwargs,
276
273
  )
277
274
 
278
- if stream:
279
- return response
275
+ if not response or not response.choices:
276
+ raise ValueError("No response received from OpenRouter")
277
+
278
+ choice = response.choices[0]
279
+ if not choice:
280
+ raise ValueError("Empty choice in response")
281
+
282
+ message = choice.message
283
+ if not message:
284
+ raise ValueError("Choice missing message")
285
+
286
+ # If we still have tool calls, something went wrong
287
+ if message.tool_calls:
288
+ raise ValueError("Unexpected tool calls in final response")
289
+
290
+ # Ensure we have content to parse
291
+ if not message.content:
292
+ raise ValueError("No content in final response to parse")
280
293
 
281
294
  # Now that we have the final response, parse it into the desired format
282
295
  try:
@@ -284,8 +297,6 @@ class ToolClient:
284
297
  messages=messages,
285
298
  response_format=response_format,
286
299
  model=model,
287
- stream=stream,
288
- tools=None, # No tools for the final parse
289
300
  **kwargs,
290
301
  )
291
302
  return final_response
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mbxai
3
- Version: 0.6.4
3
+ Version: 0.6.6
4
4
  Summary: MBX AI SDK
5
5
  Project-URL: Homepage, https://www.mibexx.de
6
6
  Project-URL: Documentation, https://www.mibexx.de
@@ -1,18 +1,18 @@
1
- mbxai/__init__.py,sha256=VUrUuLr8MZYb-vl76YFDkrPwXUdeqUgt9qpYFCWD4pU,47
1
+ mbxai/__init__.py,sha256=E7N5mx6c02zw5ZAm-EzmKVJVqQaE5_Q9uDbuHaRNipI,47
2
2
  mbxai/core.py,sha256=WMvmU9TTa7M_m-qWsUew4xH8Ul6xseCZ2iBCXJTW-Bs,196
3
3
  mbxai/mcp/__init__.py,sha256=_ek9iYdYqW5saKetj4qDci11jxesQDiHPJRpHMKkxgU,175
4
4
  mbxai/mcp/client.py,sha256=B8ZpH-uecmTCgoDw65LwwVxsFWVoX-08t5ff0hOEPXk,6011
5
5
  mbxai/mcp/example.py,sha256=oaol7AvvZnX86JWNz64KvPjab5gg1VjVN3G8eFSzuaE,2350
6
- mbxai/mcp/server.py,sha256=QFx8o8DqnH8MYMNu1mGoj-QWTRfwLXOQ9DaNNEZunv8,3462
6
+ mbxai/mcp/server.py,sha256=CAO3UOAlmBX8knZCs6_Q3FiwAa-GnPXXepuXwSYN_40,3462
7
7
  mbxai/openrouter/__init__.py,sha256=Ito9Qp_B6q-RLGAQcYyTJVWwR2YAZvNqE-HIYXxhtD8,298
8
8
  mbxai/openrouter/client.py,sha256=RO5tbF42vkcjxjvC-QFB8DGA0gQLljH3KPBn3HgZV8I,13662
9
9
  mbxai/openrouter/config.py,sha256=Ia93s-auim9Sq71eunVDbn9ET5xX2zusXpV4JBdHAzs,3251
10
10
  mbxai/openrouter/models.py,sha256=b3IjjtZAjeGOf2rLsdnCD1HacjTnS8jmv_ZXorc-KJQ,2604
11
11
  mbxai/tools/__init__.py,sha256=QUFaXhDm-UKcuAtT1rbKzhBkvyRBVokcQIOf9cxIuwc,160
12
- mbxai/tools/client.py,sha256=lRrVoaGwcnKUkwONVYXNGG9ao4vXgX-fsniPjlXWUZo,11445
12
+ mbxai/tools/client.py,sha256=XZsSK3-YNvMK_V-byov8-vtAaVVhC19MemFoQ3Laa3Q,11907
13
13
  mbxai/tools/example.py,sha256=1HgKK39zzUuwFbnp3f0ThyWVfA_8P28PZcTwaUw5K78,2232
14
14
  mbxai/tools/types.py,sha256=fo5t9UbsHGynhA88vD_ecgDqL8iLvt2E1h1ym43Rrgk,745
15
- mbxai-0.6.4.dist-info/METADATA,sha256=dz-ZLvT6BoU95BV9TcN483JJO91n9SRJpn6XVdEp2w8,4107
16
- mbxai-0.6.4.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
17
- mbxai-0.6.4.dist-info/licenses/LICENSE,sha256=hEyhc4FxwYo3NQ40yNgZ7STqwVk-1_XcTXOnAPbGJAw,1069
18
- mbxai-0.6.4.dist-info/RECORD,,
15
+ mbxai-0.6.6.dist-info/METADATA,sha256=6USMdTMlJQZNzwy13gx4svOLYwOO7fNoUwdqhM3QWM8,4107
16
+ mbxai-0.6.6.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
17
+ mbxai-0.6.6.dist-info/licenses/LICENSE,sha256=hEyhc4FxwYo3NQ40yNgZ7STqwVk-1_XcTXOnAPbGJAw,1069
18
+ mbxai-0.6.6.dist-info/RECORD,,
File without changes