ConsumeWise / api /calc_consumption_context.py
sonika1503
Add application file
33b10b6
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