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