(self, kwargs: Dict[str, Any])
| 51 | |
| 52 | @retry(stop=stop_after_attempt(10), wait=wait_random(min=5, max=10)) |
| 53 | def _post_request(self, kwargs: Dict[str, Any]) -> Tuple[OpenAIMessage, DebugInfo]: |
| 54 | try: |
| 55 | with self.get_client_args() as client_args: |
| 56 | logger.debug(f"getting client args: {client_args}") |
| 57 | client = openai.OpenAI( |
| 58 | api_key=client_args.get("api_key", None), |
| 59 | base_url=client_args.get("base_url", None), |
| 60 | ) |
| 61 | completion = client.chat.completions.create(**kwargs) |
| 62 | logger.debug(f"{completion}") |
| 63 | except openai.RateLimitError as e: |
| 64 | logger.warning(f"OpenAI rate limit error: {e}") |
| 65 | raise e |
| 66 | except openai.APIError as e: |
| 67 | logger.error(f"OpenAI API error: {e}") |
| 68 | raise e |
| 69 | except Exception as e: |
| 70 | logger.error(f"Unexpected error: {e}, type{e}, args{e.args}") |
| 71 | logger.error(f"Traceback: {traceback.format_exc()}") |
| 72 | raise e |
| 73 | |
| 74 | new_message = completion.choices[0].message |
| 75 | return new_message, DebugInfo( |
| 76 | info={"OpenAICompletion": completion.model_dump()} |
| 77 | ) |
no test coverage detected