Spaces:
Sleeping
Sleeping
File size: 2,279 Bytes
cd570f9 5cde316 cd570f9 0c9207d cd570f9 0c9207d cd570f9 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
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}"
|