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}"