File size: 2,542 Bytes
33b10b6
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
56
57
58
59
60
61
62
63
64
65
66
import os
import pandas as pd

def create_Assistant(file_path, sheetname="Sheet6"):    
    # Read CSV file
    df = pd.read_excel(file_path, sheet_name=sheetname)
    
    # Set display options to show all rows and columns
    pd.set_option('display.max_rows', None)
    pd.set_option('display.max_columns', None)   # Show all columns
    
    # Print the entire DataFrame
    #print(df.head(5))
    return df

def get_consumption_context_row_num(df_str, client, user_query):
    
    completion = client.chat.completions.create(
        model="gpt-4o",  # Make sure to use an appropriate model
        messages=[
            {"role": "system", "content": f"""
            Return row number of the line which has the category and sub-category of the food product provided by the user. Output must only be an integer row number and nothing else
            {df_str}"""
            },
            {"role": "user", "content": user_query}
        ],
        temperature = 0
    )

    return completion.choices[0].message.content

def get_consumption_context(user_query, client):
    #user_query = "Kinder Joy by Kinder"
    #user_query = "Whey Protein"

    df = create_Assistant('docs/Actionable_Insight.xlsx')
    #call chatgpt to pick the correct category based on string created from every row of df => f"{Row num};{df['Category']};{df['Sub-category']};{df['Product Examples']}". Output must be the row num of the selected string
    df_str = ""
    # Iterate over the DataFrame rows
    for index, row in df.iterrows():
        #print(f"index : {index}")
        df_str += f"Row no - {index} Category - {row['Category']} Sub-category - {row['Sub-category']} Product Examples - {row['Product Examples']}\n"
    
    #client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))

    response = get_consumption_context_row_num(df_str, client, user_query)
    print(f"DEBUG - response to extract row num from {response}")
    
    row_num = int(response.split()[-1])
    #print(f"Row num is {row_num}")
    #print(df.iloc[row_num])
    row_str = f"""Category : {df.iloc[row_num, 0]}
    Sub-category : {df.iloc[row_num, 1]}
    
    Product Examples : {df.iloc[row_num, 2]}
    
    Functionality : {df.iloc[row_num, 3]}
    
    Assumed Consumption Frequency : {df.iloc[row_num, 4]}
    
    General product perception by the consumer  : {df.iloc[row_num, 5]}
    
    How to analyze the product? : {df.iloc[row_num, 6]}"""
    #Pick the selected row from df and collect column names and values of columns starting from col no. 3
    return row_str