mbxai 0.5.2__tar.gz → 0.5.3__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mbxai
3
- Version: 0.5.2
3
+ Version: 0.5.3
4
4
  Summary: MBX AI SDK
5
5
  Project-URL: Homepage, https://www.mibexx.de
6
6
  Project-URL: Documentation, https://www.mibexx.de
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "mbxai"
7
- version = "0.5.2"
7
+ version = "0.5.3"
8
8
  authors = [
9
9
  { name = "MBX AI" }
10
10
  ]
@@ -2,7 +2,7 @@ from setuptools import setup, find_packages
2
2
 
3
3
  setup(
4
4
  name="mbxai",
5
- version="0.5.2",
5
+ version="0.5.3",
6
6
  author="MBX AI",
7
7
  description="MBX AI SDK",
8
8
  long_description=open("README.md").read(),
@@ -2,4 +2,4 @@
2
2
  MBX AI package.
3
3
  """
4
4
 
5
- __version__ = "0.5.2"
5
+ __version__ = "0.5.3"
@@ -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.2",
34
+ version="0.5.3",
35
35
  )
36
36
 
37
37
  # Initialize MCP server
@@ -79,12 +79,15 @@ class OpenRouterClient:
79
79
  OpenRouterAPIError: For API errors
80
80
  OpenRouterError: For other errors
81
81
  """
82
+ error_msg = str(error)
83
+ logger.error(f"API error during {operation}: {error_msg}")
84
+
82
85
  if isinstance(error, OpenAIError):
83
- raise OpenRouterAPIError(f"API error during {operation}: {str(error)}")
84
- elif "Connection" in str(error):
85
- raise OpenRouterConnectionError(f"Connection error during {operation}: {str(error)}")
86
+ raise OpenRouterAPIError(f"API error during {operation}: {error_msg}")
87
+ elif "Connection" in error_msg:
88
+ raise OpenRouterConnectionError(f"Connection error during {operation}: {error_msg}")
86
89
  else:
87
- raise OpenRouterError(f"Error during {operation}: {str(error)}")
90
+ raise OpenRouterError(f"Error during {operation}: {error_msg}")
88
91
 
89
92
  @property
90
93
  def model(self) -> str:
@@ -137,6 +140,9 @@ class OpenRouterClient:
137
140
  kwargs.pop("parse", None) # Remove parse parameter if present
138
141
 
139
142
  logger.debug(f"Making chat completion request with model {model or self.model}")
143
+ logger.debug(f"Request messages: {messages}")
144
+ logger.debug(f"Request kwargs: {kwargs}")
145
+
140
146
  response = self._client.chat.completions.create(
141
147
  model=str(model or self.model),
142
148
  messages=messages,
@@ -147,14 +153,27 @@ class OpenRouterClient:
147
153
  # Log response structure for debugging
148
154
  logger.debug(f"Response type: {type(response)}")
149
155
  logger.debug(f"Response attributes: {dir(response)}")
156
+ logger.debug(f"Raw response: {response}")
157
+
158
+ # Handle streaming response differently
159
+ if stream:
160
+ return response
150
161
 
151
162
  # Validate response structure
152
- if not hasattr(response, 'choices') or not response.choices:
153
- logger.error("Invalid response: missing choices")
154
- raise OpenRouterError("Invalid response: missing choices")
163
+ if response is None:
164
+ logger.error("Received None response from API")
165
+ raise OpenRouterError("Received None response from API")
166
+
167
+ if not hasattr(response, 'choices'):
168
+ logger.error(f"Invalid response: missing choices attribute. Response: {response}")
169
+ raise OpenRouterError("Invalid response: missing choices attribute")
170
+
171
+ if not response.choices:
172
+ logger.error(f"Invalid response: empty choices list. Response: {response}")
173
+ raise OpenRouterError("Invalid response: empty choices list")
155
174
 
156
175
  if not hasattr(response.choices[0], 'message'):
157
- logger.error("Invalid response: missing message in first choice")
176
+ logger.error(f"Invalid response: missing message in first choice. Response: {response}")
158
177
  raise OpenRouterError("Invalid response: missing message in first choice")
159
178
 
160
179
  logger.debug(f"Response message: {response.choices[0].message}")
@@ -162,6 +181,8 @@ class OpenRouterClient:
162
181
 
163
182
  except Exception as e:
164
183
  logger.error(f"Error in chat completion: {str(e)}")
184
+ if isinstance(e, OpenRouterError):
185
+ raise
165
186
  self._handle_api_error("chat completion", e)
166
187
 
167
188
  def chat_completion_parse(
@@ -292,11 +292,11 @@ wheels = [
292
292
 
293
293
  [[package]]
294
294
  name = "httpx-sse"
295
- version = "0.5.2"
295
+ version = "0.5.3"
296
296
  source = { registry = "https://pypi.org/simple" }
297
- sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.5.2.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
297
+ sdist = { url = "https://files.pythonhosted.org/packages/4c/60/8f4281fa9bbf3c8034fd54c0e7412e66edbab6bc74c4996bd616f8d0406e/httpx-sse-0.5.3.tar.gz", hash = "sha256:1e81a3a3070ce322add1d3529ed42eb5f70817f45ed6ec915ab753f961139721", size = 12624 }
298
298
  wheels = [
299
- { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.5.2-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 },
299
+ { url = "https://files.pythonhosted.org/packages/e1/9b/a181f281f65d776426002f330c31849b86b31fc9d848db62e16f03ff739f/httpx_sse-0.5.3-py3-none-any.whl", hash = "sha256:f329af6eae57eaa2bdfd962b42524764af68075ea87370a2de920af5341e318f", size = 7819 },
300
300
  ]
301
301
 
302
302
  [[package]]
@@ -446,7 +446,7 @@ wheels = [
446
446
 
447
447
  [[package]]
448
448
  name = "mbxai"
449
- version = "0.5.2"
449
+ version = "0.5.3"
450
450
  source = { editable = "." }
451
451
  dependencies = [
452
452
  { name = "fastapi" },
@@ -980,14 +980,14 @@ wheels = [
980
980
 
981
981
  [[package]]
982
982
  name = "typing-inspection"
983
- version = "0.5.2"
983
+ version = "0.5.3"
984
984
  source = { registry = "https://pypi.org/simple" }
985
985
  dependencies = [
986
986
  { name = "typing-extensions" },
987
987
  ]
988
- sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.5.2.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
988
+ sdist = { url = "https://files.pythonhosted.org/packages/82/5c/e6082df02e215b846b4b8c0b887a64d7d08ffaba30605502639d44c06b82/typing_inspection-0.5.3.tar.gz", hash = "sha256:9765c87de36671694a67904bf2c96e395be9c6439bb6c87b5142569dcdd65122", size = 76222 }
989
989
  wheels = [
990
- { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.5.2-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 },
990
+ { url = "https://files.pythonhosted.org/packages/31/08/aa4fdfb71f7de5176385bd9e90852eaf6b5d622735020ad600f2bab54385/typing_inspection-0.5.3-py3-none-any.whl", hash = "sha256:50e72559fcd2a6367a19f7a7e610e6afcb9fac940c650290eed893d61386832f", size = 14125 },
991
991
  ]
992
992
 
993
993
  [[package]]
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes