Merge pull request #212 from bucolucas/feature/add-bot-status-method

Add get_bot_status to InferenceBot and OpenAICompatibleInferenceBot
This commit is contained in:
2025-06-03 14:07:34 -05:00
committed by GitHub
3 changed files with 20 additions and 4 deletions
+3 -1
View File
@@ -62,5 +62,7 @@ async def button_callback(update: Update, context: ContextTypes.DEFAULT_TYPE) ->
# Handle file selection
file_path = data.split(":")[1]
os.environ['SYSTEM_PROMPT_PATH'] = file_path
if hasattr(browse_command_bot, 'system_prompt_path'):
browse_command_bot.system_prompt_path = file_path
browse_command_bot.system_prompt = browse_command_bot.load_system_prompt()
await query.edit_message_text(f"Selected: {file_path}. System prompt updated.")
await query.edit_message_text(f"Selected: {file_path}. System prompt updated.")
+6 -1
View File
@@ -43,4 +43,9 @@ class InferenceBot(ABC):
An attribute (e.g., a dictionary) to store the processing status for users.
Example usage in subclass: self.processing_status.get(user_id)
"""
pass
pass
@abstractmethod
def get_bot_status(self):
"""Returns a human-readable message describing the model in use and the system prompt path."""
pass
+11 -2
View File
@@ -31,6 +31,7 @@ class OpenAICompatibleInferenceBot(InferenceBot):
self.allowed_function_tags = allowed_function_tags if allowed_function_tags else None
self.conversation_history = {}
self._processing_status = {}
self.system_prompt_path = system_prompt_path # Store the prompt path for status
# MODIFIED to pass arguments
self.system_prompt = self.load_system_prompt(
file_path=system_prompt_path
@@ -118,6 +119,14 @@ class OpenAICompatibleInferenceBot(InferenceBot):
logging.error(f"API call to model {self.model} failed: {e}")
raise
def get_bot_status(self):
"""
Returns a message with the currently enabled model and the system prompt path being used.
"""
model_name = self.model if hasattr(self, 'model') else None
prompt_path = self.system_prompt_path or os.getenv("SYSTEM_PROMPT_PATH") or "(default prompt in use)"
return f"Current model: {model_name}\nSystem prompt path: {prompt_path}"
async def handle_message(self, user_id, user_message):
if user_id not in self.conversation_history or not self.conversation_history[user_id]:
self.conversation_history[user_id] = []
@@ -281,7 +290,7 @@ class OpenAICompatibleInferenceBot(InferenceBot):
if function_call_arguments is None:
function_args = {}
else:
logging.error(f"Unexpected type for function_call_arguments for {function_call_name}: {type(function_call_arguments)}. Arguments: {function_call_arguments}")
logging.error(f"Unexpected type for function_call_arguments for {function_name}: {type(function_call_arguments)}. Arguments: {function_call_arguments}")
return f"Error: Invalid argument type for tool call: {type(function_call_arguments)}"
for tool in self.tools:
@@ -378,4 +387,4 @@ def main():
return
if __name__ == '__main__':
main()
main()