Use the choosen provider to generate text.
(self, history, verbose=True)
| 74 | return url, True |
| 75 | |
| 76 | def respond(self, history, verbose=True): |
| 77 | """ |
| 78 | Use the choosen provider to generate text. |
| 79 | """ |
| 80 | llm = self.available_providers[self.provider_name] |
| 81 | self.logger.info(f"Using provider: {self.provider_name} at {self.server_ip}") |
| 82 | try: |
| 83 | thought = llm(history, verbose) |
| 84 | except KeyboardInterrupt: |
| 85 | self.logger.warning("User interrupted the operation with Ctrl+C") |
| 86 | return "Operation interrupted by user. REQUEST_EXIT" |
| 87 | except ConnectionError as e: |
| 88 | raise ConnectionError(f"{str(e)}\nConnection to {self.server_ip} failed.") |
| 89 | except AttributeError as e: |
| 90 | raise NotImplementedError(f"{str(e)}\nIs {self.provider_name} implemented ?") |
| 91 | except ModuleNotFoundError as e: |
| 92 | raise ModuleNotFoundError( |
| 93 | f"{str(e)}\nA import related to provider {self.provider_name} was not found. Is it installed ?") |
| 94 | except Exception as e: |
| 95 | if "try again later" in str(e).lower(): |
| 96 | return f"{self.provider_name} server is overloaded. Please try again later." |
| 97 | if "refused" in str(e): |
| 98 | return f"Server {self.server_ip} seem offline. Unable to answer." |
| 99 | raise Exception(f"Provider {self.provider_name} failed: {str(e)}") from e |
| 100 | return thought |
| 101 | |
| 102 | def is_ip_online(self, address: str, timeout: int = 10) -> bool: |
| 103 | """ |
no test coverage detected