Spaces:
Sleeping
Sleeping
| import os | |
| import copy | |
| from settings.base import setup_logger | |
| import google.generativeai as genai | |
| from model.prompts import chatbot_prompt | |
| logger = setup_logger() | |
| def create_model(api_key, profile): | |
| """ | |
| Create a GenerativeModel instance using the provided API key. | |
| """ | |
| generation_config = { | |
| "temperature": 0.8, | |
| "top_p": 0.95, | |
| "top_k": 64, | |
| "max_output_tokens": 8192, | |
| "response_mime_type": "text/plain", | |
| } | |
| try: | |
| genai.configure(api_key=api_key) | |
| model = genai.GenerativeModel( | |
| model_name="gemini-1.5-pro", | |
| generation_config=generation_config, | |
| system_instruction= chatbot_prompt(profile), | |
| ) | |
| logger.info("Model created successfully") | |
| return model | |
| except Exception as e: | |
| logger.error(f"Error creating model: {e}") | |
| return None | |
| def generate_content(model, message): | |
| """ | |
| Send a message to the chat session and get the response. | |
| """ | |
| try: | |
| # message = copy.deepcopy(new_message) | |
| # if type(message) == list and message: | |
| # if type(message[-1]["parts"])==list and message[-1]["parts"]: | |
| # if len(message[-1]["parts"])>1: | |
| # message[-1]["parts"][1] = f"User question: ```{message[-1]['parts'][1]}```. If above user provided image or audio or video or user question is not related to meal, nutrition, diet or food, please respond with 'Please provide input related to meal, nutrition, diet or food.'" | |
| # else: | |
| # if message[-1]["parts"][0].strip() == "": | |
| # return "Please ask a question related to meal, nutrition, diet or food." | |
| # message[-1]["parts"][0] = f"User question: ```{message[-1]['parts'][0]}```. If above user question is not related to meal, nutrition, diet or food, please respond with 'Please ask a question related to meal, nutrition, diet or food.'" | |
| response = model.generate_content(message) | |
| logger.info(f"Generated content for message") | |
| return response.text | |
| except Exception as e: | |
| logger.error(f"Error generating content for message: {e}") | |
| return f"Error generating content: {e}" | |