MCPcopy
hub / github.com/zai-org/GLM-OCR / process

Method process

glmocr/ocr_client.py:258–388  ·  view source on GitHub ↗

Process a recognition request. Args: request_data: Request payload containing messages, etc. Returns: (response_dict, http_status_code)

(self, request_data: Dict)

Source from the content-addressed store, hash-verified

256 )
257
258 def process(self, request_data: Dict) -> Tuple[Dict, int]:
259 """
260 Process a recognition request.
261
262 Args:
263 request_data: Request payload containing messages, etc.
264
265 Returns:
266 (response_dict, http_status_code)
267 """
268 if self._session is None:
269 self._session = self._make_session()
270
271 # Convert request format based on API mode
272 if self.api_mode == "ollama_generate":
273 request_data = self._convert_to_ollama_generate(request_data)
274 else:
275 # Inject model field if configured (required by Ollama/MLX)
276 if self.model:
277 request_data["model"] = self.model
278
279 headers = {"Content-Type": "application/json", **self.extra_headers}
280 if self.api_key:
281 headers["Authorization"] = f"Bearer {self.api_key}"
282
283 total_attempts = int(self.retry_max_attempts) + 1
284 last_error: Optional[str] = None
285
286 for attempt in range(total_attempts):
287 try:
288 with profiler.measure("http_request"):
289 response = self._session.post(
290 self.api_url,
291 headers=headers,
292 data=json.dumps(request_data),
293 timeout=self.request_timeout,
294 verify=self.verify_ssl,
295 )
296
297 if response.status_code == 200:
298 result = response.json()
299
300 # Parse response based on API mode
301 if self.api_mode == "ollama_generate":
302 # Ollama generate format: {"response": "...", "done": true, ...}
303 # Check for error field first
304 if "error" in result:
305 error_msg = result.get("error", "Unknown error")
306 logger.error("Ollama API returned error: %s", error_msg)
307 return {"error": f"Ollama API error: {error_msg}"}, 500
308
309 # Extract response field
310 output = result.get("response")
311 if output is None:
312 logger.error(
313 "Ollama API response missing 'response' field. Response: %s",
314 str(result)[:500],
315 )

Calls 9

_make_sessionMethod · 0.95
_sleep_backoffMethod · 0.95
measureMethod · 0.80
errorMethod · 0.80
warningMethod · 0.80
debugMethod · 0.80
getMethod · 0.45