mbxai 0.5.18__py3-none-any.whl → 0.5.19__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.5.18"
5
+ __version__ = "0.5.19"
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.5.18",
34
+ version="0.5.19",
35
35
  )
36
36
 
37
37
  # Initialize MCP server
mbxai/tools/client.py CHANGED
@@ -147,17 +147,7 @@ class ToolClient:
147
147
  stream: bool = False,
148
148
  **kwargs: Any,
149
149
  ) -> Any:
150
- """Chat with the model, handling tool calls.
151
-
152
- Args:
153
- messages: The conversation messages
154
- model: Optional model override
155
- stream: Whether to stream the response
156
- **kwargs: Additional parameters for the chat completion
157
-
158
- Returns:
159
- The final response from the model
160
- """
150
+ """Chat with the model, handling tool calls."""
161
151
  tools = [tool.to_openai_function() for tool in self._tools.values()]
162
152
 
163
153
  if tools:
@@ -166,9 +156,6 @@ class ToolClient:
166
156
  kwargs["tool_choice"] = "auto"
167
157
 
168
158
  while True:
169
- # Log messages before sending to OpenRouter, but don't validate responses yet
170
- self._log_messages(messages, validate_responses=False)
171
-
172
159
  # Get the model's response
173
160
  response = self._client.chat_completion(
174
161
  messages=messages,
@@ -205,7 +192,8 @@ class ToolClient:
205
192
  if not message.tool_calls:
206
193
  return response
207
194
 
208
- # Handle all tool calls before getting the next model response
195
+ # Process all tool calls first
196
+ tool_responses = []
209
197
  for tool_call in message.tool_calls:
210
198
  tool = self._tools.get(tool_call.function.name)
211
199
  if not tool:
@@ -231,18 +219,25 @@ class ToolClient:
231
219
  if not isinstance(result, str):
232
220
  result = json.dumps(result)
233
221
 
234
- # Create and add the tool response immediately
222
+ # Create the tool response
235
223
  tool_response = {
236
224
  "role": "tool",
237
225
  "tool_call_id": tool_call.id,
238
226
  "content": result,
239
227
  }
240
- messages.append(tool_response)
241
- logger.info(f"Added tool response for call ID {tool_call.id}")
228
+ tool_responses.append(tool_response)
229
+ logger.info(f"Created tool response for call ID {tool_call.id}")
230
+
231
+ # Add all tool responses to the messages
232
+ messages.extend(tool_responses)
233
+ logger.info(f"Added {len(tool_responses)} tool responses to messages")
242
234
 
243
- # Now validate the message sequence after all tool calls have been processed
235
+ # Validate the message sequence
244
236
  self._validate_message_sequence(messages, validate_responses=True)
245
237
 
238
+ # Log the messages we're about to send
239
+ self._log_messages(messages, validate_responses=False)
240
+
246
241
  # Get a new response from the model with all tool results
247
242
  response = self._client.chat_completion(
248
243
  messages=messages,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mbxai
3
- Version: 0.5.18
3
+ Version: 0.5.19
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=tFcXsftXhe6lGhf_x4i-2A4VqY6oG4jt3o9rTgcfXuw,48
1
+ mbxai/__init__.py,sha256=fBHYV_6ZmWukpBBQkb6diHAP4h69-vDoHNwmywdi4G4,48
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=hEAVWIrIq758C1zm9aWGf-FiITB3LxtuxZEZ0CcjJ4s,5343
5
5
  mbxai/mcp/example.py,sha256=oaol7AvvZnX86JWNz64KvPjab5gg1VjVN3G8eFSzuaE,2350
6
- mbxai/mcp/server.py,sha256=TL2Kr8SWMLRwtIsyiFcf9JPRLmja2PU_B-FE44fpDl8,3463
6
+ mbxai/mcp/server.py,sha256=rjDCSR3IZOm5Xb-A2eMm-aMuJANSuRmq8uHmy85hjT8,3463
7
7
  mbxai/openrouter/__init__.py,sha256=Ito9Qp_B6q-RLGAQcYyTJVWwR2YAZvNqE-HIYXxhtD8,298
8
8
  mbxai/openrouter/client.py,sha256=XLRMRNRJH96Jl6_af0KkzRDdLJnixh8I3RvEEcFuXyg,10840
9
9
  mbxai/openrouter/config.py,sha256=MTX_YHsFrM7JYqovJSkEF6JzVyIdajeI5Dja2CALH58,2874
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=Y7cY_Z5sxDbSyMr1xzqME9lxLzjtwrBfyYX4jESHYDw,16958
12
+ mbxai/tools/client.py,sha256=6FWaM80OFeHR2tI6vhsUcqln8dObfglRiM36vPAyUB8,16733
13
13
  mbxai/tools/example.py,sha256=1HgKK39zzUuwFbnp3f0ThyWVfA_8P28PZcTwaUw5K78,2232
14
14
  mbxai/tools/types.py,sha256=fo5t9UbsHGynhA88vD_ecgDqL8iLvt2E1h1ym43Rrgk,745
15
- mbxai-0.5.18.dist-info/METADATA,sha256=rV2rkKpOnSc5MzngBqQ281QowFO2XeQ6GUTDOP-QFwk,4108
16
- mbxai-0.5.18.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
17
- mbxai-0.5.18.dist-info/licenses/LICENSE,sha256=hEyhc4FxwYo3NQ40yNgZ7STqwVk-1_XcTXOnAPbGJAw,1069
18
- mbxai-0.5.18.dist-info/RECORD,,
15
+ mbxai-0.5.19.dist-info/METADATA,sha256=CZyWoVf5vd8iu0_kgCDNYWypoD_MyxggF3xYe9Xy6BE,4108
16
+ mbxai-0.5.19.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
17
+ mbxai-0.5.19.dist-info/licenses/LICENSE,sha256=hEyhc4FxwYo3NQ40yNgZ7STqwVk-1_XcTXOnAPbGJAw,1069
18
+ mbxai-0.5.19.dist-info/RECORD,,
File without changes